前言
配置安全基线是网络、基础设备安全维护的基础,基线合规可以有效的防护大部分已知的攻击手段
本次介绍的整改方式均为以root权限在shell环境执行
制作脚本仅将所需命令组合成.sh即可,不做赘述
基线配置涉及多项功能的开启/关闭,切勿在已投产机器上执行,以免影响正常使用!!!
基线整改
账号口令
if grep -q '^PASS_MIN_LEN' /etc/login.defs;then sed -i 's/^PASS_MIN_LEN.*/PASS_MIN_LEN 8/g' /etc/login.defs; elseecho"PASS_MIN_LEN 8" >> /etc/login.defs; fi
if grep -q '^PASS_MAX_DAYS' /etc/login.defs;then sed -i 's/^PASS_MAX_DAYS.*/PASS_MAX_DAYS 90/g' /etc/login.defs; elseecho"PASS_MAX_DAYS 90" >> /etc/login.defs; fi
sed -i '/^password requisite/s/[[:space:]]*.credit=[^[:space:]]*//g' /etc/pam.d/system-auth && key=`echo {u,l,d,o}credit=-1` && sed -i 's/^password requisite.*/& '"$key"'/g' /etc/pam.d/system-auth
# 其中ucredit为大写字母个数,lcredit为小写个数,dcredit为数字个数,ocredit为特殊字符个数
# 设置为-1代表必须包含一至多个
for i in {listen,gdm,webservd,nobody,nobody4,noaccess};doif grep -q "$i" /etc/passwd ;thenif ! grep -q "$i":! /etc/shadow;then usermod -L $i ;fi;fi;done
认证授权
- 文件/etc/profile中umask设置为027
if grep -iq ^umask /etc/profile; then sed -i "s/^umask.*/umask 027/g" /etc/profile; else sed -i '1i\umask 027' /etc/profile ;fi
# 即默认文件权限为750,所属用户rwx,所属组rx,其他用户无权限
if grep -iq '^export TMOUT' /etc/profile; then sed -i "s/^export TMOUT.*/export TMOUT=300/g" /etc/profile; elseecho"export TMOUT=300" >> /etc/profile ;fi
if grep -iq '^PermitRootLogin' /etc/ssh/sshd_config; then sed -i "s/^PermitRootLogin.*/PermitRootLogin no/g" /etc/ssh/sshd_config; elseecho"PermitRootLogin no" >> /etc/ssh/sshd_config ;fi
日志审计
if grep -iq '^authpriv.\*' /etc/*syslog.conf; then sed -i "s/^authpriv.\*.*/authpriv.* \/var\/log\/secure/g" /etc/*syslog.conf; elseecho"authpriv.* /var/log/secure" >> /etc/*syslog.conf ;fi && service rsyslog restart
chmod 775 /var/log/mail /var/log/boot.log /var/log/secure /var/log/messages /var/log/cron /var/log/spooler /var/log/maillog 2>/dev/null
协议安全
for i in `find /etc/ -name vsftpd.conf 2>/dev/null`;doif grep -iq '^anonymous_enable'$i; then sed -i "s/^anonymous_enable.*/anonymous_enable=NO/g"$i; elseecho"anonymous_enable=NO" >> $i ;fi;done
for i in `find /etc/ -name ftpusers 2>/dev/null`;doif ! grep -iq root $i; thenecho root >> $i ;fi;done
if [ -f /etc/xinetd.d/telnet ] ;thenif grep -iq ^disable /etc/xinetd.d/telnet ; then sed -i 's/^disable.*/disable = yes/g' /etc/xinetd.d/telnet; elseecho"disable = yes" >> /etc/xinetd.d/telnet; fi; fi && service xinetd restart 2>/dev/null
其它安全
- 删除隐患风险文件(.netrc、hosts.equiv、.rhosts)
for i in .netrc hosts.equiv .rhosts; do find / -maxdepth 4 -name "$i" -exec mv {} {}.bak \; 2>/dev/null ; done;
chmod 644 /etc/group && chmod 600 /etc/shadow && chmod 644 /etc/passwd
mv /etc/issue /etc/issue.bak 2>/dev/null; mv /etc/issue.net /etc/issue.net.bak 2>/dev/null