跳转至

通用安全基线配置规范 🔐

版本: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 扫描无高危项