依据 GB/T 22239-2019《信息安全技术 网络安全等级保护基本要求》等保2.0三级 标准,针对 Red Hat Enterprise Linux (RHEL) 操作系统给出可直接落地的测评命令清单。
覆盖身份鉴别、访问控制、安全审计、入侵防范、恶意代码防范、资源控制等核心控制点,已在 RHEL 7.9 / RHEL 8.6 / RHEL 9.0 环境验证通过。
注意:
- 所有命令需在 root权限 下执行;
- 测评结果需人工复核(如密码复杂度需检查
pam_cracklib配置);- 高风险项(如双因素认证、审计进程保护)若未满足需重点整改。
一、身份鉴别(8.1.4.1)
1.1 用户身份唯一性与密码复杂度
| 测评命令 | 功能说明 | 达标判据 |
|---|---|---|
awk -F: '{print $3}' /etc/passwd | sort | uniq -d | 核查UID唯一性 | 无重复UID |
awk -F: '$2==""{print $1}' /etc/shadow | 检查空口令账户 | 无输出 |
grep -E 'PASS_MAX_DAYS|PASS_MIN_DAYS|PASS_WARN_AGE' /etc/login.defs | 密码有效期策略 | ≤90天,≥7天预警 |
cat /etc/security/pwquality.conf | 密码复杂度策略(RHEL 7+) | minlen=8,minclass=4 |
RHEL特有配置:
# 查看RHEL默认密码复杂度配置
cat /etc/security/pwquality.conf
# 合规配置示例
minlen =8
minclass =4
dcredit =-1
ucredit =-1
lcredit =-1
ocredit =-1
maxrepeat =2
gecoscheck =1
enforce_for_root
判定标准:密码长度≥8位,包含大小写字母、数字、特殊字符四类中的三类,有效期≤90天。
1.2 登录失败处理与超时退出
| 测评命令 | 功能说明 | 达标判据 |
|---|---|---|
grep -E 'pam_faillock|pam_tally2' /etc/pam.d/sshd | 登录失败锁定策略 | deny=5,unlock_time=300 |
grep TMOUT /etc/profile /etc/bashrc | 会话超时设置 | TMOUT=600(秒) |
grep -E 'ClientAliveInterval|ClientAliveCountMax' /etc/ssh/sshd_config | SSH会话超时 | 300秒无操作断开 |
1.3 远程管理安全
# 检查SSH安全配置
cat /etc/ssh/sshd_config |grep-E'PermitRootLogin|Protocol|PasswordAuthentication'
# 合规配置
PermitRootLogin no # 禁止root远程登录
Protocol 2# 仅使用SSHv2
PasswordAuthentication no # 建议启用密钥认证(可选)
PubkeyAuthentication yes
高风险项:使用Telnet或允许root远程登录,直接判定不符合三级要求。
1.4 双因素认证(高风险项)
测评方法:
- 访谈确认:是否采用”口令+数字证书/Ukey”组合
- 技术核查:
# 检查SSH公钥认证配置
grep"PubkeyAuthentication yes" /etc/ssh/sshd_config
# 检查PAM模块是否集成双因子
cat /etc/pam.d/sshd |grep-E"pam_pkcs11|pam_google_authenticator"
# 检查智能卡认证(RHEL特有)
cat /etc/pam.d/system-auth |grep pam_pkcs11
systemctl status pcscd # 智能卡服务状态
二、访问控制(8.1.4.2)
2.1 账户与权限管理
| 测评命令 | 功能说明 | 达标判据 |
|---|---|---|
stat -c '%a %n' /etc/passwd /etc/shadow | 关键文件权限 | 644/000 |
grep -v '^#' /etc/sudoers | grep -v '^$' | sudo授权检查 | 最小权限原则 |
awk -F: '$3==0 && $1!="root"{print $1}' /etc/passwd | 检查UID=0的非root账户 | 无输出 |
2.2 默认账户清理
# 确认默认账户禁用或删除
grep-E'halt|shutdown|sync|adm|lp|news|uucp|operator|games|gopher' /etc/shadow
# 预期结果:第二列为!!(锁定)或*(禁用),或账户不存在
# 加固要求:删除默认账户,停用多余账户
userdelhalt2>/dev/null;userdelshutdown2>/dev/null
usermod-L adm 2>/dev/null;usermod-L lp 2>/dev/null
2.3 强制访问控制(SELinux)
RHEL默认启用 SELinux:
# 检查SELinux状态
getenforce # 应为Enforcing
cat /etc/selinux/config |grep SELINUX # 应为enforcing
# 查看文件安全上下文
ls-Z /etc/passwd /etc/shadow
# 查看进程安全上下文
ps-eZ|grep sshd
# 检查是否有进程处于unconfined_t(应最小化)
ps-eZ|grep unconfined_t |wc-l
# 查看SELinux布尔值
getsebool -a|grepssh
达标判据:SELinux处于Enforcing模式,关键文件和进程有正确的安全上下文。
三、安全审计(8.1.4.3)
3.1 审计服务与日志保护
| 测评命令 | 功能说明 | 达标判据 |
|---|---|---|
systemctl is-active auditd && systemctl is-enabled auditd | 审计服务状态 | active & enabled |
systemctl is-active rsyslog && systemctl is-enabled rsyslog | 日志服务状态 | active & enabled |
auditctl -l | wc -l | 审计规则数量 | ≥30条 |
aureport -i | head -20 | 审计事件摘要 | 包含登录、权限变更、文件操作 |
stat -c '%a %U:%G' /var/log/audit/audit.log | 日志权限 | 600 root:root |
3.2 日志备份与防篡改
# 检查远程日志转发配置
grep-E'@\w+.*514' /etc/rsyslog.conf /etc/rsyslog.d/*.conf
# 合规配置示例
echo"*.info;mail.none;authpriv.none;cron.none @192.168.1.100:514">> /etc/rsyslog.conf
systemctl restart rsyslog
# 查看日志加密传输(TLS)
grep-E'DefaultNetstreamDriverCAFile\|ActionSendStreamDriverMode' /etc/rsyslog.conf
# RHEL 8+ 使用journald,检查持久化存储
grep Storage /etc/systemd/journald.conf # 应为persistent
3.3 审计进程保护(高风险项)
测试方法:
# 使用非审计管理员账户执行,应失败
sudo-u testuser systemctl stop auditd
# 预期结果:Failed to stop auditd.service: Operation not permitted
# 检查auditd是否受systemd保护
systemctl show auditd |grep-i"refuse\|protect\|killmode"
# 应包含:KillMode=process 或相关保护设置
四、入侵防范(8.1.4.4)
4.1 最小化安装与漏洞修复
| 测评命令 | 功能说明 | 达标判据 |
|---|---|---|
yum list installed | wc -l / dnf list installed | wc -l | 已安装软件包数量 | 最小化原则 |
yum check-update / dnf check-update | 待更新包 | ≤30天 |
rpm -qa --last | head -10 | 最近安装包 | 含安全补丁 |
systemctl list-unit-files --state=enabled | grep -vE 'ssh|audit|cron|rsyslog' | 启用服务 | 仅业务所需 |
RHEL补丁管理:
# RHEL 7/8/9 使用yum或dnf
yum check-update # 检查更新
yum update --security# 仅安装安全更新
dnf update --security# RHEL 8+
# 使用Red Hat Insights(企业订阅)
insights-client --check-results
insights-client --show-results
4.2 端口与服务管控
| 测评命令 | 功能说明 | 达标判据 |
|---|---|---|
ss -tunlp | grep -E '0.0.0.0:23|0.0.0.0:111|0.0.0.0:513|0.0.0.0:32768' | 高危端口检查 | 无监听 |
firewall-cmd --list-rich-rules | firewalld规则 | 限制管理终端IP |
cat /etc/hosts.allow /etc/hosts.deny | TCP Wrappers | hosts.deny包含ALL:ALL |
RHEL防火墙配置:
# 检查firewalld状态(RHEL 7+默认)
systemctl status firewalld
firewall-cmd --state
firewall-cmd --list-all
# 合规配置示例
firewall-cmd --set-default-zone=drop
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="10.1.1.0/24" service name="ssh" accept'
firewall-cmd --reload
五、恶意代码防范(8.1.4.5)
| 测评命令 | 功能说明 | 达标判据 |
|---|---|---|
systemctl is-active clamd && systemctl is-enabled clamd | ClamAV状态 | active & enabled |
freshclam --version | 病毒库版本 | 24小时内更新 |
ps -ef | grep clamd | 实时扫描进程 | 常驻内存 |
RHEL特有:
# 检查Red Hat官方安全工具
rpm-qa|grep-E"insights-client|scap-security-guide"
# 使用SCAP安全指南(等保合规)
yum install scap-security-guide # 或 dnf install
oscap info /usr/share/xml/scap/ssg/content/ssg-rhel8-ds.xml
oscap xccdf eval--profile xccdf_org.ssgproject.content_profile_cis /usr/share/xml/scap/ssg/content/ssg-rhel8-ds.xml
高风险项:未部署实时防病毒工具,直接判定不符合三级要求。
六、资源控制(8.1.4.8)
| 测评命令 | 功能说明 | 达标判据 |
|---|---|---|
grep HISTSIZE /etc/profile /etc/bashrc | 历史命令保存条数 | ≥1000条 |
grep -E 'ClientAliveInterval|ClientAliveCountMax' /etc/ssh/sshd_config | SSH会话超时 | ≤600秒 |
cat /etc/security/limits.conf | 资源限制 | 配置CPU、内存、文件句柄限制 |
RHEL特有资源控制:
# 使用systemd进行资源控制(RHEL 7+)
systemctl show sshd |grep-E'MemoryLimit|CPUQuota|TasksMax'
# 查看控制组(cgroups)配置
cat /etc/systemd/system/sshd.service.d/limits.conf 2>/dev/null ||echo"未配置自定义限制"
# 配置示例
mkdir-p /etc/systemd/system/sshd.service.d/
tee /etc/systemd/system/sshd.service.d/limits.conf <<EOF
[Service]
MemoryLimit=512M
CPUQuota=50%
TasksMax=100
EOF
systemctl daemon-reload
systemctl restart sshd
一键巡检脚本(Bash)
#!/bin/bash
# Red Hat Enterprise Linux 等保三级一键巡检脚本
# 适用:RHEL 7.9 / 8.6 / 9.0
# 执行用户:root
echo"===== 1 身份鉴别 ====="
echo"--- UID唯一性检查 ---"
awk -F: '{print $3}' /etc/passwd |sort|uniq-d|wc-l|xargs-I{}echo"重复UID数量: {}"
echo"--- 空口令检查 ---"
awk -F: '$2==""{print "空口令用户: "$1}' /etc/shadow
echo"--- 密码有效期 ---"
grep-E'PASS_MAX_DAYS|PASS_MIN_DAYS|PASS_WARN_AGE' /etc/login.defs
echo"--- 密码复杂度(RHEL 7+) ---"
cat /etc/security/pwquality.conf |grep-E'minlen|minclass|credit|enforce'|head-5
echo"--- 登录失败锁定 ---"
grep-E'pam_faillock|pam_tally2' /etc/pam.d/sshd /etc/pam.d/system-auth 2>/dev/null |head-3
echo"--- SSH配置 ---"
grep-E'PermitRootLogin|Protocol|ClientAlive' /etc/ssh/sshd_config |head-5
echo""
echo"===== 2 访问控制 ====="
echo"--- 关键文件权限 ---"
stat-c'%a %n' /etc/passwd /etc/shadow 2>/dev/null
echo"--- 默认账户状态 ---"
grep-E'halt|shutdown|sync|adm|lp|news|uucp|operator|games|gopher' /etc/shadow |head-5
echo"--- SELinux状态 ---"
getenforce
cat /etc/selinux/config |grep SELINUX |head-2
echo""
echo"===== 3 安全审计 ====="
echo"--- auditd状态 ---"
systemctl is-active auditd && systemctl is-enabled auditd
echo"--- rsyslog状态 ---"
systemctl is-active rsyslog && systemctl is-enabled rsyslog
echo"--- 审计规则数量 ---"
auditctl -l2>/dev/null |wc-l
echo"--- 日志权限 ---"
stat-c'%a %U:%G' /var/log/audit/audit.log 2>/dev/null
echo"--- 远程日志配置 ---"
grep-E'@\w+.*514' /etc/rsyslog.conf /etc/rsyslog.d/*.conf 2>/dev/null |head-3
echo""
echo"===== 4 入侵防范 ====="
echo"--- 高危端口 ---"
ss -tunlp|grep-E'0.0.0.0:23|0.0.0.0:111|0.0.0.0:513|0.0.0.0:32768'
echo"--- 待更新包 ---"
yum check-update 2>/dev/null |wc-l|| dnf check-update 2>/dev/null |wc-l
echo"--- 启用服务 ---"
systemctl list-unit-files --state=enabled |grep-vE'ssh|audit|cron|rsyslog|chronyd'|head-10
echo"--- 防火墙状态 ---"
firewall-cmd --state2>/dev/null ||echo"firewalld未运行"
echo"--- SELinux布尔值(关键) ---"
getsebool -a|grep-E'httpd|ftp|ssh'|head-5
echo""
echo"===== 5 恶意代码防范 ====="
echo"--- ClamAV状态 ---"
systemctl is-active clamd 2>/dev/null
systemctl is-enabled clamd 2>/dev/null
echo"--- 病毒库版本 ---"
freshclam --version2>/dev/null ||echo"未安装freshclam"
echo"--- SCAP安全指南(RHEL特有) ---"
rpm-qa|grep scap-security-guide 2>/dev/null |head-1||echo"未安装SCAP指南"
echo""
echo"===== 6 资源控制 ====="
echo"--- 历史命令限制 ---"
grepHISTSIZE /etc/profile /etc/bashrc 2>/dev/null
echo"--- 系统资源限制 ---"
cat /etc/security/limits.conf |grep-v'^#'|grep-v'^$'|head-5
echo"--- systemd资源限制 ---"
systemctl show sshd |grep-E'MemoryLimit|CPUQuota'|head-2
echo""
echo"===== 巡检完成 ====="
高风险项重点核查清单
| 检查项 | 验证命令 | 不合规判定 | 整改建议 |
|---|---|---|---|
| 空口令账户 | awk -F: '$2==""{print $1}' /etc/shadow | 存在输出 | 立即设置强口令或锁定 |
| 密码复杂度未启用 | cat /etc/security/pwquality.conf | 无配置或minlen<8 | 配置pwquality参数 |
| 无登录失败锁定 | grep -E 'pam_faillock|pam_tally2' /etc/pam.d/sshd | 无输出 | 配置pam_faillock |
| root远程登录 | grep ^PermitRootLogin /etc/ssh/sshd_config | 值为yes | 修改为no |
| SELinux未启用 | getenforce | 返回Disabled或Permissive | 修改为Enforcing |
| 审计未启用 | systemctl is-active auditd | 非active | 安装并启用auditd |
| 审计进程无保护 | sudo -u testuser systemctl stop auditd | 执行成功 | 配置权限限制 |
| 无杀毒软件 | systemctl is-active clamd | 非active | 安装ClamAV |
| 双因素认证缺失 | 访谈+grep pam_pkcs11 /etc/pam.d/sshd | 未配置 | 部署智能卡或动态令牌 |
| 补丁更新滞后 | yum check-update / dnf check-update | 存在Critical补丁未安装 | 立即安装安全更新 |
RHEL版本差异说明(7 vs 8 vs 9)
| 功能项 | RHEL 7.9 | RHEL 8.6 | RHEL 9.0 |
|---|---|---|---|
| 包管理 | yum | yum/dnf | dnf(仅) |
| 默认防火墙 | firewalld | firewalld | firewalld |
| 默认MAC | SELinux | SELinux | SELinux(增强) |
| 系统初始化 | SysV/init | systemd | systemd |
| 容器支持 | Docker | Podman/CRI-O | Podman(默认) |
| 加密算法 | SHA-1/SHA-256 | SHA-256/SHA-3 | 国密SM2/SM3/SM4支持 |
| SCAP版本 | 基础 | 完整 | 完整+等保模板 |
| 内核版本 | 3.10 | 4.18 | 5.14 |
| 支持周期 | 2024年6月 | 2024年5月 | 2031年 |
RHEL特有安全工具
1. Red Hat Insights(智能分析)
# 检查Insights客户端
insights-client --version
# 执行安全分析
insights-client --check-results
insights-client --show-results |grep-i"security|vulnerability"
# 查看等保合规建议
insights-client --show-results |grep-E"CVE|compliance|hardening"
2. SCAP安全指南(等保合规自动化)
# 安装SCAP安全指南
yum install scap-security-guide # RHEL 7
dnf install scap-security-guide # RHEL 8/9
# 查看可用配置文件
oscap info /usr/share/xml/scap/ssg/content/ssg-rhel9-ds.xml
# 执行CIS基准测试
oscap xccdf eval--profile xccdf_org.ssgproject.content_profile_cis \
--results /tmp/cis-results.xml \
/usr/share/xml/scap/ssg/content/ssg-rhel9-ds.xml
# 生成报告
oscap xccdf generate report /tmp/cis-results.xml > /tmp/cis-report.html
3. AIDE文件完整性检查
# 安装AIDE
yum install aide # 或 dnf install aide
# 初始化数据库
aide --init
mv /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz
# 执行检查
aide --check
# 更新数据库(确认正常后)
aide --update
测评执行要点
1. 权限要求
- 所有命令需 root 权限执行
- 建议创建专用审计账户,加入
audit组
2. 现场核查重点
- 密码策略:RHEL 7+使用
pwquality.conf,需确认enforce_for_root已启用 - SELinux状态:检查是否有业务进程因SELinux被阻止(
ausearch -m avc) - 审计完整性:抽查
/var/log/audit/audit.log,确认包含权限变更、文件修改记录 - Insights报告:如订阅有效,优先参考Insights安全分析结果
3. 与CentOS/Oracle Linux对比
| 对比项 | CentOS 7/8 | Oracle Linux | RHEL |
|---|---|---|---|
| 源代码 | RHEL重新编译 | RHEL兼容 | 商业源码 |
| 支持周期 | 已停止 | 10年+ | 10年+ |
| 安全补丁 | 滞后 | 及时(Ksplice) | 最及时 |
| 安全工具 | 基础 | Ksplice | Insights+SCAP+AIDE |
| 等保合规 | 需大量加固 | 预优化 | 官方指南+自动化 |
| 成本 | 免费 | 免费(基础设施) | 订阅制 |
| 国密支持 | 需手动 | 基础 | RHEL 9+原生支持 |
常用命令速查
# 用户与权限
cat /etc/passwd # 查看所有用户
cat /etc/shadow # 查看密码状态
lastlog # 查看最后登录
faillock --user username # 查看登录失败记录(RHEL 8+)
# 网络与安全
ss -tunlp# 查看监听端口
firewall-cmd --list-all # 查看防火墙规则
getsebool -a|grep httpd # 查看SELinux布尔值
semanage port -l|grepssh# 查看SELinux端口标签
# 系统与日志
uname-r# 内核版本
cat /etc/redhat-release # RHEL版本
insights-client --version# Insights版本
ausearch -ts today -k identity_changes # 搜索今日审计日志
journalctl -u auditd # 查看auditd日志(RHEL 8+)
# 补丁与更新
yum check-update # 检查更新(RHEL 7)
dnf check-update # 检查更新(RHEL 8/9)
yum update --security# 安全更新(RHEL 7)
dnf update --security# 安全更新(RHEL 8/9)
rpm-qa--last|head-10# 最近安装包
# 备份与恢复
tar czf /backup/etc-$(date +%F).tar.gz /etc # 备份/etc
rsync-avz /backup/ remote:/backup/ # 异地同步
参考标准:GB/T 22239-2019、GB/T 28448-2019、RHEL安全指南、CIS基准
适用版本:Red Hat Enterprise Linux 7.9 / 8.6 / 9.0
验证环境:x86_64 / ARM64 / IBM Z / IBM Power 架构
声明:来自汪汪虚拟空间,仅代表创作者观点。链接:https://eyangzhen.com/6560.html