# 11、Linux操作系统加固手册

> Linux 操作系统等保三级加固手册（CentOS 7.9/RHEL 7.9）：按 8.1.4 安全计算环境 11 个控制点逐项给出核查命令与加固操作——login.defs 与 pam_pwquality 口令策略、pam_tally2/pam_faillock 登录失败处理与 TMOUT 会话超时、SSH 加密管理与双因素、三权分组与默认账户治理、auditd 审计启用与记录保护、最小安装与服务端口收敛、SELinux 与主机防火墙、漏洞修补、恶意代码防范、可信验证、数据完整性与保密性、本地与异地备份热冗余、剩余信息与个人信息保护，含测评项对照表。

---

LLMS index: [llms.txt](/wikis/llms.txt)

---

> 定位：Linux（CentOS 7.9 / RHEL 7.9）等保三级加固**控制点完整版**：严格按 GB/T 22239-2019 8.1.4 安全计算环境的 11 个控制点组织，每项给出「核查方法 → 加固操作 → 预期现象」，覆盖身份鉴别、访问控制、安全审计、入侵防范、恶意代码防范、可信验证、数据完整性/保密性、备份恢复、剩余信息与个人信息保护。
>
> 适用版本：CentOS 7.9 / RHEL 7.9（全文以此为准）。RHEL 8+/CentOS Stream/openEuler 的 pam_faillock、dnf、chrony 差异见 [04、Linux主机加固操作手册](../04linux主机加固操作手册/) 文末「版本差异速查」；麒麟 V10 见 [13、麒麟操作系统加固](../../终端/13麒麟操作系统加固/) 文末对照表。
> 配套测评：[三级现场测评命令单](../../../gradeProtection/服务器/三级现场测评命令单/)；图解速查见 [07、CentOS操作系统安全加固](../07centos操作系统安全加固/)。
> 高风险提示：弱口令/默认口令、无恶意代码防范措施、无数据备份等可构成高风险项，见 [高风险判定指引](../../../gradeProtectionWiki/联盟团标-网络安全等级保护测评高风险判定指引/)。

本文按 GB/T 22239-2019「安全计算环境-主机设备」控制点组织，每个配置项给出核查方法与加固操作。

> 使用说明：
>
> - 本文为**加固操作手册**：所有命令都会修改配置，可能中断服务、断开当前会话或需要重启。实施前必须完成变更审批、确认业务窗口、备份原配置（设备 `save` 与 `copy running-config`／`backup startup-configuration`，主机备份 `/etc`、注册表与关键业务数据），并准备**可执行的回滚预案**。
> - 先在测试环境或单台设备灰度验证，确认无业务影响后再批量推广；每完成一项立即用文中「验证」命令核验生效——配置已下发不等于策略已生效（如 H3C 未 `password-control enable`、Linux 未对存量账户 `chage`、Windows 未 `gpupdate /force`）。
> - 示例中的地址、账户名、口令、路径均为演示值（如 `PleaseChange@123`、`192.168.10.20`、`admin123`），现场须替换为符合本单位口令策略与网络规划的真实值，**严禁直接沿用文中示例口令**；对外发布或归档时须对个人信息与内网管理地址脱敏。
> - 命令不存在、视图名或参数与本文不一致时，先用 `display version` / `show version` / `winver` 确认版本与部署形态，再查阅对应版本官方文档换用等效命令；**版本差异不得直接作为「无法整改」的结论**，须给出替代措施并评估其实际效果。
> - 涉及账户、锁定、超时、防火墙与端口收敛的变更存在锁死自身风险：务必保留一条已验证的恢复通道（Console 口、带外管理口、堡垒机会话或另一管理员账户）后再实施。
> - 加固完成后按「16、安全评估加固记录表3.0」逐项留痕（整改前后回显、操作人、时间、验证结论、回退情况），并纳入复测；测评判定口径以 GB/T 28448-2019 与《高风险判定指引》为准，本文的「加固要点」不构成最终测评结论。
>
> 不适用标识说明：
>
> - 使用 `【不适用】` 明确标记现场可判定为不适用的控制点，并写明判定依据与承载该能力的上位组件。
> - 依据 GB/T 28448-2019「按测评对象实际承载功能与数据处理范围判定」原则：控制能力由统一认证平台、堡垒机、日志审计系统、终端管理系统、虚拟化平台或云托管平台承载时，应注明测评单元边界后判定不适用或转由上位组件核查，不得机械按缺失判不符合。
> - 产品版本确实不提供该能力（如老旧设备无 SNMPv3、无可信根、社区版无审计模块、已停止官方支持的操作系统）时，须核查替代措施并按替代措施的实际效果定档，不得直接判不适用；已停止支持的版本应同时提出升级或补偿控制建议。

## 一、身份鉴别

> **对应控制点**：GB/T 22239-2019 8.1.4.1 身份鉴别 a)~d)
>
> **加固要点**：账户唯一且无空口令/默认口令、口令复杂度与有效期策略已下发、登录失败处理（锁定阈值与时长）与会话空闲超时已启用、远程管理走 SSH/HTTPS 等加密通道；三级另需核查是否采用两种及以上鉴别技术组合且其中一种为密码技术（如口令+动态令牌/证书/生物特征）→ 全部满足为符合；缺复杂度、缺失败锁定、缺超时或缺双因素之一 → 部分符合；存在空口令、默认口令或 Telnet/HTTP 明文管理 → 不符合（高风险）。
>
> **验证方法**：账户清单与最后登录时间截图、口令策略配置与生效范围截图、失败锁定与超时参数截图、SSH/远程桌面加密配置截图、双因素认证部署证据或访谈纪要、弱口令实测记录。

<div class="alert alert-warning" role="alert"><div class="h4 alert-heading" role="heading">高风险提示</div>


