通用安全基线配置规范 🔐
版本:1.0
适用范围:所有生产服务器(RHEL 9.x+ 及兼容发行版,例如 openEuler、Anolis OS、Rocky Linux、AlmaLinux 等)
1. 核心原则
- 最小化:仅安装和启用业务必需的服务与端口
- 默认拒绝:所有访问控制默认禁止,显式允许
- 强制审计:关键文件、命令、登录行为全部留痕
- 纵深防御:内核参数 + SELinux + 防火墙 + 服务加固多层叠加
- 定期验证:上线前、变更后、每季度执行合规扫描
2. 系统级安全基线
2.1 最小化安装与包清理
生产服务器推荐使用 Minimal Install 模式。
移除高危或非必需软件包(执行前确认业务不依赖):
dnf -y remove \
telnet ftp rsh tftp ypbind xinetd \
avahi cups nfs-utils samba
禁用不必要服务:
systemctl disable --now \
avahi-daemon cups postfix
2.2 SELinux(必须 enforcing 模式)
- 严禁设置为 permissive 或 disabled
- 检查命令:
getenforce # 必须返回 Enforcing
sestatus | grep -i "current mode" # Current mode: enforcing
- 常见修复(文件上下文错误导致的服务启动失败):
restorecon -R /var/www /opt/app /opt/logs
- 如需临时允许某操作(仅调试用):
setenforce 0 # 临时关闭,生产严禁
setenforce 1 # 恢复
2.3 防火墙基线(推荐 firewalld)
- 默认策略:drop
- 只开放必要端口(示例:典型 Web + SSH 服务器)
firewall-cmd --permanent --zone=public --add-service=http
firewall-cmd --permanent --zone=public --add-service=https
firewall-cmd --permanent --zone=public --add-port=2222/tcp # SSH 改端口后开放
firewall-cmd --permanent --remove-service=ssh # 移除默认 22 端口
firewall-cmd --reload
firewall-cmd --list-all
- 检查开放端口:
ss -tuln | grep -v "127.0.0.1"
2.4 SSH 服务加固(/etc/ssh/sshd_config)
核心配置(建议全部覆盖):
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
Port 2222 # 强烈建议修改默认 22 端口
MaxAuthTries 3
LoginGraceTime 30
ClientAliveInterval 300
ClientAliveCountMax 0
AllowUsers opsuser@10.0.0.0/24 # 可选:限制来源 IP
应用变更:
sshd -t # 检查语法
systemctl restart sshd
2.5 密码与账户策略
编辑 /etc/security/pwquality.conf:
minlen = 12
dcredit = -1
ucredit = -1
lcredit = -1
ocredit = -1
maxrepeat = 3
maxclassrepeat = 3
编辑 /etc/login.defs:
PASS_MAX_DAYS 90
PASS_MIN_DAYS 7
PASS_WARN_AGE 7
锁定无用账户:
passwd -l games news uucp gopher ftp
2.6 关键 sysctl 安全参数(/etc/sysctl.d/99-security.conf)
# 网络安全
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.ip_forward = 0
net.ipv4.tcp_syncookies = 1
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1
# 信息泄露防护
kernel.kptr_restrict = 2
kernel.dmesg_restrict = 1
kernel.randomize_va_space = 2
fs.protected_hardlinks = 1
fs.protected_symlinks = 1
应用:
sysctl --system
2.7 审计基线(auditd)
启用并添加常用规则(/etc/audit/rules.d/audit.rules):
-a always,exit -F arch=b64 -S execve -k process_execution
-w /etc/passwd -p wa -k identity
-w /etc/shadow -p wa -k identity
-w /etc/group -p wa -k identity
-w /etc/gshadow -p wa -k identity
-w /etc/ssh/sshd_config -p wa -k ssh_config
-w /bin/su -p x -k privileged
重启 auditd:
systemctl restart auditd
3. 合规检查与扫描
推荐工具:
- lynis(快速扫描)
- OpenSCAP(等保对标)
快速扫描示例:
dnf install lynis -y
lynis audit system
或使用 OpenSCAP:
oscap xccdf eval --profile xccdf_org.ssgproject.content_profile_standard \
--results results.xml \
/usr/share/xml/scap/ssg/content/ssg-rhel9-ds.xml
4. 检查清单(上线/变更必验)
- SELinux = enforcing
- firewalld 默认 drop,只开放业务端口
- SSH:禁用 root + 密码认证 + 改端口
- 密码复杂度 ≥12 位 + 90 天过期
- sysctl 安全参数已加载
- auditd 运行中 + 关键规则生效
- lynis/openscap 扫描无高危项