# macOS-三级现场测评命令单

> macOS Ventura 13 主机三级等保现场测评取证命令单：sw_vers、system_profiler SPSoftwareDataType 与 uname -a 版本核查，ifconfig、networksetup -listallnetworkservices 与 scutil --dns 网络配置核查，dscl . list /Users、dscl . -read /Users/root、pwpolicy -getaccountpolicies、sysadminctl -secureTokenStatus 与 /etc/pam.d/authorization 账户口令策略核查，systemsetup -getremotelogin 与 -getremoteappleevents 远程接入服务核查，以及远程连接协议与算法、安全审计、边界防护、系统完整性与本地安全增强、最小安装与补丁、时间同步与计划任务、入侵防范、安全基线与完整性核查。

---

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

---

> 示例版本：macOS Ventura 13

> 定位：三级等保现场测评取证命令单，按功能小节组织核查命令、预期现象与判定要点。

> 说明：Apple 官方支持文档可直接支撑“远程登录”使用 SSH 或 SFTP；“软件更新”用于检查系统更新；macOS 内置应用防火墙支持 Block all incoming connections、自动允许签名软件和 stealth mode 等配置。

## 系统版本核查

```bash
sw_vers
```
- 预期现象：应显示 ProductName、ProductVersion、BuildVersion 等字段。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">ProductName:		macOS
</span></span><span class="line"><span class="cl">ProductVersion:		13.5.2
</span></span><span class="line"><span class="cl">BuildVersion:		22G91
</span></span></code></pre></div>
</details>


```bash
system_profiler SPSoftwareDataType
```
- 预期现象：应显示 System Version、Kernel Version、Boot Volume、Secure Virtual Memory 等软件信息。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">Software:
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">    System Software Overview:
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">      System Version: macOS 13.5.2 (22G91)
</span></span><span class="line"><span class="cl">      Kernel Version: Darwin 22.6.0
</span></span><span class="line"><span class="cl">      Boot Volume: Macintosh HD
</span></span><span class="line"><span class="cl">      Secure Virtual Memory: Enabled
</span></span></code></pre></div>
</details>


```bash
uname -a
```
- 预期现象：应显示 Darwin 内核版本、主机名、架构等信息。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">Darwin demo-mac 22.6.0 Darwin Kernel Version 22.6.0: Wed Jul 26 21:31:31 PDT 2023; root:xnu-8796.141.3~1/RELEASE_X86_64 x86_64
</span></span></code></pre></div>
</details>


- 对应控制点：GB/T 22239-2019 8.1.4.4 d)（及时发现已知漏洞并修补，系统版本处于安全维护期）
- 判定要点：本节为核查起点，记录系统版本与 Build 号作为基线证据；版本已停止安全维护或长期未安装安全补丁时，结合补丁策略判部分符合或不符合。
- 取证要求：留存 sw_vers、system_profiler 输出及测评时间截图。


## 网络配置核查

```bash
ifconfig
```
- 预期现象：应显示网络接口、IPv4/IPv6、MAC 地址等信息。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">en0: flags=8863&lt;UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST&gt; mtu 1500
</span></span><span class="line"><span class="cl">	ether a1:b2:c3:d4:e5:f6
</span></span><span class="line"><span class="cl">	inet 192.168.1.10 netmask 0xffffff00 broadcast 192.168.1.255
</span></span><span class="line"><span class="cl">	inet6 fe80::1234:5678:90ab:cdef%en0 prefixlen 64 secured scopeid 0x6
</span></span><span class="line"><span class="cl">	media: autoselect
</span></span><span class="line"><span class="cl">	status: active
</span></span></code></pre></div>
</details>


```bash
networksetup -listallnetworkservices
```
- 预期现象：应列出当前配置的网络服务名称。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">An asterisk (*) denotes that a network service is disabled.
</span></span><span class="line"><span class="cl">Wi-Fi
</span></span><span class="line"><span class="cl">Thunderbolt Ethernet
</span></span></code></pre></div>
</details>