主机存在空口令、默认口令或弱口令账户（尤其 `root`、`Administrator`、`sa`、`vmware`、`dcui` 及厂商预置账户），或远程管理使用 Telnet/HTTP/RDP 明文与弱加密导致鉴别信息可被嗅探还原时，按《高风险判定指引》可直接判高风险；双因素认证完全缺失且主机暴露于互联网时同样按高风险线索记录。

判定口径详见 [22、高风险判定指引与加固对照表](../../其他系统或设备/22高风险判定指引与加固对照表/)。

</div>


### 1.1 身份标识唯一性、口令复杂度与定期更换

> **对应控制点**：GB/T 22239-2019 8.1.4.1 身份鉴别 a)~d)

**核查方法**

```bash
grep -E "^PASS_" /etc/login.defs
grep -E "pwquality|cracklib" /etc/pam.d/system-auth*
chage -l 用户名
```

**加固操作**

1. 编辑 `/etc/login.defs`：

```text
PASS_MAX_DAYS   90     # 口令最长有效期 90 天
PASS_MIN_DAYS   1      # 两次修改最小间隔 1 天
PASS_MIN_LEN    8      # 最小长度 8 位（结合 pam 参数实际生效）
PASS_WARN_AGE   7      # 过期前 7 天提示
```

2. 编辑 `/etc/pam.d/system-auth`，添加复杂度校验：

```text
password    requisite     pam_pwquality.so retry=5 enforce_for_root minlen=10 ucredit=-1 lcredit=-3 dcredit=-3 ocredit=-1
```

参数含义：`retry=5` 可重试 5 次；`minlen=10` 最小长度 10；`ucredit=-1` 至少 1 个大写字母；`lcredit=-3` 至少 3 个小写字母；`dcredit=-3` 至少 3 个数字；`ocredit=-1` 至少 1 个特殊字符。

3. 口令历史（5 次内不重复，`/etc/pam.d/system-auth` 的 password stack 中添加）：

```text
password    required      pam_pwhistory.so remember=5 use_authtok
```

4. 存量账户：`chage -M 90 用户名` 逐个生效。

- 预期现象：弱口令被拒绝，`chage -l` 显示有效期 90 天；身份标识（UID、账户名）无重复、无共享账户。

### 1.2 登录失败处理与会话超时

> **对应控制点**：GB/T 22239-2019 8.1.4.1 身份鉴别 b)（提供登录失败处理功能，限制非法登录次数）
>
> **加固要点**：配置并启用「连续失败 N 次锁定 M 分钟」，N 建议 3~5 次、M 建议 10~30 分钟，且**必须覆盖最高权限账户**（root / Administrator / super / privilege 15）；同时保留紧急恢复通道（Console 口本地登录或带外管理口），避免锁定策略把运维人员一并锁在门外。Linux 按版本选择 pam_tally2（CentOS/RHEL 7 及更早）或 pam_faillock（RHEL 8+/麒麟 V10/openEuler），两套机制不可混配；Windows 须同时设置「账户锁定阈值」「锁定时间」「重置计数器」三项，仅设阈值不设计时器不生效。
>
> **验证方法**：配置回显（`grep -E "tally2|faillock" /etc/pam.d/*`、`display current-configuration | include wrong-password`、`secpol.msc` 账户锁定策略截图）+ 一次真实失败登录实测：连续输错至阈值后确认账户被锁定、锁定计时生效、`pam_tally2 -u` / `faillock --user` / `display password-control blacklist` 能查到计数，并验证解锁命令可用；实测记录须含时间、操作人与被锁账户。

<div class="alert alert-warning" role="alert"><div class="h4 alert-heading" role="heading">高风险提示</div>


管理入口未配置任何登录失败处理措施且管理面对全网或互联网开放，可被无限次口令猜测时，按高风险线索记录；锁定策略未覆盖最高权限账户（root/Administrator/super/level-15），或未保留 Console/带外恢复通道导致锁定即失联，同样记录为高风险线索。

判定口径详见 [22、高风险判定指引与加固对照表](../../其他系统或设备/22高风险判定指引与加固对照表/)。

</div>


**核查方法**

```bash
grep -E "tally2|faillock" /etc/pam.d/system-auth* /etc/pam.d/sshd
grep TMOUT /etc/profile /etc/profile.d/*.sh
```

**加固操作**

1. 登录失败锁定（CentOS 7，编辑 `/etc/pam.d/system-auth`）：

```text
auth        required      pam_tally2.so onerr=fail deny=5 unlock_time=1800 even_deny_root root_unlock_time=1800
```

即连续失败 5 次锁定 30 分钟（含 root）。查询与解锁：`pam_tally2 -u 用户名 [--reset]`。

RHEL 8+/麒麟 V10 使用 pam_faillock：改 `/etc/security/faillock.conf`（`deny=5`、`unlock_time=1800`、`root_unlock_time=1800`）。

2. 会话超时（编辑 `/etc/profile`）：

```bash
export TMOUT=1800    # 空闲 30 分钟自动退出
```

```bash
source /etc/profile
```

### 1.3 远程管理防窃听

> **对应控制点**：GB/T 22239-2019 8.1.4.1 身份鉴别 c)（远程管理时防止鉴别信息在传输中被窃听）、8.1.2.2 通信传输 a)b)
>
> **加固要点**：远程管理一律走加密通道：设备侧仅放行 SSHv2/HTTPS 并关闭 Telnet/HTTP，RSA 密钥长度不低于 2048 位、禁用 CBC 模式与 3DES 等弱算法；主机侧禁用 Telnet/FTP，SSH 关闭 root 直接登录、优先密钥认证并按需启用「口令 + 密钥」双因素，RDP 启用 NLA 与 TLS 并把来源限制到管理网段或堡垒机。管理通道加密后仍须用 ACL/防火墙收敛来源——加密只解决窃听，不解决越权访问。
>
> **验证方法**：设备侧 `show ip ssh` / `display ssh server status` 确认版本与算法，`show running-config | section line vty` 确认 `transport input ssh`；主机侧 `sshd -T | grep -Ei "permitrootlogin|ciphers|macs|kexs"`、`ss -tlnp` 确认无 23/21 监听，Windows `Get-ItemProperty` 核查 RDP 的 NLA（`UserAuthentication`）与端口；从非管理网段发起连接实测被拒；必要时抓包确认无明文口令。

