# Linux(RHEL_CentOS)-三级现场测评命令单

> RHEL 7.9 / CentOS 7.9 服务器三级等保现场测评取证命令单：/etc/redhat-release、/proc/version、hostnamectl 与 ip addr 版本与网络核查，/etc/passwd、/etc/shadow、/etc/login.defs、/etc/pam.d/system-auth、/etc/pam.d/password-auth、/etc/security/pwquality.conf 与 chage -l 账户口令策略核查，sshd_config 远程接入控制核查，以及安全审计、访问控制与地址限制、服务端口与边界防护、最小安装补丁与中间件、时钟与计划任务、入侵防范、安全基线与完整性核查。

---

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

---

> 示例版本：RHEL 7.9 / CentOS 7.9
> 定位：三级等保现场测评取证命令单，按功能小节组织核查命令、预期现象与判定要点。
> 配套速查：控制点组织的速查与增量清单版见 [16、Linux操作系统测评命令](../16linux操作系统测评命令/)。

## 系统版本核查

```bash
cat /etc/redhat-release
```
- 预期现象：输出中通常包含 release 7.9 等版本关键字。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">CentOS Linux release 7.9.2009 <span class="o">(</span>Core<span class="o">)</span>
</span></span></code></pre></div>
</details>


```bash
cat /proc/version
```
- 预期现象：输出中通常包含 3.10.0-1160 等内核关键字段。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">Linux version 3.10.0-1160.el7.x86_64 <span class="o">(</span>builder@kbuilder.dev.centos.org<span class="o">)</span> <span class="o">(</span>gcc version 4.8.5 <span class="m">20150623</span> <span class="o">(</span>Red Hat 4.8.5-44<span class="o">)</span> <span class="o">(</span>GCC<span class="o">)</span> <span class="o">)</span> <span class="c1">#1 SMP Mon Oct 19 16:18:59 UTC 2020</span>
</span></span></code></pre></div>
</details>


```bash
hostnamectl
```
- 预期现象：通常可见 Static hostname、Operating System、Kernel 等字段。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">   Static hostname: web01
</span></span><span class="line"><span class="cl">         Icon name: computer-server
</span></span><span class="line"><span class="cl">           Chassis: server
</span></span><span class="line"><span class="cl">Operating System: CentOS Linux <span class="m">7</span> <span class="o">(</span>Core<span class="o">)</span>
</span></span><span class="line"><span class="cl">     CPE OS Name: cpe:/o:centos:centos:7
</span></span><span class="line"><span class="cl">          Kernel: Linux 3.10.0-1160.el7.x86_64
</span></span><span class="line"><span class="cl">    Architecture: x86-64
</span></span></code></pre></div>
</details>


- 对应控制点：GB/T 22239-2019 8.1.4.4 安全计算环境-入侵防范（系统版本、最小安装与补丁基线的版本确认）。
- 判定要点：版本与内核信息和资产台账一致、系统仍在官方支持期内且有近期补丁更新记录判符合；版本已停止维护（EOL）或长期未更新判部分符合/不符合。
- 取证要求：cat /etc/redhat-release、hostnamectl 输出截图或文本留存，补丁更新来源与周期的访谈纪要。

## 网络配置核查

```bash
ip addr
```
- 预期现象：应能看到网卡、IP 地址、掩码等信息；实际地址随主机而异。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">1: lo: &lt;LOOPBACK,UP,LOWER_UP&gt; mtu <span class="m">65536</span> qdisc noqueue state UNKNOWN group default qlen <span class="m">1000</span>
</span></span><span class="line"><span class="cl">    inet 127.0.0.1/8 scope host lo
</span></span><span class="line"><span class="cl">2: eth0: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu <span class="m">1500</span> qdisc mq state UP group default qlen <span class="m">1000</span>
</span></span><span class="line"><span class="cl">    inet 192.168.10.21/24 brd 192.168.10.255 scope global noprefixroute eth0
</span></span></code></pre></div>
</details>


- 对应控制点：GB/T 22239-2019 8.1.2 安全通信网络-网络架构（确认主机网络接入位置与地址信息），并为 8.1.3.2 安全区域边界-访问控制提供地址边界基础。
- 判定要点：地址信息与网络拓扑、资产台账一致且无多余地址或多余网卡判符合；地址与边界访问控制策略不匹配判部分符合。
- 取证要求：ip addr 输出截图，与网络拓扑/资产台账的对应关系说明。

## 账户与口令策略核查

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


本节命令均为只读取证。整改时修改 `/etc/pam.d/system-auth`、`/etc/pam.d/password-auth` 属于改 PAM 的高风险操作：模块行顺序或语法错误可能导致包括 root 在内的全部账户无法登录。修改前备份原文件、保留已登录会话，并按 RHEL 7 Security Guide 4.1.2（pam_faillock）步骤验证后，再关闭旧会话。
</div>


```bash
cat /etc/passwd
```
- 预期现象：应列出本地账户信息，每行一个账户。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">root:x:0:0:root:/root:/bin/bash
</span></span><span class="line"><span class="cl">bin:x:1:1:bin:/bin:/sbin/nologin
</span></span><span class="line"><span class="cl">...
</span></span><span class="line"><span class="cl">appuser:x:1000:1000::/home/appuser:/bin/bash
</span></span></code></pre></div>
</details>


```bash
cat /etc/shadow
```
- 预期现象：应列出口令散列和口令状态，通常需要 root 权限。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">root:<span class="nv">$6$rounds</span><span class="o">=</span>4096<span class="nv">$AbCdEf$XyZ1234567890abcdef</span>…:19876:7:90:7:30:::
</span></span><span class="line"><span class="cl">bin:*:17832:0:99999:7:::
</span></span><span class="line"><span class="cl">...
</span></span><span class="line"><span class="cl">appuser:<span class="nv">$6$rounds</span><span class="o">=</span>4096<span class="nv">$GhIjKl$0987654321</span>fedcba…:19876:0:90:7:30:::
</span></span></code></pre></div>
</details>


```bash
cat /etc/login.defs
```
- 预期现象：应能看到 PASS_MAX_DAYS、PASS_MIN_DAYS、PASS_MIN_LEN 等口令老化字段。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">PASS_MAX_DAYS	<span class="m">90</span>
</span></span><span class="line"><span class="cl">PASS_MIN_DAYS	<span class="m">7</span>
</span></span><span class="line"><span class="cl">PASS_MIN_LEN	<span class="m">12</span>
</span></span><span class="line"><span class="cl">PASS_WARN_AGE	<span class="m">14</span>
</span></span></code></pre></div>
</details>


- 注意：login.defs(5) 明确 PASS_MAX_DAYS、PASS_MIN_DAYS、PASS_WARN_AGE 仅在创建账户时生效，存量账户以 chage -l 实际值为准；PASS_MIN_LEN 在 PAM 环境下已由 pam_pwquality 的 minlen 取代、不再实际生效，易误判为复杂度未配置。