```bash
scutil --dns
```
- 预期现象：应显示当前 DNS 解析器配置。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">DNS configuration
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">resolver #1
</span></span><span class="line"><span class="cl">  nameserver[0] : 192.168.1.1
</span></span><span class="line"><span class="cl">  nameserver[1] : 192.168.1.2
</span></span><span class="line"><span class="cl">  if_index : 6 (en0)
</span></span></code></pre></div>
</details>


- 对应控制点：GB/T 22239-2019 8.1.4.4 c)（通过设定终端接入方式或网络地址范围限制管理终端的辅助核查项）
- 判定要点：核对 IP、DNS 与管理网段规划及准入策略的一致性；macOS 作为终端/服务器测评对象一般不承担网络边界职责，本节为辅助取证，不单独出具符合性结论。
- 取证要求：留存 ifconfig、scutil --dns 输出，并标注管理地址所在网段。


## 账户与口令策略核查

```bash
dscl . list /Users
```
- 预期现象：应列出本地用户对象。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">daemon
</span></span><span class="line"><span class="cl">nobody
</span></span><span class="line"><span class="cl">root
</span></span><span class="line"><span class="cl">admin
</span></span><span class="line"><span class="cl">devuser
</span></span></code></pre></div>
</details>


```bash
dscl . -read /Users/root
```
- 预期现象：应显示 root 账户属性；若未启用 root，仍可用于核查账户对象信息。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">AppleMetaNodeLocation: /Local/Default
</span></span><span class="line"><span class="cl">GeneratedUID: FFFFEEEE-DDDD-CCCC-BBBB-AAAA00000000
</span></span><span class="line"><span class="cl">NFSHomeDirectory: /var/root
</span></span><span class="line"><span class="cl">RecordName: root
</span></span><span class="line"><span class="cl">UniqueID: 0
</span></span><span class="line"><span class="cl">UserShell: /bin/sh
</span></span></code></pre></div>
</details>


```bash
sudo pwpolicy -getaccountpolicies
```
- 预期现象：pwpolicy 读取全局策略需以管理员权限运行；已配置账户口令策略时应输出策略 XML/plist，未配置时输出为空 plist。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">Getting global account policies
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">&lt;?xml version=&#34;1.0&#34; encoding=&#34;UTF-8&#34;?&gt;
</span></span><span class="line"><span class="cl">&lt;!DOCTYPE plist PUBLIC &#34;-//Apple//DTD PLIST 1.0//EN&#34; &#34;http://www.apple.com/DTDs/PropertyList-1.0.dtd&#34;&gt;
</span></span><span class="line"><span class="cl">&lt;plist version=&#34;1.0&#34;&gt;
</span></span><span class="line"><span class="cl">&lt;dict&gt;
</span></span><span class="line"><span class="cl">	&lt;key&gt;policyCategoryAuthenticationContent&lt;/key&gt;
</span></span><span class="line"><span class="cl">	&lt;array&gt;
</span></span><span class="line"><span class="cl">		&lt;dict&gt;
</span></span><span class="line"><span class="cl">			&lt;key&gt;policyContent&lt;/key&gt;
</span></span><span class="line"><span class="cl">			&lt;string&gt;policyAttributeCurrentFailedAttempts &amp;gt;= 5 ...&lt;/string&gt;
</span></span><span class="line"><span class="cl">			&lt;key&gt;policyIdentifier&lt;/key&gt;
</span></span><span class="line"><span class="cl">			&lt;string&gt;maxFailedLoginAttempts&lt;/string&gt;
</span></span><span class="line"><span class="cl">		&lt;/dict&gt;
</span></span><span class="line"><span class="cl">	&lt;/array&gt;
</span></span><span class="line"><span class="cl">	&lt;key&gt;policyCategoryPasswordContent&lt;/key&gt;
</span></span><span class="line"><span class="cl">	&lt;array&gt;
</span></span><span class="line"><span class="cl">		&lt;dict&gt;
</span></span><span class="line"><span class="cl">			&lt;key&gt;policyContent&lt;/key&gt;
</span></span><span class="line"><span class="cl">			&lt;string&gt;policyAttributePassword matches &#39;(?=.*[0-9].*[A-Za-z]).{8,}&#39;&lt;/string&gt;
</span></span><span class="line"><span class="cl">			&lt;key&gt;policyIdentifier&lt;/key&gt;
</span></span><span class="line"><span class="cl">			&lt;string&gt;customPasswordComplexity&lt;/string&gt;
</span></span><span class="line"><span class="cl">		&lt;/dict&gt;
</span></span><span class="line"><span class="cl">	&lt;/array&gt;
</span></span><span class="line"><span class="cl">	...（其余策略键值略）
</span></span><span class="line"><span class="cl">&lt;/dict&gt;
</span></span></code></pre></div>
</details>