<div class="alert alert-warning" role="alert"><div class="h4 alert-heading" role="heading">高风险提示</div>


仍启用 Telnet/HTTP 明文管理，或 SSH 允许 root/Administrator 直接远程登录且使用弱口令，导致鉴别信息可被嗅探还原或管理入口可被爆破，按《高风险判定指引》可直接判高风险；管理端口未经边界限制直接对互联网开放时同样按高风险处理。

判定口径详见 [22、高风险判定指引与加固对照表](../../其他系统或设备/22高风险判定指引与加固对照表/)。

</div>


**核查方法**

```bash
sshd -T | grep -Ei "permitrootlogin|passwordauth"
systemctl is-active telnet.socket 2>/dev/null || echo "telnet 未运行"
ss -tlnp | grep -E ":23|:22"
```

**加固操作**：远程管理仅使用 SSH（加密传输），禁用 Telnet/FTP 等明文协议；SSH 加固细节见四.3 与 04 号文章 23 节。

### 1.4 两种或以上鉴别技术（三级）

> **对应控制点**：GB/T 22239-2019 8.1.4.1 身份鉴别 a)~d)

三级系统应采用「口令 + 密钥/OTP/生物特征」等两种以上组合鉴别，且其中一种为密码技术。可落地方案：SSH 口令 + 密钥双认证（`AuthenticationMethods publickey,password`）、或接入堡垒机统一双因素认证。整改确有困难时，记录为部分符合并给出计划，不可简单判定不适用。

## 二、访问控制

> **对应控制点**：GB/T 22239-2019 8.1.4.2 访问控制 a)~g)
>
> **加固要点**：账户与权限一一对应、默认与多余账户已删除或停用、无共享账户、系统/安全/审计三类管理职责分离、关键文件与目录权限最小化、启用了强制访问控制（SELinux/AppArmor/Windows 完整性级别与 SACL）并达到用户级与文件级粒度 → 符合；有权限划分但存在越权账户、粒度不足或强制访问控制未启用 → 部分符合；统一使用超级账户运维、关键配置文件任意用户可写 → 不符合。
>
> **验证方法**：账户与组清单、权限查询输出（`ls -l`/`icacls`/`getfacl`）、默认账户处置记录、强制访问控制状态与策略输出、访问控制策略文档与授权审批记录、安全标记配置截图。

<div class="alert alert-warning" role="alert"><div class="h4 alert-heading" role="heading">高风险提示</div>


统一使用超级账户（`root`/`Administrator`）进行日常运维、系统与安全与审计三类管理职责未分离、关键鉴别信息文件（`/etc/shadow`、SAM）任意用户可读，或存在未处置的默认与共享账户时，属高风险线索；虚拟化平台管理账户权限未按角色最小化同样记录为高风险线索。

判定口径详见 [22、高风险判定指引与加固对照表](../../其他系统或设备/22高风险判定指引与加固对照表/)。

</div>


### 2.1 账户与权限分配（三权分组）

> **对应控制点**：GB/T 22239-2019 8.1.4.2 访问控制 a)~g)

**核查方法**

```bash
cat /etc/passwd
cat /etc/group
groups 用户名
```

**加固操作**

按职责建立组与账户，实现系统管理、安全管理、审计管理分离：

```bash
groupadd db        # 数据库运维组
groupadd server    # 业务服务组
groupadd security  # 安全管理组（含审计）

useradd -d /home/users/dbuser      -g db       dbuser
useradd -d /home/users/serveruser  -g server   serveruser
useradd -d /home/users/secuser     -g security secuser

passwd dbuser && passwd serveruser && passwd secuser

usermod -G wheel sysadmin          # 仅系统管理员可提权（wheel 组）
chmod 750 /home/server             # 目录按组收敛
chown :server /home/server
```

- 示例口令务必符合复杂度策略（如 `Dbuser@2021` 形式仅作格式示例，现场应现场生成强口令）。

### 2.2 默认账户与多余账户治理

> **对应控制点**：GB/T 22239-2019 8.1.4.2 访问控制 a)~g)

**核查方法**：`cat /etc/passwd | awk -F: '$7!~"nologin|false" {print $1}'`（可登录账户清单）。

**加固操作**

```bash
usermod -s /sbin/nologin 无用账户        # 停用
userdel -r 多余账户                      # 删除（含家目录）
passwd -l 用户名                         # 锁定（保留审计追溯时用锁定）
```

默认账户（如 root）不建议删除：改为禁止远程登录（见 2.4）并强化口令；确需改名的，同步修改 `/etc/passwd` 与 `/etc/shadow` 中对应行，并测试 sudo/su 链路。

### 2.3 最小权限与提权收敛

> **对应控制点**：GB/T 22239-2019 8.1.4.2 访问控制 a)d)f)（关键系统文件与目录权限、setuid/特权命令）
>
> **加固要点**：关键系统文件与目录（口令影子文件、启动脚本、审计配置、日志目录、Web 根目录）权限符合最小化要求，无全局可写文件，setuid/setgid 与特权命令清单已梳理并受控，普通用户无法读取鉴别信息 → 符合；权限基本合理但存在少量全局可写或未梳理的 setuid 程序 → 部分符合；鉴别信息文件任意用户可读、关键配置文件全局可写 → 不符合。
>
> **验证方法**：关键文件与目录权限输出、全局可写文件扫描结果、setuid/setgid 清单、特权命令使用审批记录、Windows 侧关键注册表项与 NTFS 权限截图。

**核查方法**：`grep -r "^ *ALL" /etc/sudoers /etc/sudoers.d/`。

**加固操作**：sudo 按命令白名单授权（`visudo`）：