```bash
cat /etc/pam.d/system-auth
```
- 预期现象：应能看到口令复杂度或认证模块配置，如 pam_pwquality、pam_unix 等。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">auth        required      pam_faillock.so preauth audit silent <span class="nv">deny</span><span class="o">=</span><span class="m">5</span> <span class="nv">unlock_time</span><span class="o">=</span><span class="m">600</span>
</span></span><span class="line"><span class="cl">...
</span></span><span class="line"><span class="cl">password    requisite     pam_pwquality.so try_first_pass local_users_only <span class="nv">retry</span><span class="o">=</span><span class="m">3</span>
</span></span><span class="line"><span class="cl">password    sufficient    pam_unix.so sha512 shadow nullok try_first_pass use_authtok
</span></span><span class="line"><span class="cl">...
</span></span></code></pre></div>
</details>


```bash
cat /etc/pam.d/password-auth
```
- 预期现象：应能看到登录认证与失败处理相关模块，如 faillock 或等效配置。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">auth        required      pam_faillock.so preauth audit silent <span class="nv">deny</span><span class="o">=</span><span class="m">5</span> <span class="nv">unlock_time</span><span class="o">=</span><span class="m">600</span>
</span></span><span class="line"><span class="cl">...
</span></span><span class="line"><span class="cl">password    sufficient    pam_unix.so sha512 shadow nullok try_first_pass use_authtok
</span></span><span class="line"><span class="cl">...
</span></span><span class="line"><span class="cl">session     required      pam_loginuid.so
</span></span></code></pre></div>
</details>


```bash
cat /etc/security/pwquality.conf
```
- 预期现象：应能看到 minlen、ucredit、lcredit、dcredit 等复杂度参数。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="nv">minlen</span> <span class="o">=</span> <span class="m">12</span>
</span></span><span class="line"><span class="cl"><span class="nv">dcredit</span> <span class="o">=</span> -1
</span></span><span class="line"><span class="cl"><span class="nv">ucredit</span> <span class="o">=</span> -1
</span></span><span class="line"><span class="cl"><span class="nv">lcredit</span> <span class="o">=</span> -1
</span></span><span class="line"><span class="cl"><span class="nv">ocredit</span> <span class="o">=</span> -1
</span></span><span class="line"><span class="cl"><span class="nv">maxrepeat</span> <span class="o">=</span> <span class="m">3</span>
</span></span></code></pre></div>
</details>


```bash
chage -l root
```
- 预期现象：应显示最近改密时间、失效时间、最短/最长口令使用期限等。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">最近一次密码修改时间：3月 15, <span class="m">2026</span>
</span></span><span class="line"><span class="cl">密码过期时间：6月 13, <span class="m">2026</span>
</span></span><span class="line"><span class="cl">密码失效时间：从不
</span></span><span class="line"><span class="cl">...
</span></span><span class="line"><span class="cl">最少数量的天数：密码修改之间间隔的天数：7
</span></span><span class="line"><span class="cl">最多数量的天数：密码修改之间间隔的最大天数：90
</span></span></code></pre></div>
</details>


- 对应控制点：GB/T 22239-2019 8.1.4.1 安全计算环境-身份鉴别（a 口令复杂度与定期更换、b 登录失败处理）。
- 判定要点：口令长度/复杂度/有效期策略已配置且实际生效（chage 与 shadow 值一致）、登录失败锁定有效、无空口令账户判符合；仅配置未实际生效判部分符合；存在空口令或完全无失败处理判不符合。
- 取证要求：/etc/login.defs、/etc/security/pwquality.conf 与 PAM 配置导出，chage -l 输出截图，口令策略访谈纪要。
- 高风险提示：存在空口令、弱口令、通用口令或口令长期不更换属高风险情形，参见 [22、高风险判定指引与加固对照表](../../../reinforce/其他系统或设备/22高风险判定指引与加固对照表/)。

## 远程接入控制核查

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


核查命令均为只读。整改时修改 `/etc/ssh/sshd_config` 可能导致远程失联：修改前保留现有 SSH 会话，先以 `sshd -t` 校验语法，再用新连接验证成功后方可退出旧会话；严禁在仅剩一条远程通道时直接重启 sshd，或改用 telnet 等明文协议替代。
</div>


```bash
cat /etc/ssh/sshd_config
```
- 预期现象：应能核查 PermitRootLogin、PermitEmptyPasswords、ClientAliveInterval 等参数。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">PermitRootLogin no
</span></span><span class="line"><span class="cl">PermitEmptyPasswords no
</span></span><span class="line"><span class="cl">MaxAuthTries <span class="m">4</span>
</span></span><span class="line"><span class="cl">ClientAliveInterval <span class="m">300</span>
</span></span><span class="line"><span class="cl">ClientAliveCountMax <span class="m">2</span>
</span></span><span class="line"><span class="cl">AllowUsers appuser opsadmin
</span></span><span class="line"><span class="cl">...
</span></span></code></pre></div>
</details>


```bash
sshd -T | egrep 'ciphers|macs|kexalgorithms|hostkeyalgorithms|pubkeyaccepted(keytypes|algorithms)'
```
- 预期现象：应输出 SSH 服务端当前生效的加密算法、MAC、密钥交换和主机密钥算法。
- 注意：sshd -T 需 root 执行（需读取主机私钥）；OpenSSH 7.4（RHEL/CentOS 7 默认版本）输出关键字为 pubkeyacceptedkeytypes，8.5 起才更名为 pubkeyacceptedalgorithms，故用 egrep 同时匹配两种写法；7.4 不支持以 rsa-sha2-* 作为主机密钥算法名。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">ciphers aes256-gcm@openssh.com,aes128-gcm@openssh.com,aes256-ctr,aes192-ctr,aes128-ctr
</span></span><span class="line"><span class="cl">macs hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com
</span></span><span class="line"><span class="cl">kexalgorithms curve25519-sha256@libssh.org,diffie-hellman-group14-sha256
</span></span><span class="line"><span class="cl">hostkeyalgorithms ecdsa-sha2-nistp256,ssh-ed25519,ssh-rsa
</span></span><span class="line"><span class="cl">pubkeyacceptedkeytypes ecdsa-sha2-nistp256,ssh-ed25519,ssh-rsa
</span></span><span class="line"><span class="cl"><span class="o">(</span>节选；实际取值随 crypto-policies 策略与 OpenSSH 版本而异<span class="o">)</span>
</span></span></code></pre></div>
</details>


```bash
ssh -Q cipher
```
- 预期现象：应列出本机 OpenSSH 支持的对称加密算法。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">aes128-cbc
</span></span><span class="line"><span class="cl">aes128-ctr
</span></span><span class="line"><span class="cl">aes192-ctr
</span></span><span class="line"><span class="cl">aes256-ctr
</span></span><span class="line"><span class="cl">...
</span></span><span class="line"><span class="cl">aes128-gcm@openssh.com
</span></span><span class="line"><span class="cl">aes256-gcm@openssh.com
</span></span></code></pre></div>
</details>