```bash
sysadminctl -secureTokenStatus 用户名
```
- 预期现象：应显示指定用户是否具有 Secure Token。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">Secure token is ENABLED for user devuser
</span></span></code></pre></div>
</details>


```bash
cat /etc/pam.d/authorization
```
- 预期现象：应显示本地认证相关 PAM 配置。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">auth       optional       pam_kanji.so
</span></span><span class="line"><span class="cl">auth       optional       pam_cknso.so
</span></span><span class="line"><span class="cl">auth       required       pam_opendirectory.so use_first_pass
</span></span><span class="line"><span class="cl">account    required       pam_opendirectory.so
</span></span></code></pre></div>
</details>


- 对应控制点：GB/T 22239-2019 8.1.4.1 a)、b)（身份标识唯一、口令复杂度与定期更换、登录失败处理）；8.1.4.2 b)、c)（默认账户口令处理与多余账户停用）
- 判定要点：未配置口令复杂度/定期更换策略，或存在默认口令、弱口令、共享账户判不符合；仅部分策略缺失或个别多余账户未停用判部分符合。
- 取证要求：留存 pwpolicy 策略输出与账户清单，辅以口令更改记录抽查及访谈结果。

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


高风险提示：存在弱口令/默认口令、共享账户属于高风险判定情形，判定口径见 [22、高风险判定指引与加固对照表](../../../reinforce/其他系统或设备/22高风险判定指引与加固对照表/)。
</div>


## 远程接入服务核查

```bash
sudo systemsetup -getremotelogin
```
- 预期现象：systemsetup 须以 root 运行（否则提示 You need administrator access to run this tool）；应显示 Remote Login: On 或 Off。Apple 官方说明远程登录使用 SSH 或 SFTP。


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


```bash
sudo systemsetup -getremoteappleevents
```
- 预期现象：systemsetup 须以 root 运行；应显示 Remote Apple Events: On 或 Off。


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


```bash
lsof -iTCP -sTCP:LISTEN -n -P
```
- 预期现象：应显示当前监听端口及对应进程。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">COMMAND   PID USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
</span></span><span class="line"><span class="cl">launchd     1 root    8u  IPv4 0xa1b2c3d4e5f6      0t0  TCP *:22 (LISTEN)
</span></span><span class="line"><span class="cl">rapportd  512 user    4u  IPv4 0xf6e5d4c3b2a1      0t0  TCP *:59241 (LISTEN)
</span></span></code></pre></div>
</details>


```bash
sudo launchctl list | grep ssh
```
- 预期现象：sshd 属系统域守护进程，普通用户的 launchctl list 仅显示当前用户域，需 sudo 查看系统域；启用 SSH 时可见 com.openssh.sshd（PID 为 "-" 表示按需启动）。


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


- 对应控制点：GB/T 22239-2019 8.1.4.1 c)（远程管理防止鉴别信息被窃听）；8.1.4.4 b)（关闭不需要的系统服务与高危端口）
- 判定要点：远程管理仅保留 SSH/SFTP 等加密协议、未开启 Remote Apple Events 等不必要服务判符合；开启 Telnet、FTP 等明文协议判不符合；仅存在多余服务或多余监听端口判部分符合。
- 取证要求：留存 systemsetup 服务状态输出与 lsof 监听端口清单。

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