```text
secadmin  ALL=(root) /usr/sbin/useradd, /usr/sbin/usermod, /usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd root
audadmin  ALL=(root) /usr/bin/less /var/log/*, /usr/bin/ausearch, /usr/bin/aureport, /bin/cat /var/log/*
```

### 2.4 禁止 root 远程登录

> **对应控制点**：GB/T 22239-2019 8.1.4.2 访问控制 a)~g)

**核查方法**

```bash
sshd -T | grep permitrootlogin
```

**加固操作**（`/etc/ssh/sshd_config`）：

```text
PermitRootLogin no
```

```bash
sshd -t && systemctl restart sshd
```

<div class="alert alert-warning" role="alert">

修改前确认有可用的普通管理员账户并能 sudo 提权，否则会失去管理入口。</div>


## 三、安全审计

> **对应控制点**：GB/T 22239-2019 8.1.4.3 安全审计 a)~d)
>
> **加固要点**：审计功能已启用且覆盖每个用户与重要安全事件（登录注销、权限变更、审计策略变更、系统异常）、记录含日期时间/用户/事件类型/成败四要素、审计记录受保护并定期备份、留存不少于 6 个月、审计进程受保护且非审计管理员不可中断 → 符合；开关已开但子类别不全、留存不足、仅本地存储无外发 → 部分符合；审计完全未启用且无日志审计系统或堡垒机替代 → 不符合（高风险）。
>
> **验证方法**：审计策略配置与生效截图（auditd 规则 / auditpol / 高级审核策略）、审计记录抽样（脱敏）、日志存放路径与权限、日志外发到 syslog/日志审计系统/SOC 的配置与收端截图、最早记录时间清单、清理与转存任务配置。

<div class="alert alert-warning" role="alert"><div class="h4 alert-heading" role="heading">高风险提示</div>


审计功能未启用且无日志审计系统、堡垒机或 SOC 等替代措施，或审计记录留存明显不足 6 个月，属高风险；非审计管理员可随意清空、篡改审计数据（日志目录全局可写、`auditd` 可被普通用户停止）时，审计不可抵赖性失效，同样按高风险处理。

判定口径详见 [22、高风险判定指引与加固对照表](../../其他系统或设备/22高风险判定指引与加固对照表/)。

</div>


### 3.1 启用 auditd 并覆盖用户与重要事件

> **对应控制点**：GB/T 22239-2019 8.1.4.3 安全审计 a)~d)

**核查方法**

```bash
systemctl status auditd
auditctl -s
```

**加固操作**

```bash
systemctl enable --now auditd
```

添加规则（`/etc/audit/rules.d/audit.rules`，`augenrules --load` 生效）：

```text
-w /etc/passwd   -p wa  -k identity
-w /etc/sudoers  -p wa  -k identity
-w /etc/my.cnf   -p wa  -k mysqlcfg
-a always,exit -F arch=b64 -S execve -k exec
-a always,exit -F arch=b64 -S chown -S fchown -S fchownat -S chmod -S fchmod -S fchmodat -k perm_mod
```

参数说明：`-w 路径` 监视文件；`-p wa` 监视写与属性变更（缺省为 rwxa）；`-k` 自定义关键字；`-a always,exit` 行为完成后记录；`-S` 系统调用名；`-F` 过滤条件。

- 预期现象：`auditctl -s` 显示 enabled=1、规则已加载；用户登录、口令修改、权限变更等事件均有记录。

### 3.2 审计记录内容

> **对应控制点**：GB/T 22239-2019 8.1.4.3 安全审计 a)~d)

**核查方法**

```bash
cat /var/log/audit/audit.log | tail -20
aureport --start today
```

- 判定标准：记录包含事件的日期时间（epoch 时间戳，aureport 可读化）、用户（uid/auid）、事件类型、成功与否，覆盖每个用户与重要安全事件。

### 3.3 审计记录保护与定期备份

> **对应控制点**：GB/T 22239-2019 8.1.4.3 安全审计 a)~d)

**核查方法**

```bash
ls -l /var/log/audit/
grep -E "rotate|^weekly" /etc/logrotate.conf
grep "@@" /etc/rsyslog.conf
```

**加固操作**

1. 权限收敛（仅审计员可读）：

```bash
chown root:security /var/log/audit/audit.log
chmod 640 /var/log/audit/audit.log
```

2. 转发至集中日志服务器（防本地删除/篡改，`/etc/rsyslog.conf`）：

```text
*.* @@192.168.10.20:514     # @@=TCP
```

```bash
systemctl restart rsyslog
```

3. 留存 ≥6 个月：`logrotate` weekly + rotate 26；auditd 侧 `max_log_file_action = keep_logs`。

### 3.4 审计进程保护

> **对应控制点**：GB/T 22239-2019 8.1.4.3 安全审计 a)~d)

**核查方法**：`systemctl status auditd`、`ps -ef | grep auditd`。

**加固操作**：auditd 由 systemd 托管、普通用户无法中断；将审计控制权限（读日志、管理规则）仅授予审计管理员（audadmin），系统管理员不得随意改审计规则——通过 sudo 白名单实现（见 2.3）。

## 四、入侵防范

> **对应控制点**：GB/T 22239-2019 8.1.4.4 入侵防范 a)~f)
>
> **加固要点**：遵循最小安装、非必要服务与默认共享已关闭、高危端口未对外开放、管理终端来源受限（防火墙规则/跳板机/堡垒机）、具备数据有效性检验、能发现已知漏洞并及时修补、重要节点部署入侵检测并可出示针对本主机的告警 → 符合；部分措施到位（如有主机防火墙但未限制管理来源、有漏扫无修补闭环）→ 部分符合；管理端口对全网开放、存在已知高危漏洞未修补、无任何入侵检测措施 → 不符合（高风险）。
>
> **验证方法**：已安装组件/角色清单、服务与监听端口输出、主机防火墙规则与拒绝实测、管理来源限制配置截图、补丁与漏洞修补记录、漏扫报告与整改工单、HIDS/EDR/NDR 部署与本主机告警截图。

