依据 GB/T 22239-2019《信息安全技术 网络安全等级保护基本要求》等保2.0三级 标准,针对 CentOS 操作系统(安全计算环境) 给出可直接落地的测评命令清单。
覆盖 身份鉴别、访问控制、安全审计、入侵防范、恶意代码防范、可信验证、数据备份恢复 等核心控制点,已在 CentOS 7/8 环境验证通过。
一、身份鉴别(8.1.4.1)
| 控制项 | 测评命令 | 达标判据 |
|---|---|---|
| 空口令检查 | awk -F: '($2==""){print $1}' /etc/shadow |
无输出 |
| 密码有效期 | `grep -E "PASS_MAX_DAYS | PASS_MIN_DAYS |
| 密码复杂度 | `grep -E "pam_pwquality | pam_cracklib" /etc/pam.d/system-auth` |
| 登录失败锁定 | `grep -E "pam_faillock | pam_tally2" /etc/pam.d/system-auth` |
| SSH超时策略 | `grep -E "ClientAliveInterval | ClientAliveCountMax" /etc/ssh/sshd_config` |
二、访问控制(8.1.4.2)
| 控制项 | 测评命令 | 达标判据 |
|---|---|---|
| 默认账户清理 | `grep -E "games | news |
| sudo授权 | `grep -v "^#" /etc/sudoers | grep -v "^$"` |
| 关键文件权限 | ls -l /etc/passwd /etc/shadow /etc/group /etc/gshadow |
644/000/644/000 |
| umask值 | grep umask /etc/profile /etc/bashrc |
022或027 |
三、安全审计(8.1.4.3)
| 控制项 | 测评命令 | 达标判据 |
|---|---|---|
| auditd服务 | systemctl status auditd && systemctl is-enabled auditd |
active & enabled |
| 审计规则 | auditctl -l && cat /etc/audit/audit.rules |
覆盖登录、权限变更、文件操作 |
| 日志保留 | `grep -E "weekly | rotate" /etc/logrotate.conf` |
| 日志权限 | ls -l /var/log/audit/audit.log |
640 root:root |
四、入侵防范(8.1.4.4)
| 控制项 | 测评命令 | 达标判据 |
|---|---|---|
| 开放端口 | `ss -tulnp | grep LISTEN` |
| 补丁更新 | `yum check-update && rpm -qa --last | head` |
| 防火墙 | systemctl status firewalld && firewall-cmd --list-all |
启用并配置业务规则 |
| SELinux | getenforce |
Enforcing模式 |
五、恶意代码防范(8.1.4.5)
| 控制项 | 测评命令 | 达标判据 |
|---|---|---|
| 杀毒软件 | `systemctl status clamav-daemon && ps -ef | grep clamav` |
| 病毒库更新 | freshclam --version && ls -l /var/lib/clamav/ |
24小时内更新 |
六、可信验证(8.1.4.6)
| 控制项 | 测评命令 | 达标判据 |
|---|---|---|
| TPM状态 | `dmesg | grep -i tpm` |
| 文件完整性 | `rpm -Va | grep -E "^..5"` |
七、数据备份恢复(8.1.4.9)
| 控制项 | 测评命令 | 达标判据 |
|---|---|---|
| 备份策略 | `crontab -l | grep -i backup` |
| 备份权限 | ls -l /backup/ |
700 root:root |
| 恢复验证 | tar -tzf /backup/etc_backup_$(date +%F).tar.gz |
可正常解压,文件完整 |
一键巡检脚本(Bash)
#!/bin/bash
# CentOS 等保三级一键巡检脚本
# 适用:CentOS 7/8
# 执行用户:root
echo"===== 1 身份鉴别 ====="
echo"--- 空口令检查 ---"
awk -F: '($2==""){print "空口令用户: "$1}' /etc/shadow
echo"--- 密码有效期 ---"
grep-E"PASS_MAX_DAYS|PASS_MIN_DAYS|PASS_WARN_AGE" /etc/login.defs
echo"--- 密码复杂度 ---"
grep-E"pam_pwquality|pam_cracklib" /etc/pam.d/system-auth |head-5
echo"--- 登录失败锁定 ---"
grep-E"pam_faillock|pam_tally2" /etc/pam.d/system-auth
echo"--- SSH超时 ---"
grep-E"ClientAliveInterval|ClientAliveCountMax" /etc/ssh/sshd_config
echo""
echo"===== 2 访问控制 ====="
echo"--- 默认账户 ---"
grep-E"games|news|ftp|lp|halt|shutdown" /etc/passwd
echo"--- sudo配置 ---"
grep-v"^#" /etc/sudoers |grep-v"^$"|head-10
echo"--- 关键文件权限 ---"
ls-l /etc/passwd /etc/shadow /etc/group /etc/gshadow 2>/dev/null
echo"--- umask配置 ---"
grepumask /etc/profile /etc/bashrc 2>/dev/null
echo""
echo"===== 3 安全审计 ====="
echo"--- auditd状态 ---"
systemctl status auditd 2>/dev/null |grep Active
systemctl is-enabled auditd 2>/dev/null
echo"--- 审计规则 ---"
auditctl -l2>/dev/null |wc-l
echo"--- 日志保留 ---"
grep-E"weekly|rotate" /etc/logrotate.conf |head-3
echo"--- 日志权限 ---"
ls-l /var/log/audit/audit.log 2>/dev/null
echo""
echo"===== 4 入侵防范 ====="
echo"--- 高危端口 ---"
ss -tulnp|grep-E"0.0.0.0:111|0.0.0.0:23|0.0.0.0:513"
echo"--- 待更新包 ---"
yum check-update 2>/dev/null |wc-l
echo"--- 防火墙状态 ---"
systemctl status firewalld 2>/dev/null |grep Active
firewall-cmd --state2>/dev/null
echo"--- SELinux ---"
getenforce
echo""
echo"===== 5 恶意代码防范 ====="
echo"--- ClamAV状态 ---"
systemctl status clamav-daemon 2>/dev/null |grep Active
ps-ef|grep clamd |grep-vgrep
echo"--- 病毒库 ---"
freshclam --version2>/dev/null ||echo"未安装freshclam"
echo""
echo"===== 6 可信验证 ====="
echo"--- TPM状态 ---"
dmesg|grep-i"tpm"|head-3
echo"--- 文件完整性 ---"
rpm-Va|grep-E"^..5"|head-5||echo"关键文件未被篡改"
echo""
echo"===== 7 数据备份 ====="
echo"--- 备份任务 ---"
crontab-l2>/dev/null |grep-i backup ||echo"未配置备份任务"
echo"--- 备份目录 ---"
ls-ld /backup/ 2>/dev/null ||echo"备份目录不存在"
echo""
echo"===== 巡检完成 ====="
关键配置文件说明
1. 密码策略配置(/etc/pam.d/system-auth)
# 密码复杂度要求
password requisite pam_pwquality.so try_first_pass local_users_only retry=3minlen=8minclass=4ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1
# 密码历史(CentOS 8)
password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok remember=12
# 登录失败锁定(CentOS 7使用pam_tally2,CentOS 8使用pam_faillock)
auth required pam_faillock.so preauth silent audit deny=5unlock_time=900
auth [default=die] pam_faillock.so authfail audit deny=5unlock_time=900
auth sufficient pam_faillock.so authsucc audit deny=5unlock_time=900
2. SSH安全配置(/etc/ssh/sshd_config)
# 禁止root远程登录
PermitRootLogin no
# 仅允许特定用户组
AllowGroups wheel
# 空闲超时配置(5分钟无操作自动断开)
ClientAliveInterval 300
ClientAliveCountMax 0
# 仅使用SSHv2协议
Protocol 2
3. 审计规则配置(/etc/audit/audit.rules)
# 监控用户/组修改
-w /etc/passwd -p wa -k identity_changes
-w /etc/group -p wa -k identity_changes
-w /etc/shadow -p wa -k identity_changes
-w /etc/gshadow -p wa -k identity_changes
# 监控sudoers修改
-w /etc/sudoers -p wa -k sudoers_changes
-w /etc/sudoers.d/ -p wa -k sudoers_changes
# 监控SSH配置
-w /etc/ssh/sshd_config -p wa -k ssh_config_changes
高风险项重点核查清单
| 检查项 | 验证命令 | 不合规判定 | 整改建议 |
|---|---|---|---|
| 空口令账户 | awk -F: '($2==""){print $1}' /etc/shadow |
存在输出 | 立即设置强口令或锁定账户 |
| 密码复杂度未启用 | grep pam_pwquality /etc/pam.d/system-auth |
无输出 | 安装并配置pam_pwquality |
| 无登录失败锁定 | `grep -E "pam_faillock | pam_tally2" /etc/pam.d/system-auth` | 无输出 |
| root远程登录 | grep ^PermitRootLogin /etc/ssh/sshd_config |
值为yes或未配置 |
修改为no并重启sshd |
| SELinux未启用 | getenforce |
返回Disabled或Permissive |
修改配置文件为enforcing |
| 防火墙未启用 | systemctl is-active firewalld |
非active |
启用firewalld并配置规则 |
| 审计未启用 | systemctl is-active auditd |
非active |
安装auditd并启用服务 |
| 高危端口开放 | `ss -tulnp | grep -E "0.0.0.0:111 | 0.0.0.0:23"` |
| 无杀毒软件 | systemctl is-active clamav-daemon |
非active |
安装ClamAV并启用实时保护 |
| 备份未配置 | `crontab -l | grep backup` | 无输出 |
CentOS版本差异说明(6 vs 7 vs 8)
| 功能项 | CentOS 6 | CentOS 7 | CentOS 8 |
|---|---|---|---|
| 服务管理 | service | systemctl | systemctl |
| 包管理 | yum | yum | dnf(yum兼容) |
| 登录失败锁定 | pam_tally2 | pam_tally2/pam_faillock | pam_faillock |
| SELinux | 基础 | 增强 | 增强 |
| 审计工具 | auditd | auditd | auditd |
| 默认防火墙 | iptables | firewalld | firewalld |
| 长期支持 | 已停止(2020) | 2024年停止 | 2021年停止(转向CentOS Stream) |
重要提示 :CentOS 8已于2021年底停止维护,建议迁移至 Rocky Linux、AlmaLinux 或 Anolis OS 等替代方案。
测评执行要点
1. 权限要求
-
所有命令需
root用户执行 -
建议创建专用审计账户,加入
audit组
2. 现场核查重点
-
密码策略:不仅看配置,需尝试创建弱口令用户验证策略是否生效
-
审计完整性 :抽查
/var/log/audit/audit.log,确认包含权限变更、文件修改记录 -
SELinux有效性 :检查是否有进程处于
unconfined_service_t域 -
备份有效性:必须现场执行恢复演练,验证备份文件可用
3. 与RHEL/Oracle Linux对比
| 对比项 | CentOS | RHEL | Oracle Linux |
|---|---|---|---|
| 源代码 | RHEL重新编译 | 商业源码 | RHEL兼容 |
| 支持周期 | 已停止 | 10年 | 10年 |
| 安全补丁 | 滞后 | 及时 | 及时 |
| 成本 | 免费 | 订阅制 | 免费(仅更新) |
| 等保合规 | 需自行加固 | 官方加固指南 | 类似CentOS |
常用命令速查
# 用户与权限
cat /etc/passwd # 查看所有用户
cat /etc/shadow # 查看密码状态
lastlog # 查看最后登录
faillock --user username # 查看登录失败记录(CentOS 8)
pam_tally2 --user username # 查看登录失败记录(CentOS 7)
# 网络与安全
ss -tulnp# 查看监听端口
netstat-tulnp# 传统方式查看端口
iptables -L-n# 查看iptables规则
firewall-cmd --list-all # 查看firewalld规则
# 系统与日志
uname-a# 内核版本
cat /etc/centos-release # OS版本
ausearch -ts today -k identity_changes # 搜索今日审计日志
aureport --login--summary-i# 生成登录报告
# 备份与恢复
tar czf /backup/etc-$(date +%F).tar.gz /etc # 备份/etc
rsync-avz /backup/ remote:/backup/ # 异地同步
参考标准 :GB/T 22239-2019、GB/T 28448-2019、CentOS安全基线
适用版本 :CentOS 7/8(CentOS 6部分命令需调整)
验证环境:x86_64 / ARM64 架构