高风险提示：通过 Telnet、FTP、HTTP 等明文协议进行远程管理属于高风险判定情形，判定口径见 [22、高风险判定指引与加固对照表](../../../reinforce/其他系统或设备/22高风险判定指引与加固对照表/)。
</div>


## 远程连接协议与算法核查

```bash
cat /etc/ssh/sshd_config
```
- 预期现象：应显示 SSH 服务端配置，可核查认证、访问控制和算法参数。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">#Port 22
</span></span><span class="line"><span class="cl">#AddressFamily any
</span></span><span class="line"><span class="cl">#ListenAddress 0.0.0.0
</span></span><span class="line"><span class="cl">#PermitRootLogin prohibit-password
</span></span><span class="line"><span class="cl">#MaxAuthTries 6
</span></span><span class="line"><span class="cl">#PubkeyAuthentication yes
</span></span><span class="line"><span class="cl">Subsystem	sftp	/usr/libexec/sftp-server
</span></span></code></pre></div>
</details>


```bash
sudo sshd -T | egrep 'ciphers|macs|kexalgorithms|hostkeyalgorithms|pubkeyacceptedalgorithms'
```
- 预期现象：sshd -T 需 root 读取主机私钥，未加 sudo 会报 no hostkeys available；应输出 SSH 服务端当前生效的算法配置。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">ciphers chacha20-poly1305@openssh.com,aes128-gcm@openssh.com,aes256-gcm@openssh.com,aes128-ctr,aes256-ctr
</span></span><span class="line"><span class="cl">macs umac-64-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com
</span></span><span class="line"><span class="cl">kexalgorithms curve25519-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512
</span></span><span class="line"><span class="cl">hostkeyalgorithms ssh-ed25519,rsa-sha2-512,rsa-sha2-256
</span></span><span class="line"><span class="cl">pubkeyacceptedalgorithms ssh-ed25519,rsa-sha2-512,rsa-sha2-256
</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-text" data-lang="text"><span class="line"><span class="cl">chacha20-poly1305@openssh.com
</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><span class="line"><span class="cl">aes128-ctr
</span></span><span class="line"><span class="cl">aes256-ctr
</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-text" data-lang="text"><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><span class="line"><span class="cl">umac-64-etm@openssh.com
</span></span><span class="line"><span class="cl">umac-128-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-text" data-lang="text"><span class="line"><span class="cl">curve25519-sha256
</span></span><span class="line"><span class="cl">curve25519-sha256@libssh.org
</span></span><span class="line"><span class="cl">ecdh-sha2-nistp256
</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></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-text" data-lang="text"><span class="line"><span class="cl">ssh-ed25519
</span></span><span class="line"><span class="cl">ssh-ed25519-cert-v01@openssh.com
</span></span><span class="line"><span class="cl">rsa-sha2-512
</span></span><span class="line"><span class="cl">rsa-sha2-256
</span></span><span class="line"><span class="cl">ssh-rsa
</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-text" data-lang="text"><span class="line"><span class="cl">OpenSSH_9.0p1, LibreSSL 3.3.6
</span></span></code></pre></div>
</details>


- 对应控制点：GB/T 22239-2019 8.1.4.1 c)（远程管理采用加密协议防止鉴别信息被窃听的技术实现）
- 判定要点：OpenSSH 版本受支持且仅启用安全算法（未启用 ssh-rsa/SHA-1、CBC 等不安全算法）判符合；版本老旧或启用不安全算法判部分符合。
- 取证要求：留存 sudo sshd -T 算法输出与 ssh -V 版本截图。


## 安全审计核查

