CentOS7.X-安全加固
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安全配置
1. 添加/etc/ssh/sshd_config配置Protocol 2 后重启sshd服务
2. 修改/etc/ssh/sshd_config中 port为高位端口;
3. 检查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 查看防火墙状态
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等服务。