Linux基线加固

运维安全 2017-12-03

主机安全的风险级别除了漏洞,另一个重要的参考值是安全基线的风险分值,本次介绍的主要是结合目前公司的业务实际情况制作的一份安全基线脚本,供大家进行参考。

适用环境: 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

clip_image002.jpg

登录失败暂锁机制是在 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

clip_image004.jpg

密码重复使用次数在 password 验证类型调用 pam_unix.so 链接库:

password sufficient pam_unix.so remember=5

clip_image006.jpg

设置登录超时退出机制需要在 /etc/profile 文件中添加 TMOUT 值的设置:

clip_image007.png

/etc/login.defs 文件是配置用户密码策略的,基线检查项中包括密码的时效性及默认访问权限两项。

密码时效性按照要求需满足最小长度 8 位、最大使用时间 90 天、最小使用天数 6 天、提醒时间为 30 天,也可根据实际需求自定义:

clip_image008.png

默认访问权限修改:

clip_image009.png

对重要文件目录权限的设置:

clip_image010.png

在这里遇到了一个最大的坑,在修改 /etc 目录的权限后,导致了系统无法登陆,之后查看应用日志才发现,系统启用了 nscd 服务的原因,具体原因无法确定,但是根据 nscd 服务的作用是缓存 passwd、group、hosts 三种服务加快解析,可能原因是用户登录时认证先通过 nscd 服务缓存,但是 nscd 服务进程因权限设置无法读取 /etc/group/etc/passwd 导致。

登录时提示 connect reset by perr/etc/ssh/ 下的 key 文件权限过大导致:

clip_image012.jpg

提示 No user exists for uid 0,则是 nscd 服务进程无法读取 /etc/passwd 文件的原因,关闭 nscd 服务并禁止自启动则行:

clip_image013.png

clip_image015.jpg

clip_image016.png

clip_image017.png

设置用户 umask 为 077 :

clip_image018.png

ssh 登录设置告警 banner

clip_image020.jpg

FTP 安全设置,禁止匿名登录、禁止 root 登录、删除 ftp 账户登录系统

clip_image021.png

设置重要的文件属性放篡改:

clip_image022.png

设置日志审计检查:

首先需要安装 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

clip_image024.jpg

关闭不必要的服务与端口:

ntalk、lpd、kshell、time、sendmail、klogin、printer、nfslock、echo、discard、chargen、bootps、daytime、tftp、ypbind、ident

设置 core dump

clip_image026.jpg

删除潜在危险文件 hosts.equiv 、.rhosts 、.netrc:

clip_image027.png

设置系统的内核参数:

clip_image028.png

检查修改 suid 和 sgid 权限文件:

clip_image030.jpg

加固脚本如下:

https://github.com/myh0st/scripts/blob/master/linuxsec.sh


本文由 myh0st 创作,采用 知识共享署名 3.0,可自由转载、引用,但需署名作者且注明文章出处。

楼主残忍的关闭了评论