```bash
sudo ls -l /var/audit
```
- 预期现象：/var/audit 及审计文件默认仅 root 可读，需 sudo；启用 BSM 审计时应显示审计日志目录及文件。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">total 24
</span></span><span class="line"><span class="cl">drwx------  3 root  wheel     96 Aug 20 09:00 .
</span></span><span class="line"><span class="cl">drwxr-xr-x  6 root  wheel    192 Aug 20 09:00 ..
</span></span><span class="line"><span class="cl">-rw-r-----  1 root  wheel   8192 Aug 21 17:32 20260821093000.not_terminated.demo-mac
</span></span></code></pre></div>
</details>


```bash
sudo praudit /var/audit/current
```
- 预期现象：审计文件仅 root 可读，需 sudo；当前审计日志文件存在时应输出可读审计记录，文件不存在时需结合现场确认审计状态。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">header,133,11,user authentication,0,Fri Aug 21 17:32:01 2026, + 120 msec
</span></span><span class="line"><span class="cl">subject,devuser,root,wheel,devuser,501,99,,0,0,192.168.1.10
</span></span><span class="line"><span class="cl">return,success,0
</span></span><span class="line"><span class="cl">trailer,133
</span></span></code></pre></div>
</details>


```bash
log show --last 1d
```
- 预期现象：应输出最近一天统一日志；输出通常较长。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">Timestamp                       Thread     Type        Activity             PID    TTL
</span></span><span class="line"><span class="cl">2026-08-21 09:00:12.345001+0800 0x1a2b     Default     0x0                  111    0    launchd: Bootstrapping com.apple.sshd
</span></span><span class="line"><span class="cl">2026-08-21 09:00:13.456002+0800 0x3c4d     Default     0x0                  222    0    sshd: Server listening on 0.0.0.0 port 22.
</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-text" data-lang="text"><span class="line"><span class="cl">devuser   pts/1        192.168.1.55     Fri Aug 21 16:02   still logged in
</span></span><span class="line"><span class="cl">devuser   console      Fri Aug 21 09:00   still logged in
</span></span><span class="line"><span class="cl">reboot    ~            Fri Aug 21 08:58
</span></span><span class="line"><span class="cl">shutdown  ~            Thu Aug 20 19:30
</span></span></code></pre></div>
</details>


- 对应控制点：GB/T 22239-2019 8.1.4.3 a)、b)、c)（审计覆盖每个用户、审计记录内容完整、审计记录保护与定期备份）
- 判定要点：未启用任何审计功能判不符合；审计已启用但未覆盖全部用户、留存周期不满足要求或未定期备份判部分符合；审计记录时间准确性需结合时间同步核查。
- 取证要求：留存 /var/audit 文件清单、praudit 与 log show 样例、审计策略配置及留存周期说明。

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


高风险提示：未开启任何安全审计功能、审计记录留存不满足要求属于高风险判定情形，判定口径见 [22、高风险判定指引与加固对照表](../../../reinforce/其他系统或设备/22高风险判定指引与加固对照表/)。
</div>


## 边界防护核查

```bash
/usr/libexec/ApplicationFirewall/socketfilterfw --getglobalstate
```
- 预期现象：应显示应用防火墙开关状态。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">Firewall is enabled. (State = 1)
</span></span></code></pre></div>
</details>


```bash
/usr/libexec/ApplicationFirewall/socketfilterfw --getblockall
```
- 预期现象：应显示是否启用 Block all incoming connections。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">Block all incoming connections is disabled
</span></span></code></pre></div>
</details>


```bash
/usr/libexec/ApplicationFirewall/socketfilterfw --getstealthmode
```
- 预期现象：应显示 stealth mode 是否启用。


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


```bash
sudo pfctl -s info
```
- 预期现象：pfctl 需 root 访问 /dev/pf，未加 sudo 会报 Permission denied；启用 PF 时应显示包过滤器状态信息（macOS 使用 pf，默认规则文件为 /etc/pf.conf）。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">Status: Enabled for 5 days 03:12, Debug: Urgent
</span></span><span class="line"><span class="cl">State Table                          Total             Rate
</span></span><span class="line"><span class="cl">  current entries                        4
</span></span><span class="line"><span class="cl">Searches                         18234567         41.15/s
</span></span><span class="line"><span class="cl">Matches                             23451          0.05/s
</span></span><span class="line"><span class="cl">Invalid Packets                         0          0.00/s
</span></span></code></pre></div>
</details>