<div class="alert alert-warning" role="alert"><div class="h4 alert-heading" role="heading">高风险提示</div>


存在已知高危漏洞未修补（含已停止官方支持的版本，如 CentOS 6/7、Windows Server 2008/2012、ESXi 6.x 及更早），或 SSH/RDP/管理端口未经边界限制直接对互联网开放，属高风险；从未开展漏洞扫描与基线核查亦按高风险线索记录。

判定口径详见 [22、高风险判定指引与加固对照表](../../其他系统或设备/22高风险判定指引与加固对照表/)。

</div>


### 4.1 最小安装

> **对应控制点**：GB/T 22239-2019 8.1.4.4 入侵防范 a)（遵循最小安装原则，关闭不需要的系统服务与默认共享）、e)（应能发现可能存在的已知漏洞并及时修补，补丁与软件来源须可控）
>
> **加固要点**：按业务需要最小化安装组件，卸载或禁用与业务无关的软件包与服务；软件与补丁来源必须可控——优先使用发行版官方仓库或厂商签名包，离线环境搭建本地镜像仓库并校验签名/GPG，禁止从不可信站点下载二进制直接部署；源码编译安装须留存来源、版本与编译参数记录并纳入资产与漏洞台账。卸载前先用 `rpm -e --test` / `apt-get -s remove` 预演依赖影响，避免连带移除业务组件。
>
> **验证方法**：`rpm -qa` / `dpkg -l` 导出已安装清单并与业务需要清单比对；`yum repolist` / `apt-cache policy` 确认仓库来源；`rpm -K 包名` 校验签名；`yum history` / `dnf history`、`/var/log/apt/history.log` 查看安装与回滚记录；卸载预演输出与变更记录归档。

<div class="alert alert-warning" role="alert"><div class="h4 alert-heading" role="heading">高风险提示</div>


主机安装了与业务无关的高风险组件（编译工具链、FTP/Telnet 服务、示例与测试程序），或软件与补丁来源于不可信站点且无签名校验，导致 8.1.4.4 入侵防范 a) 最小安装与 e) 漏洞修补同时失效，按高风险线索记录。

判定口径详见 [22、高风险判定指引与加固对照表](../../其他系统或设备/22高风险判定指引与加固对照表/)。

</div>


**核查方法**

```bash
rpm -qa | wc -l
rpm -qa | sort            # 对照部署方案清点
```

**加固操作**：按部署方案删除多余应用与组件（`yum remove 包名`）。完整操作见 [03、Linux安装软件的几种方法](../03linux安装软件的几种方法/)。

### 4.2 关闭不需要的系统服务与高危端口

> **对应控制点**：GB/T 22239-2019 8.1.4.4 入侵防范 a)~f)

**核查方法**

```bash
systemctl list-unit-files --type=service | grep enabled
ss -tlnp                          # 监听端口清单
```

**加固操作**

```bash
systemctl disable --now 无用服务名
```

以 iptables 屏蔽高危端口（需先确认业务未使用；firewalld 环境用 `firewall-cmd` 等价实现）：

```bash
yum install -y iptables-services
systemctl enable iptables

# /etc/sysconfig/iptables 追加（永久生效，重启后加载）
-A INPUT -p tcp --dport 445  -j DROP
-A INPUT -p tcp --dport 139  -j DROP
-A INPUT -p tcp --dport 3389 -j DROP
-A INPUT -p tcp -s 192.168.200.16 -j DROP    # 禁止特定来源访问

systemctl start iptables && iptables -nL    # 核验规则
```

常用参数：`-A` 追加规则链（INPUT/OUTPUT）、`-p` 协议（tcp/udp）、`--dport/--sport` 目的/源端口、`-j` 动作（ACCEPT/DROP）、`-s` 源地址。

<div class="alert alert-warning" role="alert">

iptables 与 firewalld 不宜并存：启用 iptables 前先 `systemctl disable --now firewalld`。临时测试用 `iptables -A INPUT -p tcp --dport 8080 -j DROP`（立即生效、需手工保存）。删除规则：`iptables -nL --line-number` 看行号后 `iptables -D INPUT 行号`。</div>


### 4.3 管理终端接入限制

> **对应控制点**：GB/T 22239-2019 8.1.4.4 入侵防范 a)~f)

**核查方法**

```bash
cat /etc/hosts.allow /etc/hosts.deny
sshd -T | grep -Ei "allowusers|allowaddress"
```

**加固操作**（hosts.allow 优先于 hosts.deny，后者可越过前者）：

```text
# /etc/hosts.allow
sshd:10.1.10.11:allow
sshd:192.168.1.0/255.255.255.0:allow

# /etc/hosts.deny
sshd:all:deny
```

或用 sshd 双重限制（推荐）：`AllowUsers sysadmin@192.168.10.*`。

### 4.4 漏洞发现与修补

> **对应控制点**：GB/T 22239-2019 8.1.4.4 入侵防范 a)~f)

**核查方法**：`sshd -V`、`rpm -q kernel openssh openssl`，对照漏洞库（CNVD/CNNVD/厂商通告）与漏扫报告。

**加固操作**：经测试评估后修补——`yum update --security` 或定点升级；补丁上线前在测试环境验证兼容性，并保留回退方案（见 [03、Linux安装软件的几种方法](../03linux安装软件的几种方法/) 的 dnf history 回滚）。

## 五、恶意代码防范

> **对应控制点**：GB/T 22239-2019 8.1.4.5 恶意代码防范 a)b)
>
> **加固要点**：主机已部署防恶意代码或 EDR 产品、特征库/规则库更新正常、实时防护开启且未排除关键目录、可出示查杀记录；三级亦可采用主动免疫可信验证机制替代 → 符合；已部署但病毒库长期未更新、实时防护关闭或大面积排除目录 → 部分符合；无任何防范措施 → 不符合。
>
> **验证方法**：防病毒/EDR 客户端状态与版本截图、病毒库版本与最后更新时间、实时防护与排除项配置、查杀与告警记录、集中管理控制台侧的本主机在册截图。