```bash
ssh -Q mac
```
- 预期现象：应列出本机 OpenSSH 支持的 MAC 算法。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">hmac-sha1
</span></span><span class="line"><span class="cl">hmac-sha2-256
</span></span><span class="line"><span class="cl">hmac-sha2-512
</span></span><span class="line"><span class="cl">...
</span></span><span class="line"><span class="cl">hmac-sha2-256-etm@openssh.com
</span></span><span class="line"><span class="cl">hmac-sha2-512-etm@openssh.com
</span></span></code></pre></div>
</details>


```bash
ssh -Q kex
```
- 预期现象：应列出本机 OpenSSH 支持的密钥交换算法。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">diffie-hellman-group14-sha1
</span></span><span class="line"><span class="cl">diffie-hellman-group14-sha256
</span></span><span class="line"><span class="cl">diffie-hellman-group16-sha512
</span></span><span class="line"><span class="cl">curve25519-sha256
</span></span><span class="line"><span class="cl">curve25519-sha256@libssh.org
</span></span></code></pre></div>
</details>


```bash
ssh -Q key
```
- 预期现象：应列出本机 OpenSSH 支持的主机密钥/公钥算法。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">ssh-ed25519
</span></span><span class="line"><span class="cl">ecdsa-sha2-nistp256
</span></span><span class="line"><span class="cl">ecdsa-sha2-nistp384
</span></span><span class="line"><span class="cl">ssh-rsa
</span></span><span class="line"><span class="cl">rsa-sha2-256
</span></span><span class="line"><span class="cl">rsa-sha2-512
</span></span></code></pre></div>
</details>


```bash
ssh -V
```
- 预期现象：应输出 OpenSSH 版本号。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">OpenSSH_7.4p1, OpenSSL 1.0.2k-fips  <span class="m">26</span> Jan <span class="m">2017</span>
</span></span></code></pre></div>
</details>


```bash
update-crypto-policies --show
```
- 预期现象：在支持该机制的系统中应显示系统级密码策略，如 DEFAULT、FUTURE、FIPS；crypto-policies 自 RHEL 7.4 引入，更早版本无此命令。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">DEFAULT
</span></span></code></pre></div>
</details>


```bash
ps -ef | grep sshd
```
- 预期现象：启用 SSH 时通常可见 sshd 进程。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">root       <span class="m">1123</span>      <span class="m">1</span>  <span class="m">0</span>  <span class="m">2025</span> ?        00:01:23 /usr/sbin/sshd -D
</span></span><span class="line"><span class="cl">root     <span class="m">456789</span>  <span class="m">123456</span>  <span class="m">0</span> 10:02 ?        00:00:00 sshd: appuser <span class="o">[</span>priv<span class="o">]</span>
</span></span><span class="line"><span class="cl">appuser  <span class="m">456791</span>  <span class="m">456789</span>  <span class="m">0</span> 10:02 ?        00:00:00 sshd: appuser@pts/0
</span></span></code></pre></div>
</details>


```bash
ps -ef | grep telnet
```
- 预期现象：未启用 Telnet 时通常除 grep 本身外无有效结果。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">root     <span class="m">567890</span>  <span class="m">456789</span>  <span class="m">0</span> 10:03 pts/0    00:00:00 grep --color<span class="o">=</span>auto telnet
</span></span></code></pre></div>
</details>


```bash
systemctl status telnet.socket
```
- 预期现象：应显示 active、inactive、disabled 等状态之一。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">● telnet.socket
</span></span><span class="line"><span class="cl">   Loaded: loaded <span class="o">(</span>/usr/lib/systemd/system/telnet.socket<span class="p">;</span> disabled<span class="p">;</span> vendor preset: disabled<span class="o">)</span>
</span></span><span class="line"><span class="cl">   Active: inactive <span class="o">(</span>dead<span class="o">)</span>
</span></span><span class="line"><span class="cl">   Listen: <span class="o">[</span>::<span class="o">]</span>:23 <span class="o">(</span>Stream<span class="o">)</span>
</span></span></code></pre></div>
</details>