```bash
sudo pfctl -sr
```
- 预期现象：pfctl 需 root 访问 /dev/pf；macOS 内置 pf（默认配置 /etc/pf.conf），存在 PF 规则时应输出规则集。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">scrub-anchor &#34;com.apple/*&#34; all fragment reassemble
</span></span><span class="line"><span class="cl">block drop in log proto tcp from any to any port = 23
</span></span><span class="line"><span class="cl">pass out on en0 all
</span></span></code></pre></div>
</details>


- 对应控制点：GB/T 22239-2019 8.1.4.4 b)（关闭不需要的系统服务、默认共享和高危端口）
- 判定要点：应用防火墙/PF 未启用且存在多余监听端口判部分符合；macOS 一般不作为网络边界设备，主机防火墙按纵深防御措施判定，需结合端口清单综合出具结论。
- 取证要求：留存 socketfilterfw 与 pfctl 的状态、规则输出及端口用途说明。


## 系统完整性与本地安全增强核查

```bash
csrutil status
```
- 预期现象：应显示 System Integrity Protection status: enabled 或 disabled。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">System Integrity Protection status: enabled.
</span></span></code></pre></div>
</details>


```bash
spctl --status
```
- 预期现象：应显示 assessments enabled 或 disabled，用于核查 Gatekeeper 状态。


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


```bash
fdesetup status
```
- 预期现象：应显示 FileVault 是否开启。


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


- 对应控制点：GB/T 22239-2019 8.1.4.5 a)（安装防恶意代码软件或配置具有相应功能的机制）；8.1.4.8 b)（采用密码技术保证存储数据保密性）
- 判定要点：SIP 被关闭、Gatekeeper 被禁用且无替代防护判部分符合或不符合；FileVault 未启用且磁盘存储鉴别信息或敏感数据时结合 8.1.4.8 b) 判定；macOS 内置 XProtect/Gatekeeper 可视为恶意代码防范机制。
- 取证要求：留存 csrutil、spctl、fdesetup 状态输出截图。

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


高风险提示：未采取任何恶意代码防范措施、鉴别信息明文存储属于高风险判定情形，判定口径见 [22、高风险判定指引与加固对照表](../../../reinforce/其他系统或设备/22高风险判定指引与加固对照表/)。
</div>


## 最小安装与补丁核查

```bash
softwareupdate --list
```
- 预期现象：应列出可用更新；若无更新，通常会提示未发现新软件。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">Software Update found the following new or updated software:
</span></span><span class="line"><span class="cl">   * Label: macOS Ventura 13.6-22G120
</span></span><span class="line"><span class="cl">	Title: macOS Ventura 13.6, Size: 1832476KiB, Recommended: YES,
</span></span></code></pre></div>
</details>


```bash
softwareupdate --history
```
- 预期现象：应显示历史安装更新记录。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">Display Name                                    Version     Date                Source
</span></span><span class="line"><span class="cl">macOS Ventura 13.5                              13.5        2026-07-28 10:12:34 Apple
</span></span><span class="line"><span class="cl">Safari                                          16.6        2026-07-28 10:05:01 Apple
</span></span><span class="line"><span class="cl">XProtectPlistDataUpdate                                     2026-08-18 04:30:00 Apple
</span></span></code></pre></div>
</details>