<div class="alert alert-warning" role="alert"><div class="h4 alert-heading" role="heading">高风险提示</div>


主机未部署任何防恶意代码或 EDR 措施，或已部署但特征库长期（超过 3 个月）未更新、实时防护处于关闭状态时，按高风险线索记录；虚拟化宿主机未部署防范措施且承载多台重要业务虚拟机时按高风险处理。

判定口径详见 [22、高风险判定指引与加固对照表](../../其他系统或设备/22高风险判定指引与加固对照表/)。

</div>


**核查方法**：`systemctl status clamd@scan 2>/dev/null` 或询问防病毒管理平台纳管情况。

**加固操作**（二选一，推荐 A）：

A. 纳入统一防病毒管理平台（企业版杀毒统一管控），客户端配置管理中心与定时病毒库更新。

B. 单机部署 ClamAV：

```bash
yum install -y clamav clamav-update
freshclam                                   # 更新病毒库（隔离网用离线库）
clamscan -r --quiet --infected /data        # 扫描业务目录
# 定时扫描 + 更新：crontab -e
0 2 * * * /usr/bin/freshclam --quiet
0 3 * * 0 /usr/bin/clamscan -r -i / >> /var/log/clamav/weekly-scan.log
```

- 判定标准：主机具备防恶意代码技术措施且病毒库为近期更新；仅安装但长期不更新病毒库判部分符合。无任何措施的可判高风险（结合业务暴露面）。

## 六、可信验证（三级）

> **对应控制点**：GB/T 22239-2019 8.1.4.6 可信验证
>
> **加固要点**：主机具备可信根（TPM/TCM）并启用系统引导程序、系统程序、重要配置参数与应用程序的可信验证，在关键执行环节进行动态验证，检测到破坏后报警并将验证结果形成审计记录送至安全管理中心 → 符合；具备可信根但未启用动态验证或未送安全管理中心 → 部分符合；无可信验证措施 → 不符合（多数现场属此档，须由机房与平台侧取证并写明边界）。
>
> **验证方法**：TPM/TCM 芯片与固件状态截图、可信软件基线与安全启动配置、动态验证与报警记录、送安全管理中心的对接证据、访谈纪要。

**核查方法**：核查是否具备基于可信根（TCM/TPM）的度量能力：`tpm2_getcap -c properties-fixed 2>/dev/null`、厂商可信支撑软件状态。

**加固操作**：启用服务器自带可信计算模块及配套软件，对系统引导程序、系统程序、重要配置参数做度量验证并将结果送安全管理中心。

- 判定口径：未部署可信根相关组件的，一般判「不适用」需在报告中说明单位整体可信建设规划；已部署未开启的判不符合。常见误区：把「未采购可信服务器」直接写不符合——应结合定级场景与产业实际综合判定。

## 七、数据完整性

> **对应控制点**：GB/T 22239-2019 8.1.4.7 数据完整性 a)b)
>
> **加固要点**：传输侧对鉴别数据、重要业务数据、重要审计数据、重要配置数据采用校验技术或密码技术保护且不可降级；存储侧有哈希基线、校验字段或完整性监控并定期比对 → 符合；仅传输侧保护、或校验参数可协商降级、或仅个别配置文件有基线 → 部分符合；传输与存储均无完整性保护 → 不符合。
>
> **验证方法**：传输协议与加密/校验参数截图、抓包结果（脱敏）、完整性算法与密钥长度清单、哈希基线文件与比对记录、第三方完整性监控（FIM/HIDS）说明与告警。

**核查方法**：核查重要数据（鉴别信息、配置、业务数据）传输与存储是否校验。

**加固操作**

- 传输通道加密：SSH/TLS（远程管理、rsync over ssh、HTTPS），杜绝明文协议承载重要数据；
- 存储完整性：重要配置与备份文件建立 SHA-256 校验基线：

```bash
sha256sum /etc/passwd /etc/shadow /etc/ssh/sshd_config > /root/integrity.baseline
sha256sum -c /root/integrity.baseline        # 定期校验（可入 crontab）
```

## 八、数据保密性

> **对应控制点**：GB/T 22239-2019 8.1.4.8 数据保密性 a)b)
>
> **加固要点**：鉴别数据以强算法加盐存储（不存在 LM/NTLMv1、明文口令、DES/MD5 等已废弃算法），重要业务数据与个人信息在传输与存储环节采用密码技术保护，密钥管理可控 → 符合；仅传输侧加密而存储侧明文、或加密算法强度不足、或密钥与密文同机存放 → 部分符合；鉴别数据使用弱算法或重要数据全程明文 → 不符合。
>
> **验证方法**：口令存储格式与算法查询输出、磁盘/文件系统加密配置（BitLocker/LUKS/dm-crypt）、应用侧或数据库侧加密配置、证书与密钥管理截图、算法清单与选型说明、抓包结果（脱敏）。

<div class="alert alert-warning" role="alert"><div class="h4 alert-heading" role="heading">高风险提示</div>


鉴别数据仍以已废弃的弱算法存储（LM/NTLMv1、明文、DES、MD5、无盐 SHA1），或重要业务数据与个人信息明文存储且无任何加密措施，属高风险线索；密钥与密文同机同目录存放导致加密失效时同样记录。

判定口径详见 [22、高风险判定指引与加固对照表](../../其他系统或设备/22高风险判定指引与加固对照表/)。

</div>


**核查方法**：重要数据传输是否全程加密；鉴别信息是否明文存储。

**加固操作**

- 传输：管理流量走 SSH/TLS；业务传输启用 TLS（见 12 号、14 号数据库篇）；
- 存储：`/etc/shadow` 口令为哈希存储（默认）；敏感分区可用 LUKS 加密：