```bash
cat /etc/profile
```
- 预期现象：应能核查 TMOUT 等登录超时参数。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="k">if</span> <span class="o">[</span> <span class="nv">$UID</span> -gt <span class="m">199</span> <span class="o">]</span> <span class="o">&amp;&amp;</span> <span class="o">[</span> <span class="s2">&#34;`id -gn`&#34;</span> <span class="o">=</span> <span class="s2">&#34;`id -un`&#34;</span> <span class="o">]</span><span class="p">;</span> <span class="k">then</span>
</span></span><span class="line"><span class="cl">    <span class="nb">umask</span> <span class="m">002</span>
</span></span><span class="line"><span class="cl"><span class="k">else</span>
</span></span><span class="line"><span class="cl">    <span class="nb">umask</span> <span class="m">022</span>
</span></span><span class="line"><span class="cl"><span class="k">fi</span>
</span></span><span class="line"><span class="cl"><span class="nb">export</span> <span class="nv">TMOUT</span><span class="o">=</span><span class="m">600</span>
</span></span><span class="line"><span class="cl"><span class="nb">readonly</span> TMOUT
</span></span></code></pre></div>
</details>


- 对应控制点：GB/T 22239-2019 8.1.4.1 安全计算环境-身份鉴别（c 远程管理通道加密防窃听）、8.1.4.2 访问控制（登录账户与来源范围限制）。
- 判定要点：仅启用 SSH（未启用 telnet/rsh 等明文协议）、root 不能直接口令登录、算法无弱项、会话超时已配置判符合；存在 telnet 等明文远程通道判不符合；算法含弱项或未配置超时判部分符合。
- 取证要求：sshd_config 关键项与 sshd -T 输出截图，telnet 进程/套接字检查结果，/etc/profile TMOUT 配置，远程运维方式访谈纪要。
- 高风险提示：使用 telnet 等明文协议远程管理属高风险情形，参见 [22、高风险判定指引与加固对照表](../../../reinforce/其他系统或设备/22高风险判定指引与加固对照表/)。


## 安全审计核查

```bash
service rsyslog status
```
- 预期现象：应显示日志服务运行状态，常见为 running 或 active。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">Redirecting to /bin/systemctl status rsyslog.service
</span></span><span class="line"><span class="cl">● rsyslog.service - System Logging Service
</span></span><span class="line"><span class="cl">   Loaded: loaded <span class="o">(</span>/usr/lib/systemd/system/rsyslog.service<span class="p">;</span> enabled<span class="p">;</span> vendor preset: enabled<span class="o">)</span>
</span></span><span class="line"><span class="cl">   Active: active <span class="o">(</span>running<span class="o">)</span> since Mon 2026-08-24 08:30:11 CST<span class="p">;</span> 2h 15min ago
</span></span><span class="line"><span class="cl"> Main PID: <span class="m">1088</span> <span class="o">(</span>rsyslogd<span class="o">)</span>
</span></span></code></pre></div>
</details>


```bash
service auditd status
```
- 预期现象：应显示审计服务运行状态，常见为 running 或 active。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">Redirecting to /bin/systemctl status auditd.service
</span></span><span class="line"><span class="cl">● auditd.service - Security Auditing Service
</span></span><span class="line"><span class="cl">   Loaded: loaded <span class="o">(</span>/usr/lib/systemd/system/auditd.service<span class="p">;</span> enabled<span class="p">;</span> vendor preset: enabled<span class="o">)</span>
</span></span><span class="line"><span class="cl">   Active: active <span class="o">(</span>running<span class="o">)</span> since Mon 2026-08-24 08:30:10 CST<span class="p">;</span> 2h 15min ago
</span></span></code></pre></div>
</details>


```bash
auditctl -l
```
- 预期现象：启用审计规则时应逐条输出规则；未配置时可能为空。
- 注意：auditctl 需 root 权限执行。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">-w /etc/passwd -p wa -k identity
</span></span><span class="line"><span class="cl">-w /etc/shadow -p wa -k identity
</span></span><span class="line"><span class="cl">-a always,exit -F <span class="nv">arch</span><span class="o">=</span>b64 -S execve -k exec_monitor
</span></span></code></pre></div>
</details>


```bash
cat /etc/audit/rules.d/audit.rules
```
- 预期现象：应看到审计规则文件内容。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1">## First rule - delete all</span>
</span></span><span class="line"><span class="cl">-D
</span></span><span class="line"><span class="cl">...
</span></span><span class="line"><span class="cl">-w /etc/passwd -p wa -k identity
</span></span><span class="line"><span class="cl">-w /etc/shadow -p wa -k identity
</span></span><span class="line"><span class="cl">-a always,exit -F <span class="nv">arch</span><span class="o">=</span>b64 -S execve -k exec_monitor
</span></span><span class="line"><span class="cl">-e <span class="m">2</span>
</span></span></code></pre></div>
</details>


```bash
cat /etc/rsyslog.conf
```
- 预期现象：应看到本地日志规则和远程转发配置。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1">#### RULES ####</span>
</span></span><span class="line"><span class="cl">*.info<span class="p">;</span>mail.none<span class="p">;</span>authpriv.none<span class="p">;</span>cron.none                /var/log/messages
</span></span><span class="line"><span class="cl">authpriv.*                                              /var/log/secure
</span></span><span class="line"><span class="cl">...
</span></span><span class="line"><span class="cl"><span class="c1"># 远程转发示例（如已配置）</span>
</span></span><span class="line"><span class="cl">*.* @@192.168.20.10:514
</span></span></code></pre></div>
</details>


```bash
ls -l /var/log/messages
```
- 预期现象：应显示文件权限、属主、属组、大小、时间。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">-rw-------. <span class="m">1</span> root root <span class="m">1048576</span> Aug <span class="m">24</span> 10:20 /var/log/messages
</span></span></code></pre></div>
</details>


```bash
ls -l /var/log/secure
```
- 预期现象：应显示安全日志文件权限信息。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">-rw-------. <span class="m">1</span> root root <span class="m">262144</span> Aug <span class="m">24</span> 09:58 /var/log/secure
</span></span></code></pre></div>
</details>


```bash
ls -l /var/log/audit/audit.log
```
- 预期现象：应显示审计日志文件权限信息。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">-rw-------. <span class="m">1</span> root root <span class="m">2097152</span> Aug <span class="m">24</span> 10:22 /var/log/audit/audit.log
</span></span></code></pre></div>
</details>


```bash
tail -n 20 /var/log/messages
```
- 预期现象：应输出最近 20 条系统日志。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">Aug <span class="m">24</span> 10:18:02 web01 systemd: Started Session <span class="m">342</span> of user root.
</span></span><span class="line"><span class="cl">Aug <span class="m">24</span> 10:18:35 web01 kernel: TCP: request_sock_TCP: Possible SYN flooding on port 80. Sending cookies.
</span></span><span class="line"><span class="cl">...
</span></span><span class="line"><span class="cl">Aug <span class="m">24</span> 10:22:41 web01 rsyslogd: <span class="o">[</span>origin <span class="nv">software</span><span class="o">=</span><span class="s2">&#34;rsyslogd&#34;</span> <span class="nv">swVersion</span><span class="o">=</span><span class="s2">&#34;8.24.0-57.el7&#34;</span><span class="o">]</span> <span class="nb">exit</span> on signal 2.
</span></span></code></pre></div>
</details>


```bash
tail -n 20 /var/log/audit/audit.log
```
- 预期现象：应输出最近 20 条审计日志。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="nv">type</span><span class="o">=</span>USER_AUTH <span class="nv">msg</span><span class="o">=</span>audit<span class="o">(</span>1771893601.231:8812<span class="o">)</span>: <span class="nv">pid</span><span class="o">=</span><span class="m">456789</span> <span class="nv">uid</span><span class="o">=</span><span class="m">0</span> <span class="nv">auid</span><span class="o">=</span><span class="m">1000</span> <span class="nv">msg</span><span class="o">=</span><span class="s1">&#39;op=PAM:authentication acct=&#34;appuser&#34; exe=&#34;/usr/sbin/sshd&#34; hostname=203.0.113.50 addr=203.0.113.50 terminal=ssh res=success&#39;</span>
</span></span><span class="line"><span class="cl"><span class="nv">type</span><span class="o">=</span>CRED_ACQ <span class="nv">msg</span><span class="o">=</span>audit<span class="o">(</span>1771893601.240:8813<span class="o">)</span>: <span class="nv">pid</span><span class="o">=</span><span class="m">456789</span> <span class="nv">uid</span><span class="o">=</span><span class="m">0</span> <span class="nv">auid</span><span class="o">=</span><span class="m">1000</span> <span class="nv">msg</span><span class="o">=</span><span class="s1">&#39;op=PAM:setcred acct=&#34;appuser&#34; exe=&#34;/usr/sbin/sshd&#34; hostname=? addr=? terminal=ssh res=success&#39;</span>
</span></span><span class="line"><span class="cl">...
</span></span></code></pre></div>
</details>


```bash
last
```
- 预期现象：应显示成功登录记录。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">opsadmin pts/0        203.0.113.50     Mon Aug <span class="m">24</span> 10:02   still logged in
</span></span><span class="line"><span class="cl">root     pts/1        192.168.10.5     Sun Aug <span class="m">23</span> 17:44 - 19:02  <span class="o">(</span>01:17<span class="o">)</span>
</span></span><span class="line"><span class="cl">reboot   system boot  3.10.0-1160.el7. Mon Aug <span class="m">24</span> 08:29 - 10:25  <span class="o">(</span>01:55<span class="o">)</span>
</span></span><span class="line"><span class="cl">...
</span></span><span class="line"><span class="cl">wtmp begins Tue Jan  <span class="m">6</span> 09:00:01 <span class="m">2026</span>
</span></span></code></pre></div>
</details>


```bash
lastb
```
- 预期现象：应显示失败登录记录；部分主机可能需要 root 权限。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">root     ssh:notty    203.0.113.77     Mon Aug <span class="m">24</span> 04:12 - 04:12  <span class="o">(</span>00:00<span class="o">)</span>
</span></span><span class="line"><span class="cl">root     ssh:notty    203.0.113.77     Mon Aug <span class="m">24</span> 04:11 - 04:11  <span class="o">(</span>00:00<span class="o">)</span>
</span></span><span class="line"><span class="cl">admin    ssh:notty    198.51.100.9     Sun Aug <span class="m">23</span> 22:40 - 22:40  <span class="o">(</span>00:00<span class="o">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">btmp begins Fri Jul <span class="m">31</span> 00:01:02 <span class="m">2026</span>
</span></span></code></pre></div>
</details>


- 对应控制点：GB/T 22239-2019 8.1.4.3 安全计算环境-安全审计（a 审计覆盖每个用户、b 记录要素完整、c 记录保护与定期备份、d 审计进程保护）；日志外发集中存储对应 8.1.5.4 安全管理中心-集中管控（审计数据收集汇总，留存时间符合法律法规要求）。
- 判定要点：rsyslog 与 auditd 均启用、审计覆盖登录授权与重要操作、日志权限仅 root 可读并有定期备份或外发集中存储判符合；仅启用其一或未落实留存/备份判部分符合；审计功能未开启判不符合。
- 取证要求：服务状态、auditctl -l、/etc/audit/rules.d/audit.rules、/etc/rsyslog.conf 导出，日志文件权限与内容截图，日志留存时间（不少于 6 个月）与外发配置访谈纪要。
- 高风险提示：主机无安全审计记录、日志被关闭或清空、未按要求留存属高风险情形，参见 [22、高风险判定指引与加固对照表](../../../reinforce/其他系统或设备/22高风险判定指引与加固对照表/)。


## 访问控制与地址限制核查

```bash
ls -l /etc/passwd
```
- 预期现象：应显示关键文件权限。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">-rw-r--r--. <span class="m">1</span> root root <span class="m">1024</span> Aug  <span class="m">3</span>  <span class="m">2025</span> /etc/passwd
</span></span></code></pre></div>
</details>


```bash
ls -l /etc/shadow
```
- 预期现象：应显示关键文件权限。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">----------. <span class="m">1</span> root root  <span class="m">896</span> Aug  <span class="m">3</span>  <span class="m">2025</span> /etc/shadow
</span></span><span class="line"><span class="cl"><span class="o">(</span>常见亦为 -rw-r----- 或 400，以现场为准<span class="o">)</span>
</span></span></code></pre></div>
</details>


```bash
ls -l /etc/group
```
- 预期现象：应显示关键文件权限。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">-rw-r--r--. <span class="m">1</span> root root <span class="m">512</span> Aug  <span class="m">3</span>  <span class="m">2025</span> /etc/group
</span></span></code></pre></div>
</details>


```bash
cat /etc/hosts.allow
```
- 预期现象：应看到允许地址配置；未配置时可能为空。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># 示例：仅允许运维网段访问 sshd</span>
</span></span><span class="line"><span class="cl">sshd: 192.168.10.0/255.255.255.0
</span></span></code></pre></div>
</details>


```bash
cat /etc/hosts.deny
```
- 预期现象：应看到拒绝地址配置；部分基线常见 ALL，但应以现场为准。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">sshd: ALL
</span></span></code></pre></div>
</details>


- 注意：tcp_wrappers（hosts.allow/hosts.deny）在 RHEL 7 已标记废弃（RHEL 8 起移除）；EL7 自带的 sshd 仍支持 libwrap，但升级后该机制失效，来源限制应迁移到 firewalld 或 sshd_config 的 AllowUsers/Match Address 等配置。

- 对应控制点：GB/T 22239-2019 8.1.4.2 安全计算环境-访问控制（账户与关键文件权限最小化、权限分离）；hosts.allow/hosts.deny 地址限制就近对应 8.1.3.2 安全区域边界-访问控制。
- 判定要点：关键账号文件属主为 root 且权限最小化（/etc/shadow 无全局可读）、地址限制策略与业务访问需求一致判符合；/etc/shadow 全局可读写或限制策略与业务矛盾判部分符合/不符合。
- 取证要求：关键文件 ls -l 权限输出、hosts.allow/hosts.deny 配置导出截图，账号文件权限整改记录。


## 服务、端口与边界防护核查

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


核查命令均为只读。整改时关闭服务、清空或收紧 iptables/firewalld 规则属影响业务的操作：应经变更审批并在维护窗口执行，操作前备份现有规则（iptables-save 导出、firewall-cmd --list-all 留档），逐条放行业务端口后再拒绝其他流量，避免误锁 SSH 与业务中断。
</div>


```bash
systemctl list-units --type service --all | grep running
```
- 预期现象：应列出当前运行中的服务。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">auditd.service                                loaded active running   Security Auditing Service
</span></span><span class="line"><span class="cl">crond.service                                 loaded active running   Command Scheduler
</span></span><span class="line"><span class="cl">firewalld.service                             loaded active running   firewalld - dynamic firewall daemon
</span></span><span class="line"><span class="cl">rsyslog.service                               loaded active running   System Logging Service
</span></span><span class="line"><span class="cl">sshd.service                                  loaded active running   OpenSSH server daemon
</span></span></code></pre></div>
</details>


```bash
chkconfig --list
```
- 预期现象：应列出开机启动项；旧版系统更常见。
- 注意：systemd 环境下开机自启建议用 `systemctl list-unit-files --type=service --state=enabled` 查看；chkconfig --list 仅覆盖 SysV 服务与兼容项。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">Note: This output shows SysV services only. ...
</span></span><span class="line"><span class="cl">netconsole     	0:off	1:off	2:off	3:off	4:off	5:off	6:off
</span></span><span class="line"><span class="cl">network        	0:off	1:off	2:on	3:on	4:on	5:on	6:off
</span></span></code></pre></div>
</details>


```bash
netstat -ntlp
```
- 预期现象：应显示监听端口、本地地址、PID/程序名等信息。
- 注意：netstat 来自 net-tools 套件，RHEL 7 中已标记废弃且不再维护，官方推荐以 ss/ip 替代，等价命令为 `ss -ntlp`（man7 ss(8)）。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">Active Internet connections <span class="o">(</span>only servers<span class="o">)</span>
</span></span><span class="line"><span class="cl">Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
</span></span><span class="line"><span class="cl">tcp        <span class="m">0</span>      <span class="m">0</span> 0.0.0.0:22              0.0.0.0:*               LISTEN      1123/sshd
</span></span><span class="line"><span class="cl">tcp        <span class="m">0</span>      <span class="m">0</span> 127.0.0.1:3306          0.0.0.0:*               LISTEN      2101/mysqld
</span></span><span class="line"><span class="cl">tcp6       <span class="m">0</span>      <span class="m">0</span> :::80                   :::*                    LISTEN      2205/nginx: master
</span></span></code></pre></div>
</details>


```bash
systemctl status firewalld
```
- 预期现象：应显示 firewalld 当前状态，如 active 或 inactive。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">● firewalld.service - firewalld - dynamic firewall daemon
</span></span><span class="line"><span class="cl">   Loaded: loaded <span class="o">(</span>/usr/lib/systemd/system/firewalld.service<span class="p">;</span> enabled<span class="p">;</span> vendor preset: enabled<span class="o">)</span>
</span></span><span class="line"><span class="cl">   Active: active <span class="o">(</span>running<span class="o">)</span> since Mon 2026-08-24 08:30:12 CST<span class="p">;</span> 2h ago
</span></span></code></pre></div>
</details>


```bash
firewall-cmd --list-all
```
- 预期现象：应显示 zone、services、ports、rich rules 等规则信息。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">public <span class="o">(</span>active<span class="o">)</span>
</span></span><span class="line"><span class="cl">  target: default
</span></span><span class="line"><span class="cl">  interfaces: eth0
</span></span><span class="line"><span class="cl">  sources:
</span></span><span class="line"><span class="cl">  services: dhcpv6-client ssh
</span></span><span class="line"><span class="cl">  ports: 80/tcp 443/tcp
</span></span><span class="line"><span class="cl">  protocols:
</span></span><span class="line"><span class="cl">  masquerade: no
</span></span><span class="line"><span class="cl">  forward-ports:
</span></span><span class="line"><span class="cl">  rich rules:
</span></span></code></pre></div>
</details>


```bash
iptables -nvL
```
- 预期现象：应按链输出规则、计数器和匹配条件。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">Chain INPUT <span class="o">(</span>policy ACCEPT <span class="m">0</span> packets, <span class="m">0</span> bytes<span class="o">)</span>
</span></span><span class="line"><span class="cl"> pkts bytes target     prot opt in     out     <span class="nb">source</span>               destination
</span></span><span class="line"><span class="cl"> 120K   12M ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
</span></span><span class="line"><span class="cl">  <span class="m">350</span> <span class="m">24560</span> ACCEPT     tcp  --  *      *       192.168.10.0/24      0.0.0.0/0           tcp dpt:22
</span></span><span class="line"><span class="cl">...
</span></span><span class="line"><span class="cl">Chain OUTPUT <span class="o">(</span>policy ACCEPT <span class="m">98765</span> packets, 45M bytes<span class="o">)</span>
</span></span></code></pre></div>
</details>


- 对应控制点：GB/T 22239-2019 8.1.4.4 安全计算环境-入侵防范（关闭不需要的系统服务和高危端口）；firewalld/iptables 策略就近对应 8.1.3.2 安全区域边界-访问控制（按最小化原则放行）。
- 判定要点：无多余服务与高危端口、主机防火墙策略与业务一致且非全通判符合；存在多余高危端口或防火墙空规则全通判部分符合；管理端口对全网无条件开放判不符合。
- 取证要求：运行服务与监听端口清单（netstat/ss 输出）、firewall-cmd --list-all 或 iptables -nvL 导出截图，多余服务/端口的处置记录。


## 最小安装、补丁与中间件核查

```bash
rpm -aq
```
- 预期现象：应按行列出已安装软件包。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">kernel-3.10.0-1160.el7.x86_64
</span></span><span class="line"><span class="cl">openssh-server-7.4p1-21.el7.x86_64
</span></span><span class="line"><span class="cl">...
</span></span><span class="line"><span class="cl">nginx-1.20.1-9.el7.x86_64
</span></span><span class="line"><span class="cl"><span class="o">(</span>实际输出按字母序逐行列出全部已安装包，通常上千行<span class="o">)</span>
</span></span></code></pre></div>
</details>


```bash
yum list installed
```
- 预期现象：应列出已安装软件清单，通常包含包名、版本、仓库信息。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">Loaded plugins: fastestmirror, langpacks
</span></span><span class="line"><span class="cl">Installed Packages
</span></span><span class="line"><span class="cl">NetworkManager.x86_64              1:1.18.8-2.el7             @anaconda
</span></span><span class="line"><span class="cl">OpenIPMI-modalias.x86_64           2.0.27-1.el7               @base
</span></span><span class="line"><span class="cl">...
</span></span><span class="line"><span class="cl">zlib.x86_64                        1.2.7-20.el7_9             @updates
</span></span></code></pre></div>
</details>


```bash
rpm -qa | grep patch
```
- 预期现象：如存在相关命名规则，通常会筛出补丁相关包。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">patch-2.7.1-12.el7_7.x86_64
</span></span></code></pre></div>
</details>


```bash
rpm -qi samba
```
- 预期现象：安装 Samba 时应显示 Name、Version、Release、Summary 等字段。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">Name        : samba
</span></span><span class="line"><span class="cl">Version     : 4.10.16
</span></span><span class="line"><span class="cl">Release     : 25.el7_9
</span></span><span class="line"><span class="cl">Architecture: x86_64
</span></span><span class="line"><span class="cl">Install Date: Sat <span class="m">06</span> Jun <span class="m">2026</span> 09:12:33 AM CST
</span></span><span class="line"><span class="cl">...
</span></span><span class="line"><span class="cl">Summary     : Server and Client software to interoperate with Windows machines
</span></span></code></pre></div>
</details>


```bash
ps -ef | grep 'nginx\|apache\|tomcat\|redis-server\|mongod\|postgresql\|mysql\|mariadb\|memcached\|mongodb-server\|rabbitmq-server\|weblogic'
```
- 预期现象：存在对应中间件时应显示相关进程。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">root       <span class="m">2205</span>      <span class="m">1</span>  <span class="m">0</span>  <span class="m">2025</span> ?        00:02:11 nginx: master process /usr/sbin/nginx
</span></span><span class="line"><span class="cl">nginx      <span class="m">2206</span>   <span class="m">2205</span>  <span class="m">0</span>  <span class="m">2025</span> ?        00:05:43 nginx: worker process
</span></span><span class="line"><span class="cl">mysql      <span class="m">2101</span>      <span class="m">1</span>  <span class="m">0</span>  <span class="m">2025</span> ?        00:30:12 /usr/libexec/mysqld --basedir<span class="o">=</span>/usr
</span></span><span class="line"><span class="cl">root     <span class="m">567890</span>  <span class="m">456789</span>  <span class="m">0</span> 10:05 pts/0    00:00:00 grep --color<span class="o">=</span>auto nginx<span class="p">|</span>apache<span class="p">|</span>tomcat<span class="p">|</span>...
</span></span></code></pre></div>
</details>


- 对应控制点：GB/T 22239-2019 8.1.4.4 安全计算环境-入侵防范（a 最小安装、b 及时修补漏洞）。
- 判定要点：仅安装业务必需组件、有可用更新源且近期有补丁更新记录判符合；安装大量非业务组件或长期未修补判部分符合/不符合。
- 取证要求：rpm -qa、yum list installed 清单导出，补丁更新记录（yum history、更新日志），中间件版本与资产台账核对记录。


## 时钟与计划任务核查

```bash
netstat -tlunp | grep ntp
```
- 预期现象：启用 NTP 服务时通常可见 123 端口监听；如无时钟服务可不执行。
- 注意：RHEL 7 默认时钟服务为 chrony，chronyd 同样监听 123/UDP 但进程名不含 ntp，`grep ntp` 会漏检；chrony 可用 `chronyc sources -v`、`chronyc tracking` 核查，端口可用 `ss -ulnp | grep ':123 '` 查看（netstat 等价 `ss -tlunp`）。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">udp        <span class="m">0</span>      <span class="m">0</span> 192.168.10.21:123       0.0.0.0:*                           1305/ntpd
</span></span><span class="line"><span class="cl">udp        <span class="m">0</span>      <span class="m">0</span> 127.0.0.1:123           0.0.0.*:*                           1305/ntpd
</span></span></code></pre></div>
</details>


```bash
ntpq -p
```
- 预期现象：应显示上级时钟源与对时状态；如无 NTP 服务可不执行。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">     remote           refid      st t when poll reach   delay   offset  <span class="nv">jitter</span>
</span></span><span class="line"><span class="cl"><span class="o">==============================================================================</span>
</span></span><span class="line"><span class="cl">*203.0.113.100   .GPS.            <span class="m">1</span> u   <span class="m">32</span>   <span class="m">64</span>  <span class="m">377</span>    0.512   -0.102   0.021
</span></span><span class="line"><span class="cl">+192.168.20.10   203.0.113.100    <span class="m">2</span> u   <span class="m">45</span>   <span class="m">64</span>  <span class="m">377</span>    0.301   -0.055   0.013
</span></span></code></pre></div>
</details>


```bash
timedatectl status
```
- 预期现象：应显示本地时间、时区、NTP 同步状态等信息。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">      Local time: Mon 2026-08-24 10:28:33 CST
</span></span><span class="line"><span class="cl">  Universal time: Mon 2026-08-24 02:28:33 UTC
</span></span><span class="line"><span class="cl">        RTC time: Mon 2026-08-24 02:28:32
</span></span><span class="line"><span class="cl">       Time zone: Asia/Shanghai <span class="o">(</span>CST, +0800<span class="o">)</span>
</span></span><span class="line"><span class="cl">     NTP enabled: yes
</span></span><span class="line"><span class="cl">NTP synchronized: yes
</span></span></code></pre></div>
</details>


```bash
crontab -l
```
- 预期现象：应显示当前用户计划任务；无任务时可能提示 no crontab。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">*/5 * * * * /usr/bin/curl -s http://192.168.10.30/healthcheck &gt; /dev/null
</span></span><span class="line"><span class="cl"><span class="m">0</span> <span class="m">2</span> * * * /opt/scripts/log_clean.sh &gt;&gt; /var/log/log_clean.log 2&gt;<span class="p">&amp;</span><span class="m">1</span>
</span></span></code></pre></div>
</details>


```bash
groups 用户名
```
- 预期现象：应显示该用户所属组列表。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">appuser : appuser wheel docker
</span></span></code></pre></div>
</details>


- 对应控制点：GB/T 22239-2019 8.1.4.3 安全计算环境-安全审计（审计记录时间准确性依赖统一时钟；时钟同步运维要求见 8.1.10 安全运维管理：保证各设备时钟一致）；crontab 与用户组核查就近对应 8.1.4.2 访问控制（授权主体与权限最小化）。
- 判定要点：已配置统一时钟源且同步状态正常、计划任务均为授权业务且执行账户权限合理判符合；时钟长期不同步或存在来历不明的计划任务判部分符合/不符合。
- 取证要求：ntpq -p 或 chronyc sources -v 输出、timedatectl status 截图，crontab -l 及 root 计划任务清单（/var/spool/cron、/etc/cron.*），时钟源约定与运维说明。


## 入侵防范核查

```bash
grep -E '^(MaxAuthTries|LoginGraceTime|PermitRootLogin|AllowUsers|DenyUsers|AllowGroups|DenyGroups)' /etc/ssh/sshd_config
```
- 预期现象：应能看到 SSH 暴力破解防护与访问控制相关参数。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">PermitRootLogin no
</span></span><span class="line"><span class="cl">MaxAuthTries <span class="m">4</span>
</span></span><span class="line"><span class="cl">LoginGraceTime <span class="m">30</span>
</span></span><span class="line"><span class="cl">AllowUsers appuser opsadmin
</span></span></code></pre></div>
</details>


```bash
sshd -T | egrep 'maxauthtries|logingracetime|permitrootlogin|allowusers|denyusers|allowgroups|denygroups'
```
- 预期现象：应输出 SSH 服务端当前生效的对应参数值。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">allowgroups none
</span></span><span class="line"><span class="cl">allowusers appuser opsadmin
</span></span><span class="line"><span class="cl">denygroups none
</span></span><span class="line"><span class="cl">denyusers none
</span></span><span class="line"><span class="cl">logingracetime <span class="m">30</span>
</span></span><span class="line"><span class="cl">maxauthtries <span class="m">4</span>
</span></span><span class="line"><span class="cl">permitrootlogin no
</span></span></code></pre></div>
</details>


```bash
rpm -qa | egrep -i 'fail2ban|aide|ossec|wazuh|snort|suricata'
```
- 预期现象：若部署入侵防范/主机入侵检测软件，应出现对应包名；未部署则无输出。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">fail2ban-firewall-0.11.2-1.el7.noarch
</span></span><span class="line"><span class="cl">fail2ban-sendmail-0.11.2-1.el7.noarch
</span></span><span class="line"><span class="cl">fail2ban-server-0.11.2-1.el7.noarch
</span></span></code></pre></div>
</details>


```bash
systemctl status fail2ban
```
- 预期现象：安装并启用 fail2ban 时应显示 active/running；未安装时可能提示服务不存在。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">● fail2ban.service - Fail2Ban Service
</span></span><span class="line"><span class="cl">   Loaded: loaded <span class="o">(</span>/usr/lib/systemd/system/fail2ban.service<span class="p">;</span> enabled<span class="p">;</span> vendor preset: disabled<span class="o">)</span>
</span></span><span class="line"><span class="cl">   Active: active <span class="o">(</span>running<span class="o">)</span> since Mon 2026-08-24 08:30:20 CST<span class="p">;</span> 2h ago
</span></span><span class="line"><span class="cl"> Main PID: <span class="m">1420</span> <span class="o">(</span>fail2ban-server<span class="o">)</span>
</span></span></code></pre></div>
</details>


- 对应控制点：GB/T 22239-2019 8.1.4.4 安全计算环境-入侵防范（c 发现已知漏洞并及时修补、d 检测重要节点入侵行为并在严重入侵事件时报警）。
- 判定要点：SSH 暴力破解防护参数收紧且部署 fail2ban 或等效检测/阻断机制并实际运行判符合；仅收紧参数未部署入侵检测手段判部分符合；两者皆无判不符合。
- 取证要求：sshd -T 输出、fail2ban 状态与 jail 配置截图，入侵告警与处置流程访谈纪要。


## 安全基线与完整性核查

```bash
cat /etc/issue
```
- 预期现象：应显示登录前系统标识或告警提示（如已配置）。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">Authorized users only. All activity may be monitored and reported.
</span></span><span class="line"><span class="cl">CentOS Linux release 7.9.2009 <span class="o">(</span>Core<span class="o">)</span>
</span></span><span class="line"><span class="cl">Kernel <span class="se">\r</span> on an <span class="se">\m</span>
</span></span></code></pre></div>
</details>


```bash
cat /etc/issue.net
```
- 预期现象：应显示远程登录告警提示（如已配置）。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">Authorized access only. Unauthorized use is prohibited.
</span></span><span class="line"><span class="cl">CentOS Linux release 7.9.2009 <span class="o">(</span>Core<span class="o">)</span>
</span></span></code></pre></div>
</details>


```bash
cat /etc/motd
```
- 预期现象：应显示登录后提示或告警内容（如已配置）。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">*** 本系统仅限授权人员使用，操作行为将被审计记录。 ***
</span></span><span class="line"><span class="cl">*** For authorized personnel only. Activities are audited. ***
</span></span></code></pre></div>
</details>


```bash
awk -F: '($2=="") {print $1}' /etc/shadow
```
- 预期现象：若存在空口令账户应输出账号名；无空口令时无输出。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="o">(</span>无空口令账户时无输出；存在时应仅输出账号名，例如<span class="o">)</span>
</span></span><span class="line"><span class="cl">svcbackup
</span></span></code></pre></div>
</details>


```bash
rpm -Va
```
- 预期现象：如存在被篡改文件，通常会输出校验不一致项；无异常时无输出或输出很少。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">missing     /usr/libexec/abrt-hook-ccpp
</span></span><span class="line"><span class="cl">S.5....T.  c /etc/ssh/sshd_config
</span></span><span class="line"><span class="cl">.M.......    /usr/local/bin/custom-tool
</span></span><span class="line"><span class="cl"><span class="o">(</span>无篡改时通常无输出或仅有少量预期变更项<span class="o">)</span>
</span></span></code></pre></div>
</details>


```bash
aide --check
```
- 预期现象：已安装并初始化 AIDE 时应输出完整性检查结果；未安装时可能提示命令不存在。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">AIDE found differences between database and filesystem!!
</span></span><span class="line"><span class="cl">added: /root/.bash_history.new
</span></span><span class="line"><span class="cl">removed: /tmp/old.lock
</span></span><span class="line"><span class="cl">changed: /etc/passwd
</span></span><span class="line"><span class="cl">...
</span></span><span class="line"><span class="cl">File: /etc/passwd
</span></span><span class="line"><span class="cl"> Size: <span class="m">1024</span> -&gt; <span class="m">1032</span>
</span></span></code></pre></div>
</details>


- 对应控制点：GB/T 22239-2019 8.1.4.1 安全计算环境-身份鉴别（空口令检查与登录告警提示）；rpm -Va、aide --check 完整性校验就近对应 8.1.4.6 可信验证（对重要程序与配置参数进行完整性校验的佐证）与 8.1.4.4 入侵防范（检测重要节点入侵）。
- 判定要点：无空口令账户、登录告警提示齐全、具备 AIDE 或等效完整性校验手段并定期执行判符合；无完整性校验手段判部分符合；存在空口令账户判不符合。
- 取证要求：/etc/issue、/etc/issue.net、/etc/motd 内容截图，空口令检查输出，aide --check 或 rpm -Va 输出与校验周期说明。
- 高风险提示：空口令、弱口令账户属高风险情形，参见 [22、高风险判定指引与加固对照表](../../../reinforce/其他系统或设备/22高风险判定指引与加固对照表/)。

## 参考依据

- GB/T 22239-2019《信息安全技术 网络安全等级保护基本要求》8.1.4 安全计算环境（[国家标准全文公开系统](https://openstd.samr.gov.cn/bzgk/std/newGbInfo?hcno=BAFB47E8874764186BDB7865E8344DAF)）
- GB/T 28448-2019《信息安全技术 网络安全等级保护测评要求》（[国家标准全文公开系统](https://openstd.samr.gov.cn/bzgk/std/newGbInfo?hcno=7E736CDF4502B6FF1258DD250AA3EC8C)）
- Red Hat Enterprise Linux 7《Security Guide》（[目录](https://docs.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/security_guide/index)）；4.1.2 Account Locking（pam_faillock，[第 4 章](https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/7/html/security_guide/chap-hardening_your_system_with_tools_and_services)）；第 7 章 System Auditing（auditd/auditctl，[链接](https://docs.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/security_guide/chap-system_auditing)）
- Red Hat Enterprise Linux 7《System Administrator's Guide》第 18 章 Configuring NTP Using the chrony Suite（[链接](https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/7/html/system_administrators_guide/ch-configuring_ntp_using_the_chrony_suite)）
- OpenSSH sshd_config(5) 手册页（[man.openbsd.org](https://man.openbsd.org/sshd_config.5)）
- OpenSSH 7.4 Release Notes（[openssh.org](https://www.openssh.org/txt/release-7.4)，curve25519-sha256 别名、group14-sha256 等算法适用性）
- ss(8) 手册页（[man7.org](https://man7.org/linux/man-pages/man8/ss.8.html)，netstat 替代依据）
- shadow(5)、login.defs(5) 手册页（[shadow(5)](https://man7.org/linux/man-pages/man5/shadow.5.html)、[login.defs(5)](https://man7.org/linux/man-pages/man5/login.defs.5.html)）
- firewalld 官方文档（[firewalld.org](https://firewalld.org/documentation/)）
- CIS CentOS Linux 7 Benchmark（CIS 官网现行列表已归档 EL7 基线，[CIS Benchmarks](https://www.cisecurity.org/cis-benchmarks)）
- 《网络安全等级保护测评高风险判定指引》（T/ISEAA 001-2020，中关村信息安全测评联盟团体标准，[全国团体标准信息平台](https://www.ttbz.org.cn/)）
- 命令核验说明：本文命令已于 2026-09 对照上述官方文档核验；个别无法在线核验的命令已按 man 手册核对，现场以实际系统版本为准。

## 关联文章

- 配套加固：[04、安全评估Linux主机加固操作手册](../../../reinforce/服务器/04linux主机加固操作手册/)
- 取证记录：[16、安全评估加固记录表3.0](../../../reinforce/其他系统或设备/16安全评估加固记录表3.0/)
- 高风险口径：[22、高风险判定指引与加固对照表](../../../reinforce/其他系统或设备/22高风险判定指引与加固对照表/)
