CentOS7.X-安全加固/安全基线
本期以CentOS7.X, 7版本和6版本安全基线大同小异,主要关注日志审计规则配置文件目录及防火墙配置,加固前请对系统业务运行的服务、端口等信息进行摸查及评估,并在测试机先行测试,加固不规范,老板扔炸弹。
01
设置口令最长使用天数
/etc/login.defs中PASS_MAX_DAYS 不小于标准值90
02
设置口令更改最小间隔天数
/etc/login.defs中PASS_MIN_DAYS 不小于标准值2
03
设置口令最小长度
/etc/login.defs中PASS_MIN_LEN 不小于标准值8
04
设置口令过期提醒天数
/etc/login.defs中PASS_WARN_AGE 不小于标准值7
05
设置root用户密码口令使用天数
chage root -M 90
可通过chage -l
用户名查看用户账号密码信息
06
设置密码重复使用次数限制
编辑/etc/pam.d/system-auth
文件,只需在password sufficient
这一行加上remember=5
07
设置密码复杂度
编辑/etc/pam.d/system-auth
添加:
password requisite pam_pwquality.so retry=5 minlen=8 dcredit=-1 ucredit=-1 lcredit=-1 ocredit=-1
最低8位,至少1位数字,至少一个大写、小写、另外的字符
08
设置账户认证失败次数限制
【检查点1】:/etc/pam.d/sshd
检查是否配置SSH 方式账户认证失败次数限制
auth required pam_tally2.so deny=5 unlock_time=300 even_deny_root root_unlock_time=60
在account 行下方添加:
account required pam_tally2.so
【检查点2】:检查是否配置账户认证失败次数限制
编辑/etc/pam.d/system-auth
auth required pam_tally2.so deny=5 unlock_time=300 even_deny_root root_unlock_time=60
在account
行下方添加:
account required pam_tally2.so
09
检查SELinux是否开启
使用getenforce
命令查看SELinux是否开启,编辑/etc/selinux/config
修改SELINUX 值为enforcing
或者permissive
(建议改成这个模式,只记录不进行拦截),然后使用reboot
命令重启机器使修改生效。
10
配置cron、at的安全性
检查/etc/cron.allow
和/etc/at.allow
是否存在非root
用户,如无此文件请创建,并进行用户限制,加固前应当检查业务应用启动用户是否配置了定时任务,避免导致备份失败。
11
su安全配置
编辑su 文件(vi /etc/pam.d/su
),检查是否有以下配置:
auth required pam_wheel.so use_uid #只有wheel组能用su
auth sufficient pam_rootok.so #su需要密码
12
检查用户umask 设置
【检查点1】:/etc/csh.cshrc
【检查点2】:/etc/profile
【检查点3】:/etc/bash.bashrc
或 /etc/bashrc
设置umask
值为077
,source
相关文件,并通过命令umask
检查是否修改成功
13
检查重要文件属性设置
【检查点1】:检查/etc/gshadow
文件属性
【检查点2】:检查/etc/shadow
文件属性
【检查点3】:检查/etc/group
文件属性
【检查点4】:检查/etc/passwd
文件属性
检查命令如下:
lsattr /etc/gshadow /etc/shadow /etc/group /etc/passwd
加固命令如下:
chattr +i /etc/gshadow /etc/shadow /etc/group /etc/passwd
后续涉及更改密码及新增用户无权限时,可使用:
chattr -i /etc/gshadow ...
等命令修改文件属性
使用完毕后请将属性还原为+i
14
openssh安全配置
- 添加
/etc/ssh/sshd_config
配置Protocol 2
后重启sshd服务 - 修改
/etc/ssh/sshd_config
中port
为高位端口; - 检查SSH版本,建议升级至9.4-9.5版本,后期会专门一篇ssh升级的文章,敬请关注。
15
禁用root远程登录
修改/etc/ssh/sshd_config
文件,配置PermitRootLogin no
。重启服务,systemctl restart sshd
。
此项与第11项存在冲突,加固时请根据实际情况进行二选一,请测试好su命令后再执行此操作。
16
配置空闲会话时长
修改/etc/profile
,最最后一行添加: export TMOUT=600
并更新profile文件生效:source /etc/profile
17
检查是否限制远程登录IP 范围
【检查点1】:检查/etc/hosts.allow
配置
all:192.168.4.44:allow #允许单个IP;
sshd:192.168.1.:allow #允许192.168.1 的整个网段
【检查点2】:检查/etc/hosts.deny
配置
编辑/etc/hosts.deny
增加一行
all:all
18
检查审计日志是否保存180天
/etc/logrotate.conf
添加以下配置
/var/log/audit/*.log {
weekly
rotate 26
copytruncate
delaycompress
compress
notifempty
missingok
}
19
完善审计规则
编辑/etc/audit/rules.d/audit.rules
添加以下审计规则(此处与CentOS6.x略有不同.)
-w /etc/sudoers.d/ -p wa -k scope
-w /etc/sudoers -p wa -k scope
-w /etc/security/opasswd -p wa -k identity
-w /etc/shadow -p wa -k identity
-w /etc/gshadow -p wa -k identity
-w /etc/passwd -p wa -k identity
-w /etc/group -p wa -k identity
-a always,exit -F arch=b32 -S unlink -S unlinkat -S rename -S renameat -F auid>=1000 -F auid!=4294967295 -k delete
-a always,exit -F arch=b64 -S unlink -S unlinkat -S rename -S renameat -F auid>=1000 -F auid!=4294967295 -k delete
重启服务service auditd restart
20
检查防火墙是否开启
了解业务端口使用情况后开启防火墙并放行相关服务端口,此处举例放行SSH端口,
systemctl status firewalld
查看防火墙状态
#CentOS7、redhat7
firewall-cmd --permanent --zone=public --add-port=80/tcp #添加端口
firewall-cmd --zone=public --remove-port=80/tcp --permanent #删除端口
firewall-cmd --reload #重启防火墙
21
恶意代码防范
安装恶意代码检测工具,不具备条件的可以考虑安装ClamAV
22
检查空密码用户
cat /etc/shadow | awk -F: '($2 == "" ) { print $1}'
23
禁用或删除多余用户
此处简单举两个例子,具体情况请根据实际情况调整。
usermod -L shutdown
usermod -L halt
24
关闭不必要的服务
卸载、关闭不必要的服务:Telnet、RSH、SMB、Talk、NFS、RPC、IMAP、POP3
等服务。