```bash
cryptsetup luksFormat /dev/sdb1              # 初始化加密卷（数据会清空，先备份）
cryptsetup luksOpen /dev/sdb1 securedata
mkfs.xfs /dev/mapper/securedata && mount /dev/mapper/securedata /data
```

- 鉴别信息不得出现在脚本、history 与日志中（配合 9.1）。

## 九、数据备份恢复

> **对应控制点**：GB/T 22239-2019 8.1.4.9 数据备份恢复 a)~c)
>
> **加固要点**：有本地备份任务与近期备份产物且有恢复演练记录、有异地实时或定时备份链路、关键业务系统具备热冗余（集群/双机/虚拟化 HA）并可演示切换 → 符合；有备份产物但从未真实恢复验证、异地周期过长、有冗余架构无切换演练 → 部分符合；无备份措施或单机单副本且无异地副本 → 不符合（高风险）。
>
> **验证方法**：备份脚本或作业配置截图、备份产物清单（含时间戳与大小）、恢复演练记录、异地备份拓扑与同步状态输出、集群/HA 配置与切换演练记录。

<div class="alert alert-warning" role="alert"><div class="h4 alert-heading" role="heading">高风险提示</div>


无任何本地备份措施，或备份与主机同机同磁盘存放（主机故障即备份同时失效），属高风险；仅有备份产物但从未做过恢复演练时按部分符合并记为高风险线索。

判定口径详见 [22、高风险判定指引与加固对照表](../../其他系统或设备/22高风险判定指引与加固对照表/)。

</div>


### 9.1 本地备份与恢复

> **对应控制点**：GB/T 22239-2019 8.1.4.9 数据备份恢复 a)~c)

**核查方法**：`crontab -l` 是否有备份任务；抽查备份文件时间与可恢复性。

**加固操作**

```bash
mkdir -p /backup
tar -czf /backup/app_$(date +%F).tar.gz /data/app && chmod 600 /backup/app_*.tar.gz
# crontab：每日 1:00 全量（示例）
0 1 * * * /usr/bin/tar -czf /backup/app_$(date +\%F).tar.gz /data/app
```

数据库类数据用对应工具（mysqldump/xtrabackup 等，见 12 号）。

### 9.2 异地备份（三级）与热冗余

> **对应控制点**：GB/T 22239-2019 8.1.4.9 数据备份恢复 a)~c)

- 将备份同步至异地/备份中心（rsync over ssh 或对象存储）：

```bash
rsync -az --delete -e "ssh -p 22" /backup/ backup@192.168.20.10:/backup/host1/
```

- 关键业务系统应有热冗余（双机/集群/虚拟化 HA），核查 `pcs status` 或虚拟化平台 HA 配置；
- **判定标准**：有本地备份+定期恢复演练记录为基本符合；三级应另有异地备份与热冗余措施。

## 十、剩余信息保护

> **对应控制点**：GB/T 22239-2019 8.1.4.10 剩余信息保护 a)b)
>
> **加固要点**：鉴别信息与敏感数据所在存储空间在释放或重新分配前有可验证的清除机制（账户删除即清理其口令散列、磁盘/分区安全擦除、加密卷销毁密钥、虚拟机删除时清理磁盘文件），且备份介质与报废设备纳入清除范围 → 符合；仅有逻辑删除未做清除验证，或备份介质、退役磁盘未纳入 → 部分符合；无任何清除机制 → 不符合。
>
> **验证方法**：账户删除与口令散列清理验证记录、磁盘擦除工具与操作记录、加密卷密钥销毁流程、虚拟机/存储删除策略截图、报废介质销毁台账。

<div class="alert alert-warning" role="alert"><div class="h4 alert-heading" role="heading">高风险提示</div>


删除账户或虚拟机后未做任何清除验证，且磁盘、存储介质报废或外送维修前无擦除与销毁记录时，鉴别信息与敏感数据存在可恢复风险，按高风险线索记录。

判定口径详见 [22、高风险判定指引与加固对照表](../../其他系统或设备/22高风险判定指引与加固对照表/)。

</div>


**核查方法**

```bash
grep -E "HISTSIZE|HISTFILE" /etc/profile ~/.bashrc
ls -l ~/.bash_history
```

**加固操作**

```bash
# 会话结束不保留历史命令（鉴别信息与敏感操作不入盘）
echo 'export HISTSIZE=0' >> /etc/profile
# 或保留但退出即清空：echo 'export HISTFILESIZE=0' >> ~/.bash_logout
```

- 存储介质报废或重新分配前用 `shred -vu -n 3 文件` / `wipefs` 彻底清除鉴别信息与敏感数据；
- 关闭含敏感信息文件句柄后确认空间释放（`lsof | grep deleted`）。

## 十一、个人信息保护

> **对应控制点**：GB/T 22239-2019 8.1.4.11 个人信息保护 a)b)
>
> **加固要点**：仅采集与保存业务必需的个人信息且有字段清单与制度支撑、个人信息所在目录/文件/数据库对象有独立授权且实测非授权账户无法访问、展示与导出环节有脱敏与留痕 → 符合；存在非必要字段但有清理计划，或有授权控制但备份文件未纳入管控 → 部分符合；超范围采集无制度，或非授权账户可直接读取 → 不符合（高风险）。
>
> **验证方法**：个人信息字段清单与分布说明、采集必要性说明与管理制度、目录与文件权限输出、非授权访问实测记录、脱敏与导出审计记录、访谈纪要。

<div class="alert alert-warning" role="alert"><div class="h4 alert-heading" role="heading">高风险提示</div>


非授权账户或低权限账户实测可直接读取承载个人信息的文件、目录、数据库与备份，属高风险；超范围采集个人信息且无字段清单与保护制度时同样按高风险处理。

判定口径详见 [22、高风险判定指引与加固对照表](../../其他系统或设备/22高风险判定指引与加固对照表/)。

