CentOS7.X-安全加固/安全基线

CentOS7.X-安全加固

Posted by zhmingyong on April 19, 2024

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值为077source相关文件,并通过命令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_configport为高位端口;
  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  查看防火墙状态

#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等服务。