Linux 基线检查,安全加固脚本

#!/bin/bash
# Author:韩伟
# Date: 2019-12-29
# 实现对用户密码策略的设定,如密码最长有效期等
date=`date +%Y-%m-%d`
read -p "是否设置密码策略[y/n]:" Y
if [ "$Y" == "y" ];then
	read -p  "设置密码最多可多少天不修改:" A
	read -p  "设置密码修改之间最小的天数:" B
	read -p  "设置密码最短的长度:" C
	read -p  "设置密码失效前多少天通知用户:" D
	cp /etc/login.defs /etc/login.defs.${date}
	sed -i '/^PASS_MAX_DAYS/c\PASS_MAX_DAYS   '$A'' /etc/login.defs
	sed -i '/^PASS_MIN_DAYS/c\PASS_MIN_DAYS   '$B'' /etc/login.defs
	sed -i '/^PASS_MIN_LEN/c\PASS_MIN_LEN     '$C'' /etc/login.defs
	sed -i '/^PASS_WARN_AGE/c\PASS_WARN_AGE   '$D'' /etc/login.defs
else
	break
fi
echo "已设置好密码策略......"

read -p "是否设置密码强度[y/n]:" Y
if [ "$Y" == "y" ];then
	read -p "定义新密码中必须要有几个字符和旧密码不同:" AA
	read -p "设置新密码的最小长度:" BB
	read -p "设定新密码中可以包含的大写字母的最大数目。-1 至少一个:" CC
	read -p "设定新密码中可以包含的小写字母的最大数目-1 至少一个:" DD
	read -p "设定新密码中可以包含的数字的最大数目-1 至少一个: " EE
	cp /etc/pam.d/system-auth /etc/pam.d/system-auth.${date}
	sed -i '/pam_pwquality.so/c\password    requisite     pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type=  difok='$AA' minlen='$BB' ucredit='$CC' lcredit='$DD' dcredit='$EE'' /etc/pam.d/system-auth
else
	break
fi
echo "已设置密码强度"

# 对用户登录输入错误密码次数做限制
n=`cat /etc/pam.d/sshd | grep "auth required pam_tally2.so "|wc -l`
if [ $n -gt 0 ];then
echo "已经设置了错误密码限制,请核实"
fi
read -p "是否设置错误密码登录限制[y/n]: " Y
if [ "$Y" == "y" ];then
	read -p  "请输入限制次数: "  num
	read -p "请输入锁定时间(s):"  time
	echo $num $time
	cp /etc/pam.d/sshd /etc/pam.d/sshd.${date}
	sed -i '/%PAM-1.0/a\auth required pam_tally2.so deny='${num}' unlock_time='$time' even_deny_root root_unlock_time='$time'' /etc/pam.d/sshd
	sed -n '2,6p' /etc/pam.d/sshd
else
	break
fi

echo "限制次数设定为'$num' 锁定时间 '$time' "
##设置历史命令保存条数和账户超时时间
read -p "设置历史命令保存条数和账户超时时间[y/n]:" Y
if [ "$Y" == "y" ];then
	read -p "设置历史命令保存条数:" E
	read -p "设置账户自动注销时间:" F
	cp /etc/profile /etc/profile.${date}
	sed -i '/^HISTSIZE/c\HISTSIZE='$E'' /etc/profile
	sed -i '/^HISTSIZE/a\TMOUT='$F'' /etc/profile
else
	break
fi
echo "设置历史命令保存条数为'$E'   账户超时时间为'$F'"

##设置只有指定用户组才能使用su命令切换到root用户
read -p " 设置只有指定用户组才能使用su命令切换到root用户 [y/n]:" Y
if [ "$Y" == "y" ];then
	cp /etc/pam.d/su /etc/pam.d/su.${date}
	sed -i '/pam_wheel.so use_uid/c\auth            required        pam_wheel.so use_uid ' /etc/pam.d/su
	n=`cat /etc/login.defs | grep SU_WHEEL_ONLY | wc -l`
	if [ $n -eq 0 ];then
	echo SU_WHEEL_ONLY yes >> /etc/login.defs
	fi
else
	break
fi
# 对系统中的用户做检查,加固系统
echo "系统中有登录权限的用户有:"
awk -F: '($7=="/bin/bash"){print $1}' /etc/passwd
echo "********************************************"
echo "系统中UID=0的用户有:"
awk -F: '($3=="0"){print $1}' /etc/passwd
echo "********************************************"
N=`awk -F: '($2==""){print $1}' /etc/shadow|wc -l`
echo "系统中空密码用户有:$N"
if [ $N -eq 0 ];then
 echo "恭喜你,系统中无空密码用户!!"
 echo "********************************************"
else
 i=1
 while [ $N -gt 0 ]
 do
    None=`awk -F: '($2==""){print $1}' /etc/shadow|awk 'NR=='$i'{print}'`
    echo "------------------------"
    echo $None
    echo "必须为空用户设置密码!!"
    passwd $None
    let N--
 done
 M=`awk -F: '($2==""){print $1}' /etc/shadow|wc -l`
 if [ $M -eq 0 ];then
  echo "恭喜,系统中已经没有空密码用户了!"
 else
echo "系统中还存在空密码用户:$M"
 fi
fi
##对重要的文件进行锁定,即使ROOT用户也无法删除
echo "对重要文件锁定:/etc/passwd /etc/shadow /etc/gshadow"
read -p "警告:此脚本运行后将无法添加删除用户和组!!确定输入Y,取消输入N;Y/N:" i
case $i in
      [Y,y])
            chattr +i /etc/passwd
            chattr +i /etc/shadow
            chattr +i /etc/group
            chattr +i /etc/gshadow
            echo "锁定成功!"
;;
      [N,n])
            chattr -i /etc/passwd
            chattr -i /etc/shadow
            chattr -i /etc/group
            chattr -i /etc/gshadow
            echo "取消锁定成功!!"
;;
       *)
            echo "请输入Y/y or  N/n"
esac
  • 1
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Linux基线加固脚本是一种自动化工具,用于提高Linux系统的安全性和保护系统免受潜在威胁。它可以通过执行一系列的安全策略和配置更改来减少系统的攻击面和脆弱性。 基线加固脚本的作用包括以下几个方面: 1. 安全策略:脚本检查并配置系统的安全策略,如密码策略、访问控制等。它可以通过强制密码复杂度要求、禁止root用户远程登录等措施来降低系统被攻击的风险。 2. 系统配置:脚本会自动检测和修改系统配置文件,以使系统达到更安全的状态。例如,通过禁用不必要的服务、限制系统资源访问、配置审计和日志记录等措施来提高系统的可靠性。 3. 漏洞修补:脚本会检测系统中可能存在的软件漏洞,并提供程序包更新和安全补丁的自动安装。这可以帮助系统保持最新的安全补丁,阻止潜在攻击者利用已知的漏洞进入系统。 4. 安全审计:脚本会执行各种安全检查和扫描,以识别可能存在的安全风险和脆弱性。它可以检查文件和目录权限、网络配置、用户和组设置等,有助于发现和解决系统中的安全问题。 基线加固脚本的优势在于它能够自动执行复杂的安全配置和漏洞修补任务,减少了管理员的工作量和出错的可能性。它可以帮助管理员提高系统的安全性,保护系统和数据免受未经授权的访问和攻击。但是,脚本也需要经常更新和维护,以适应不断变化的安全威胁和漏洞情况。同时,管理员应该仔细选择和评估脚本的可靠性和安全性,以确保它不会影响系统的正常运行和稳定性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值