主机安全的风险级别除了漏洞,另一个重要的参考值是安全基线的风险分值,本次介绍的主要是结合目前公司的业务实际情况制作的一份安全基线脚本,供大家进行参考。
适用环境: RedHat 系统 Linux
注意:在配置系统基线测试之前,虚拟机一定要提前制作快照,配置测试期间尽量不要退出登录状态,以便出现差错的时候能够及时回退。
基线配置内容:
/etc/pam.d/system-auth
是用户使用 pam 认证模块的登录策略配置文件,配置用户密码的复杂度、登录失败暂锁、重复使用密码次数等都是配置此文件。
密码复杂度是在 password 验证类型中调用 pam_cracklib.so 动态链接库:
password required pam_cracklib.so try_first_pass minlen=8 ucredit=-1 lcredit=-1 ocredit=-1 dcredit=-1 retry=3 difok=5
登录失败暂锁机制是在 auth 和 account 验证类型中调用 pam_tally.so 动态链接库,此外,针对远程登录的设置可在 /etc/pam.d/sshd
配置文件中做同样的配置:
auth required pam_tally.so deny=5unlock_time=600 even_deny_root root_unlock_time=600
account required pam_tally.so
密码重复使用次数在 password 验证类型调用 pam_unix.so 链接库:
password sufficient pam_unix.so remember=5
设置登录超时退出机制需要在 /etc/profile
文件中添加 TMOUT 值的设置:
/etc/login.defs
文件是配置用户密码策略的,基线检查项中包括密码的时效性及默认访问权限两项。
密码时效性按照要求需满足最小长度 8 位、最大使用时间 90 天、最小使用天数 6 天、提醒时间为 30 天,也可根据实际需求自定义:
默认访问权限修改:
对重要文件目录权限的设置:
在这里遇到了一个最大的坑,在修改 /etc
目录的权限后,导致了系统无法登陆,之后查看应用日志才发现,系统启用了 nscd 服务的原因,具体原因无法确定,但是根据 nscd 服务的作用是缓存 passwd、group、hosts 三种服务加快解析,可能原因是用户登录时认证先通过 nscd 服务缓存,但是 nscd 服务进程因权限设置无法读取 /etc/group
和 /etc/passwd
导致。
登录时提示 connect reset by perr
是 /etc/ssh/
下的 key 文件权限过大导致:
提示 No user exists for uid 0
,则是 nscd 服务进程无法读取 /etc/passwd
文件的原因,关闭 nscd 服务并禁止自启动则行:
设置用户 umask 为 077 :
ssh 登录设置告警 banner
FTP 安全设置,禁止匿名登录、禁止 root 登录、删除 ftp 账户登录系统
设置重要的文件属性放篡改:
设置日志审计检查:
首先需要安装 syslog 或者 rsyslog 或者 syslog-ng 三个服务中的一个,然后需要保证创建了 /var/log/cron
、/var/adm/messages
文件。
在 /etc/rsyslog.conf
或 /etc/syslog.conf
配置文件中添加:
echo -e "cron.* /var/log/cron" >>/etc/rsyslog.conf
echo -e"*.err;kern.debug;daemon.notice /var/adm/messages" >> /etc/rsyslog.conf
echo -e ". @192.168.0.1">>/etc/rsyslog.conf # 192.168.0.1 替换为远程日志服务器 ip
在 /etc/syslog-ng/syslog-ng.conf
配置文件中添加:
echo -e "filter f_cron {facility(cron); }; " >> /etc/syslog-ng/syslog-ng.conf
echo -e "destination cron {file("/var/log/cron"); }; ">>/etc/syslog-ng/syslog-ng.conf
echo -e "log { source(src);filter(f_cron); destination(cron); }; " >>/etc/syslog-ng/syslog-ng.conf
echo -e "filter f_msgs { level(err) orfacility(kern) and level(debug) orfacility(daemon) and level(notice); }; ">>/etc/syslog-ng/syslog-ng.conf
echo -e "destination msgs {file("/var/adm/messages"); }; ">>/etc/syslog-ng/syslog-ng.conf
echo -e "log { source(src);filter(f_msgs); destination(msgs); }; ">>/etc/syslog-ng/syslog-ng.conf
echo -e "destination logserver {udp("192.168.0.1" port(514)); }; ">>/etc/syslog-ng/syslog-ng.conf
echo -e "log { source(src);destination(logserver); }; ">>/etc/syslog-ng/syslog-ng.conf
禁止 wheel 组以外的用户 su 为 root ,在 /etc/pam.d/su
文件内开头添加:
auth sufficient pam_rootok.so
auth required pam_wheel.so group=wheel
关闭不必要的服务与端口:
ntalk、lpd、kshell、time、sendmail、klogin、printer、nfslock、echo、discard、chargen、bootps、daytime、tftp、ypbind、ident
设置 core dump
删除潜在危险文件 hosts.equiv 、.rhosts 、.netrc:
设置系统的内核参数:
检查修改 suid 和 sgid 权限文件:
加固脚本如下:
楼主残忍的关闭了评论