```bash
system_profiler SPApplicationsDataType
```
- 预期现象：应列出已安装应用信息；输出通常较长。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">    Terminal:
</span></span><span class="line"><span class="cl">      Version: 2.13
</span></span><span class="line"><span class="cl">      Obtained from: Identified Developer
</span></span><span class="line"><span class="cl">      Last Modified: 2026/8/1, 09:30
</span></span><span class="line"><span class="cl">      Kind: Intel
</span></span><span class="line"><span class="cl">      Signed by: Software Signing, Apple Code Signing Certification Authority...
</span></span></code></pre></div>
</details>


- 对应控制点：GB/T 22239-2019 8.1.4.4 a)（最小安装，仅安装需要的组件和应用程序）、d)（发现已知漏洞并及时修补）
- 判定要点：安装与业务无关组件、长期未安装安全补丁判部分符合；使用已停止安全维护的系统版本或存在可被利用的高危漏洞判不符合。
- 取证要求：留存 softwareupdate --list/--history 输出与已安装应用清单。

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


高风险提示：使用已停止安全维护的系统版本、高危漏洞未及时修补属于高风险判定情形，判定口径见 [22、高风险判定指引与加固对照表](../../../reinforce/其他系统或设备/22高风险判定指引与加固对照表/)。
</div>


## 时间同步与计划任务核查

```bash
sudo systemsetup -getusingnetworktime
```
- 预期现象：systemsetup 须以 root 运行；应显示是否使用网络时间同步。


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


```bash
sudo systemsetup -getnetworktimeserver
```
- 预期现象：systemsetup 须以 root 运行；应显示当前网络时间服务器。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">Network Time Server: time.internal.example.com
</span></span></code></pre></div>
</details>


```bash
sudo systemsetup -gettimezone
```
- 预期现象：systemsetup 须以 root 运行；应显示当前时区。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">Time Zone: Asia/Shanghai
</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-text" data-lang="text"><span class="line"><span class="cl">*/5 * * * * /usr/local/bin/healthcheck.sh &gt;&gt; ~/healthcheck.log 2&gt;&amp;1
</span></span></code></pre></div>
</details>


```bash
launchctl list
```
- 预期现象：应列出当前 launchd 管理的任务和服务；输出通常较长。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">PID	Status	Label
</span></span><span class="line"><span class="cl">-	0	com.apple.coreservices.uiagent
</span></span><span class="line"><span class="cl">512	0	com.apple.rapportd
</span></span><span class="line"><span class="cl">-	78	com.openssh.ssh-agent
</span></span></code></pre></div>
</details>


- 对应控制点：GB/T 22239-2019 8.1.4.3 b)（审计记录日期时间准确性的支撑项）；计划任务最小化对应 8.1.4.4 b)
- 判定要点：时间未同步导致审计记录时间不可信时，结合安全审计判部分符合；存在来源不明的计划任务判不符合，并建议按安全事件处置流程核查。
- 取证要求：留存网络时间与时区配置输出、crontab 与 launchctl 任务清单。


## 入侵防范核查