</div>


主机层面一般不直接处理个人信息采集与使用，本控制点主要由应用系统落实（见 20 号）。主机侧配合项：限制业务数据库文件的系统层访问权限、日志脱敏（避免口令/身份证号等写入日志）。

## 测评项对照表

| 控制点（GB/T 22239-2019 安全计算环境-主机） | 对应章节 |
| --- | --- |
| 8.1.4.1 身份鉴别 a)~d) | 一 |
| 8.1.4.2 访问控制 | 二 |
| 8.1.4.3 安全审计 a)~d) | 三 |
| 8.1.4.4 入侵防范 a)~d) | 四 |
| 8.1.4.5 恶意代码防范 | 五 |
| 8.1.4.6 可信验证 | 六 |
| 8.1.4.7 数据完整性 | 七 |
| 8.1.4.8 数据保密性 | 八 |
| 8.1.4.9 数据备份恢复 | 九 |
| 8.1.4.10 剩余信息保护 | 十 |
| 8.1.4.11 个人信息保护 | 十一 |

## 参考依据

- GB/T 22239-2019《信息安全技术 网络安全等级保护基本要求》（8.1.4 安全计算环境全部 11 个控制点（主机与操作系统））：[http://openstd.samr.gov.cn/bzgk/gb/newGbInfo?hcno=BAFB47E8874764186BDB7865E8344DAF](http://openstd.samr.gov.cn/bzgk/gb/newGbInfo?hcno=BAFB47E8874764186BDB7865E8344DAF)
- GB/T 28448-2019《信息安全技术 网络安全等级保护测评要求》（测评对象边界认定、单元测评实施与结果判定：符合/部分符合/不符合/不适用）：[http://openstd.samr.gov.cn/bzgk/gb/newGbInfo?hcno=7E736CDF4502B6FF1258DD250AA3EC8C](http://openstd.samr.gov.cn/bzgk/gb/newGbInfo?hcno=7E736CDF4502B6FF1258DD250AA3EC8C)
- GB/T 22240-2020《信息安全技术 网络安全等级保护定级指南》、GB/T 25070-2019《安全设计技术要求》、GB/T 28449-2018《测评过程指南》，可在全国标准信息公共服务平台检索：[http://openstd.samr.gov.cn/bzgk/gb/](http://openstd.samr.gov.cn/bzgk/gb/)
- Red Hat Enterprise Linux 官方文档入口（Security Hardening / PAM / SELinux）：[https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/](https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/)
- Linux man-pages（man7.org，rpm/yum/pam/sshd/auditctl 手册页）：[https://man7.org/linux/man-pages/](https://man7.org/linux/man-pages/)
- 《网络安全等级保护测评高风险判定指引》（中关村信息安全测评联盟团体标准）——高风险情形判定口径，站内对照表：[22、高风险判定指引与加固对照表](../../其他系统或设备/22高风险判定指引与加固对照表/)
- 命令核验说明：Linux 命令以 man7.org 手册页与 Red Hat Enterprise Linux 官方文档核验（核验日期 2026-09-02）。五处须留意：① 登录失败模块按版本二选一——CentOS/RHEL 7 及更早用 `pam_tally2`，RHEL 8+/CentOS Stream/麒麟 V10/openEuler 用 `pam_faillock`（配置在 `/etc/security/faillock.conf`），两者混配会导致计数不生效；② RHEL 8+ 的 PAM 栈由 `authselect` 管理，直接编辑 `/etc/pam.d/system-auth` 的改动可能被覆盖，应使用 `authselect select` 与 `authselect enable-feature with-faillock`；③ 口令复杂度的生效路径按发行版不同——RHEL 系为 `/etc/security/pwquality.conf` 与 `/etc/pam.d/system-auth`，Debian/UOS 系为 `/etc/pam.d/common-password`，须核对实际生效文件；④ `/etc/login.defs` 的 `PASS_MAX_DAYS` 只影响此后新建或再改口令的账户，存量账户须 `chage -M 90 用户名` 逐个生效，这是最高频的整改回退点；⑤ 将 `HISTSIZE=0` 用于剩余信息保护会与 8.1.4.3 安全审计的可追溯要求冲突（正常运维命令留痕同时被清除），生产系统建议改为「保留历史 + 定期转存审计 + 敏感操作不入历史」，实施前与审计管理员确认。CentOS 7 已于 2024-06-30 停止维护，整改时应同步提出迁移至受支持发行版的计划。

## 关联文章

- 本板块相关篇：[04、Linux主机加固操作手册](../04linux主机加固操作手册/)、[05、Windows操作系统安全加固](../05windows操作系统安全加固/)、[07、CentOS操作系统安全加固](../07centos操作系统安全加固/)、[03、Linux安装软件的几种方法](../03linux安装软件的几种方法/)
- [Linux 操作系统测评命令（现场取证速查）](../../../gradeprotection/服务器/16linux操作系统测评命令/)
- [CentOS 操作系统测评（方法与判定标准）](../../../gradeprotection/服务器/36centos操作系统测评/)
- [Linux(RHEL/CentOS) 三级现场测评命令单](../../../gradeprotection/服务器/三级现场测评命令单/linuxrhel_centos-三级等保现场测评命令单/)
- [麒麟操作系统加固（国产 Linux 对照）](../../终端/13麒麟操作系统加固/)
- 板块目录：[服务器](/wikis/docs/reinforce/%E6%9C%8D%E5%8A%A1%E5%99%A8/)
- 通用加固方案：[17、加固方案总纲](../../其他系统或设备/17网络设备安全设备服务器数据库和应用系统的加固方案/)
- 取证记录模板：[16、安全评估加固记录表3.0](../../其他系统或设备/16安全评估加固记录表3.0/)
- 高风险判定口径：[22、高风险判定指引与加固对照表](../../其他系统或设备/22高风险判定指引与加固对照表/)
