为防止linux主机被恶意攻击,和受到攻击后能更快定位到源头,需要对linux主机做一些参数配置。
比如禁用root的远程登录、用户多次密码验证失败后被锁、禁止系统账号交互式登录等等。
下面是linux主机安全整改的一些简单介绍,最后会通过脚本一键整改所有项,适用linux主机版本为:Redhat 7和CentOS 7。
本次安全整改项
-  禁止root用户远程登录; 
-  设置密码复杂度(新建账号和修改密码时生效); 
-  设置密码过期时间90天; 
-  设置命令行界面超时退出(180秒); 
-  设置密码重复使用次数(5次); 
-  禁止系统账号交互式登录; 
-  设置ssh登录警告banner; 
-  禁用不必要的别名; 
-  安装配置记录用户对设备的操作的pacct工具; 
-  配置su命令使用情况记录。 
通过以下命令一键安全整改
#!/bin/bash
 source /etc/profile
 echo "---------禁止root用户远程登录----------"
 result=`grep "PermitRootLogin no" /etc/ssh/sshd_config|wc -l` ; if [ $result -eq 0 ];then
 sed -i 's/#PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config
 sed -i 's/PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config
 echo "禁止root用户远程登录已修改"
 else
 echo "禁止root用户远程登录已存在"
 fi
 echo -e "\n"
 echo "---------设置密码复杂度限制----------"
 result1=`grep "password requisite pam_cracklib.so" /etc/pam.d/system-auth|wc -l` ; if [ $result1 -eq 0 ];then
 echo "password requisite pam_cracklib.so try_first_pass retry=3 minlen=8 lcredit=-1 dcredit=-1 ocredit=-1 ucredit=-1" >> /etc/pam.d/system-auth
 echo "密码复杂度限制设置完成"
 else
 echo "密码复杂度限制已存在"
 fi
 echo -e "\n"
 echo "---------设置用户密码过期时间----------"
 result=` cat /etc/login.defs|grep PASS_MAX_DAYS|grep ^[^#]|awk '{print $2}'` ; if [ $result -gt 90 ];then
 sed -i '/PASS_MAX_DAYS/ s/99999/90/' /etc/login.defs
 echo "用户密码过期时间设置完成"
 else
 echo "用户密码过期时间已设置为90天"
 fi
 echo -e "\n"
 echo "---------设置命令行界面超时退出----------"
 result=` grep TMOUT /etc/profile |wc -l` ; if [ $result -eq 0 ];then
 cp -p /etc/profile /etc/profile_bak
 echo "export TMOUT=180">> /etc/profile
 echo "命令行界面超时退出已设置"
 else
 echo "命令行界面超时退出已存在"
 fi
 echo -e "\n"
 echo "---------设置密码重复使用次数----------"
 result=` grep remember= /etc/pam.d/system-auth|wc -l` ; if [ $result -eq 0 ];then
 sed -i 's/password sufficient pam_unix.so/& remember=5/g' /etc/pam.d/system-auth
 echo "密码重复使用次数已设置"
 else
 echo "密码重复使用次数限制已存在"
 fi
 echo -e "\n"
 echo "禁止系统账号交互式登录"
 passwd -l adm
 passwd -l daemon
 passwd -l bin
 passwd -l sys
 passwd -l lp
 passwd -l uucp
 passwd -l nuucp
 passwd -l smmsp
 echo "禁止系统账号交互式登录已设置"
 echo -e "\n"
 echo "---------ssh登录前警告banner设置----------"
 file="/etc/ssh_banner"
 if [ ! -f "$file" ]; then
 touch "$file"
 chown bin:bin /etc/ssh_banner
 chmod 644 /etc/ssh_banner
 echo "Authorized only. All activity will be monitored and reported" >> $file
 echo "ssh登录前警告banner已设置"
 else
 echo "ssh登录前警告banner设置已存在"
 fi
 echo -e "\n"
 echo "---------禁用不必要的别名----------"
 result=`cat /etc/aliases|grep ^# | grep root |wc -l` ; if [ $result -le 9 ];then
 sed -i '/games/ s/^/#/g' /etc/aliases
 sed -i '/ingres/ s/^/#/g' /etc/aliases
 sed -i '/system/ s/^/#/g' /etc/aliases
 sed -i '/toor/ s/^/#/g' /etc/aliases
 sed -i '/uucp/ s/^/#/g' /etc/aliases
 sed -i '/manager/ s/^/#/g' /etc/aliases
 sed -i '/operator/ s/^/#/g' /etc/aliases
 sed -i '/decode/ s/^/#/g' /etc/aliases
 sed -i '/marc/ s/^/#/g' /etc/aliases
 sed -i '/dumper/ s/^/#/g' /etc/aliases
 echo "禁用不必要的别名已完成"
 else
 echo "禁用不必要的别名已存在"
 fi
 echo -e "\n"
 echo "---------配置pacct工具----------"
 file="/var/log/pacct"
 if [ ! -f "$file" ]; then
 yum install psacct
 touch /var/log/pacct
 accton /var/log/pacct
 echo "配置pacct工具已完成"
 else
 echo "配置pacct工具已存在"
 fi
 echo "---------配置记录su命令使用情况----------"
 result=`grep "authpriv.* /var/log/secure" /etc/rsyslog.conf|wc -l` ; if [ $result -eq 0 ];then
 echo "authpriv.* /var/log/secure" >> /etc/rsyslog.conf
 echo "配置记录su命令使用情况已完成"
 else
 echo "记录su命令使用情况已存在"
 fi