```bash
grep -E '^(PermitRootLogin|LoginGraceTime|MaxAuthTries|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-text" data-lang="text"><span class="line"><span class="cl">PermitRootLogin no
</span></span><span class="line"><span class="cl">LoginGraceTime 30
</span></span><span class="line"><span class="cl">MaxAuthTries 4
</span></span><span class="line"><span class="cl">AllowUsers devuser audituser
</span></span></code></pre></div>
</details>


```bash
sudo sshd -T | egrep 'permitrootlogin|logingracetime|maxauthtries|allowusers|denyusers|allowgroups|denygroups'
```
- 预期现象：sshd -T 需 root 读取主机私钥；应输出 SSH 服务端当前生效的对应参数值。


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


```bash
log show --predicate 'eventMessage contains "Failed password"' --last 1d
```
- 预期现象：如有 SSH 失败登录事件，应在统一日志中出现匹配记录；无事件时可能为空。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">2026-08-21 14:22:31.102004+0800 0x5e6f Default 0x0 333 0 sshd: Failed password for invalid user admin from 203.0.113.77 port 51234 ssh2
</span></span><span class="line"><span class="cl">2026-08-21 14:22:38.210115+0800 0x5e70 Default 0x0 333 0 sshd: Failed password for invalid user admin from 203.0.113.77 port 51236 ssh2
</span></span></code></pre></div>
</details>


- 对应控制点：GB/T 22239-2019 8.1.4.1 b)（登录失败处理）；8.1.4.4 b)、c)（服务最小化与管理终端接入范围限制）
- 判定要点：允许 root 直接口令登录、未配置登录失败处理或未按地址范围限制管理终端判部分符合或不符合；结合失败登录日志佐证暴力破解防护有效性。
- 取证要求：留存 sshd_config 与 sshd -T 参数输出、失败登录日志样例。


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

```bash
defaults read /Library/Preferences/com.apple.loginwindow LoginwindowText
```
- 预期现象：如配置了登录告警文本，应输出对应内容；未配置时可能报错或无输出。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">本系统仅限授权人员使用，操作将被审计。
</span></span></code></pre></div>
</details>


```bash
sudo launchctl list | grep auditd
```
- 预期现象：auditd 属系统域守护进程，需 sudo 查看系统域；启用审计时应显示 com.apple.auditd，未启用时可能无结果。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">245	0	com.apple.auditd
</span></span></code></pre></div>
</details>


- 对应控制点：GB/T 22239-2019 8.1.4.3 d)（对审计进程进行保护，防止未经授权的中断）；登录告警文本为身份鉴别警示的辅助核查项
- 判定要点：auditd 未运行判部分符合，并与「安全审计核查」节综合判定；未设置登录告警文本不单独判不符合，属管理要求补充项。
- 取证要求：留存 auditd 服务状态输出与 LoginwindowText 截图。

## 参考依据

- GB/T 22239-2019《信息安全技术 网络安全等级保护基本要求》8.1.4 安全计算环境（[国家标准全文公开系统](https://openstd.samr.gov.cn/bzgk/gb/newGbInfo?hcno=BAFB47E8874764186BDB7865E8344DAF)）
- GB/T 28448-2019《信息安全技术 网络安全等级保护测评要求》（[国家标准全文公开系统](https://openstd.samr.gov.cn/bzgk/gb/newGbInfo?hcno=7E736CDF4502B6FF1258DD250AA3EC8C)）
- [Apple 平台安全保护：Gatekeeper and runtime protection in macOS](https://support.apple.com/guide/security/gatekeeper-and-runtime-protection-sec5599b66df/web)
- [Apple 平台安全保护：System Integrity Protection](https://support.apple.com/guide/security/system-integrity-protection-secb7ea06b49/web)
- [Apple 平台安全保护：Volume encryption with FileVault in macOS](https://support.apple.com/guide/security/volume-encryption-with-filevault-sec4c6dc1b6e/web)
- [Apple 平台安全保护：Protecting against malware in macOS](https://support.apple.com/guide/security/protecting-against-malware-sec469d47bd8/web)
- [macOS 使用手册：Block connections to your Mac with a firewall](https://support.apple.com/guide/mac-help/mh34041/mac)
- [macOS 使用手册：Allow a remote computer to access your Mac](https://support.apple.com/guide/mac-help/mchlp1066/mac)
- 《网络安全等级保护测评高风险判定指引》（联盟团标，判定口径同步收录于 [22、高风险判定指引与加固对照表](../../../reinforce/其他系统或设备/22高风险判定指引与加固对照表/)）
- 命令核验说明：本文命令已于 2026-09 对照 Apple 官方文档核验，现场以实际 macOS 版本为准。

## 关联文章

- 配套加固：[17、加固方案总纲](../../../reinforce/其他系统或设备/17网络设备安全设备服务器数据库和应用系统的加固方案/)
- 取证记录：[16、安全评估加固记录表3.0](../../../reinforce/其他系统或设备/16安全评估加固记录表3.0/)
- 高风险口径：[22、高风险判定指引与加固对照表](../../../reinforce/其他系统或设备/22高风险判定指引与加固对照表/)
