1、检查是否设置除root之外UID为0的用户
理论依据:
任何UID为0的帐户都具有系统上的超级用户特权,只有root账号的uid才能为0
配置要求:
除root之外的其他账号UID不能为0
检查步骤
执行以下命令查看系统中uid为0的账号
#/bin/cat /etc/passwd | /bin/awk -F: '($3 == 0) { print $1 }'
合规标准
除root外无其他uid为0的账号则合规,否则不合规。。
加固方案
1、执行备份
#cp –p /etc/passwd /etc/passwd.bak
#cp –p /etc/shadow /etc/shadow.bak
#cp –p /etc/group /etc/group.bak
2、删除除root外其他uid为0的账号【删除之前应确保账号未被其他业务使用】
#userdel username
2、检查是否按用户分配账号
配置要求:
应按照不同的用户分配不同的账号,避免不同用户间共享账号,避免用户账号和设备间通信使用的账号共享。
检查步骤
1、使用如下命令查看文件/etc/login.defs,确认文件中变量UID_MIN和UID_MAX的值:
#grep -v ^# /etc/login.defs |grep "^UID_MIN"|awk '($1="UID_MIN"){print $2}'
#grep -v ^# /etc/login.defs |grep "^UID_MAX"|awk '($1="UID_MAX"){print $2}'
2、使用以下命令查看系统中是否存在用户id>=UID_MIN且<=UID_MAX的用户:
#up_uidmin=`(grep -v ^# /etc/login.defs |grep "^UID_MIN"|awk '($1="UID_MIN"){print $2}')`
#up_uidmax=`(grep -v ^# /etc/login.defs |grep "^UID_MAX"|awk '($1="UID_MAX"){print $2}')`
#echo "users="`cat /etc/passwd|awk -F: '{if( $3>='$up_uidmin' && $3<='$up_uidmax' ) {print $1":"$3}}'`
合规标准
存在用户id>=UID_MIN且<=UID_MAX的用户则合规,否则不合规。
加固方案
创建用户
#useradd username #创建账号
#passwd username #设置密码修改权限
3、检查密码重复使用次数限制
理论依据:
强迫用户不重用他们过去的5个密码就不太可能让攻击者猜出密码。请注意,这些更改只适用于在本地系统上配置的帐户。
配置要求:
对于采用静态口令认证技术的设备,应配置设备,使用户不能重复使用最近5次(含5次)内已使用的口令。
检查步骤
查看文件/etc/pam.d/system-auth,是否有配置口令重复使用次数限
合规标准
口令重复使用次数限制不小于5次则合规,否则不合规。
加固方案
1、配置文件备份
#cp -p /etc/pam.d/system-auth /etc/pam.d/system-auth.bak
2、创建文件/etc/security/opasswd用于存储旧密码,并设置权限。
#touch /etc/security/opasswd
#chown root:root /etc/security/opasswd
#chmod 600 /etc/security/opasswd
3、编辑文件/etc/pam.d/system-auth,找到类似行password sufficient pam_unix.so,在行末尾增加remember=5,中间以空格隔开.如果没有则新增。
password sufficient pam_unix.so remember=5
4、检查账户认证失败次数限制
配置要求:
对于采用静态口令认证技术的设备,应配置当用户连续认证失败次数超过6次(不含6次),锁定该用户使用的账号。
检查步骤
查看文件/etc/pam.d/system-auth,检查是否存在如下内容:
auth required pam_tally2.so deny=5 onerr=fail no_magic_root unlock_time=180
account required pam_tally2.so
合规标准
用户连续认证失败次数设置为5则合规,否则不合规。
加固方案
参考配置操作
1、执行备份
#cp -p /etc/pam.d/system-auth /etc/pam.d/system-auth_bak
2、修改策略设,编辑文件/etc/pam.d/system-auth增加如下内容:
auth required pam_tally2.so deny=5 onerr=fail no_magic_root unlock_time=180 #unlock_time单位为秒
account required pam_tally2.so #(redhat5.1以上版本支持 pam_tally2.so,其他版本使用pam_tally.so)
5、检查是否设置SSH登录前警告Banner
理论依据:
横幅被用来警告用户连接特定站点的策略。咨询你的法律部门,为你的网站提供适当的警告横幅。
配置要求:
SSH登录时显示警告信息,在登录成功前不泄漏服务器信息。
检查步骤
查看文件/etc/ssh/sshd_config,检查是否存在如下配置:banner <file_path>,且<file_path>内容不为空。
合规标准
ssh服务器未启用或者服务启用但设置了ssh banner警示信息则合规,否则不合规。
加固方案
1、编辑文件/etc/ssh/sshd_config文件,修改Banner参数的值如下(如不存在则新增):
Banner /etc/ssh_banner
2、执行如下命令创建ssh banner警示信息文件:
#touch /etc/ssh_banner
#chmod 644 /etc/ssh_banner
#echo "Authorized only. All activity will be monitored and reported" > /etc/ssh_banner
可根据实际需要修改该文件的内容。
3、重启sshd服务:
#/etc/init.d/sshd restart
6、检查日志文件权限设置
配置要求:
设备应配置权限,控制对日志文件读取、修改和删除等操作
检查步骤:
1、 查看/etc/rsyslog.conf中设置的日志存放文件,
/var/log/messages 系统日志
/var/log/maillog 邮件系统日志
/var/log/secure 安全信息,系统登陆与网络连接的信息
/var/log/dmesg 核心启动日志
/var/log/wtmp 登录记录
/var/log/cron cron(定制任务日志)日志
2、 查看日志文件的权限:
#ls -la /var/log/messages
#ls -la /var/log/dmesg
#ls -la /var/log/maillog
#ls -la /var/log/secure
#ls -la /var/log/wtmp
#ls -la /var/log/cron
合规标准:
/var/log/messages、/var/log/secure、/var/log/maillog、/var/log/cron文件权限不大于600
/var/log/dmesg文件权限不大于644
/var/log/wtmp文件权限不大于664
以上日志文件权限均满足要求则合规,否则不合规
加固方案
1、备份需要修改权限的日志文件
2、设置文件权限
#chmod 600 /var/log/messages
#chmod 644 /var/log/dmesg
#chmod 600 /var/log/maillog
#chmod 600 /var/log/secure
#chmod 664 /var/log/wtmp
#chmod 600 /var/log/cron
7、检查重要目录或文件权限设置
配置要求:
在设备权限配置能力内,根据用户的业务需要,配置其所需的最小权限。
检查步骤
使用以下命令查看如下文件的权限设置:
#ls -lL /etc/passwd 2>/dev/null
#ls -lL /etc/shadow 2>/dev/null
#ls -lL /etc/group 2>/dev/null
合规标准
1、/etc/passwd文件的权限小于等于644
2、/etc/shadow文件的权限小于等于400
3、/etc/group文件的权限小于等于644
以上条件同时满足则合规,否则不合规。
加固方案
1、赋予用户相关账号文件最小权限
#chmod 644 /etc/passwd
#chmod 400 /etc/shadow
#chmod 644 /etc/group
8、检查是否修改SNMP默认团体字
配置要求:
上如果没有必要,需要停止SNMP服务,如果确实需要使用SNMP服务,需要修改SNMP Community。。
检查步骤
1、查看snmpd进程是否存在。
#ps -ef|grep "snmpd"|grep -v "grep"
2、查看文件/etc/snmp/snmpd.conf,检查SNMP团体名配置。
合规标准
SNMP服务未开启或者修改了默认的团体名则合规,否则不合规。
参考配置操作
1、修改snmp配置文件/etc/snmp/snmpd.conf找到类似如下配置,修改默认团体名public为其他用户自己可识别的字符串。
com2sec notConfigUser default public #<notConfigUser>为连接snmp的用户名 <default>为可以连接snmp的地址范围 <public>为团体名
2、重启snmp服务
#service snmpd restart
9、检查系统是否禁用Ctrl+Alt+Delete组合键
配置要求:
禁止Ctrl+Alt+Delete,防止非法重新启动服务器。
检查步骤
查看文件/etc/init/control-alt-delete.conf,是否存在使用组合键control+alt+delete控制系统重启的配置。
exec /sbin/shutdown -r now "Control-Alt-Delete pressed"
合规标准
禁用了使用组合键Ctrl+Alt+Delete重启系统则合规,否则不合规。
加固方案
编辑文件/etc/init/control-alt-delete.conf,将如下行删除或注释:
exec /sbin/shutdown -r now "Control-Alt-Delete pressed"
10、检查root用户的path环境变量
配置要求:
root用户环境变量的安全性。
检查步骤
使用命令echo $PATH查看PATH环境变量的值,确认PATH环境变量中是否存在.或者..的路径:
.:/usr/bin:..:/usr/sbin
合规标准
$PATH环境变量中不存在.或者..的路径则合规,否则不合规。
加固方案
1、修改文件/etc/profile或/root/.bash_profile
修改环境变量$PATH,删除环境变量值包含的(.和..)的路径。
11、检查历史命令设置
配置要求:
保证bash shell保存少量的(或不保存)命令,保存较少的命令条数,减少安全隐患。
检查步骤
编辑文件/etc/profile查看是否存在如下内容:
HISTFILESIZE=5
HISTSIZE=5
合规标准
HISTFILESIZE和HISTSIZE的值小于等于5则合规,否则不合规。
加固方案
1、编辑文件/etc/profile,在文件中加入如下两行(存在则修改):
HISTFILESIZE=5 #HISTFILESIZE 定义了在 .bash_history 中保存命令的记录总数,可以理解为.bash_history文件中最多只有HISTFILESIZE行
HISTSIZE=5 #定义了 history 命令输出的记录数,即输出.bash_history文件中的最后HISTSIZE行
2、执行以下命令让配置生效
#source /etc/profile