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 远程接入服务核查,以及远程连接协议与算法、安全审计、边界防护、系统完整性与本地安全增强、最小安装与补丁、时间同步与计划任务、入侵防范、安全基线与完整性核查。

示例版本:macOS Ventura 13

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

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

系统版本核查

sw_vers
  • 预期现象:应显示 ProductName、ProductVersion、BuildVersion 等字段。
示例输出(节选)
ProductName:		macOS
ProductVersion:		13.5.2
BuildVersion:		22G91
system_profiler SPSoftwareDataType
  • 预期现象:应显示 System Version、Kernel Version、Boot Volume、Secure Virtual Memory 等软件信息。
示例输出(节选)
Software:

    System Software Overview:

      System Version: macOS 13.5.2 (22G91)
      Kernel Version: Darwin 22.6.0
      Boot Volume: Macintosh HD
      Secure Virtual Memory: Enabled
uname -a
  • 预期现象:应显示 Darwin 内核版本、主机名、架构等信息。
示例输出(节选)
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
  • 对应控制点:GB/T 22239-2019 8.1.4.4 d)(及时发现已知漏洞并修补,系统版本处于安全维护期)
  • 判定要点:本节为核查起点,记录系统版本与 Build 号作为基线证据;版本已停止安全维护或长期未安装安全补丁时,结合补丁策略判部分符合或不符合。
  • 取证要求:留存 sw_vers、system_profiler 输出及测评时间截图。

网络配置核查

ifconfig
  • 预期现象:应显示网络接口、IPv4/IPv6、MAC 地址等信息。
示例输出(节选)
en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
	ether a1:b2:c3:d4:e5:f6
	inet 192.168.1.10 netmask 0xffffff00 broadcast 192.168.1.255
	inet6 fe80::1234:5678:90ab:cdef%en0 prefixlen 64 secured scopeid 0x6
	media: autoselect
	status: active
networksetup -listallnetworkservices
  • 预期现象:应列出当前配置的网络服务名称。
示例输出(节选)
An asterisk (*) denotes that a network service is disabled.
Wi-Fi
Thunderbolt Ethernet
scutil --dns
  • 预期现象:应显示当前 DNS 解析器配置。
示例输出(节选)
DNS configuration

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

账户与口令策略核查

dscl . list /Users
  • 预期现象:应列出本地用户对象。
示例输出(节选)
daemon
nobody
root
admin
devuser
dscl . -read /Users/root
  • 预期现象:应显示 root 账户属性;若未启用 root,仍可用于核查账户对象信息。
示例输出(节选)
AppleMetaNodeLocation: /Local/Default
GeneratedUID: FFFFEEEE-DDDD-CCCC-BBBB-AAAA00000000
NFSHomeDirectory: /var/root
RecordName: root
UniqueID: 0
UserShell: /bin/sh
sudo pwpolicy -getaccountpolicies
  • 预期现象:pwpolicy 读取全局策略需以管理员权限运行;已配置账户口令策略时应输出策略 XML/plist,未配置时输出为空 plist。
示例输出(节选)
Getting global account policies

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>policyCategoryAuthenticationContent</key>
	<array>
		<dict>
			<key>policyContent</key>
			<string>policyAttributeCurrentFailedAttempts &gt;= 5 ...</string>
			<key>policyIdentifier</key>
			<string>maxFailedLoginAttempts</string>
		</dict>
	</array>
	<key>policyCategoryPasswordContent</key>
	<array>
		<dict>
			<key>policyContent</key>
			<string>policyAttributePassword matches '(?=.*[0-9].*[A-Za-z]).{8,}'</string>
			<key>policyIdentifier</key>
			<string>customPasswordComplexity</string>
		</dict>
	</array>
	...(其余策略键值略)
</dict>
sysadminctl -secureTokenStatus 用户名
  • 预期现象:应显示指定用户是否具有 Secure Token。
示例输出(节选)
Secure token is ENABLED for user devuser
cat /etc/pam.d/authorization
  • 预期现象:应显示本地认证相关 PAM 配置。
示例输出(节选)
auth       optional       pam_kanji.so
auth       optional       pam_cknso.so
auth       required       pam_opendirectory.so use_first_pass
account    required       pam_opendirectory.so
  • 对应控制点:GB/T 22239-2019 8.1.4.1 a)、b)(身份标识唯一、口令复杂度与定期更换、登录失败处理);8.1.4.2 b)、c)(默认账户口令处理与多余账户停用)
  • 判定要点:未配置口令复杂度/定期更换策略,或存在默认口令、弱口令、共享账户判不符合;仅部分策略缺失或个别多余账户未停用判部分符合。
  • 取证要求:留存 pwpolicy 策略输出与账户清单,辅以口令更改记录抽查及访谈结果。

远程接入服务核查

sudo systemsetup -getremotelogin
  • 预期现象:systemsetup 须以 root 运行(否则提示 You need administrator access to run this tool);应显示 Remote Login: On 或 Off。Apple 官方说明远程登录使用 SSH 或 SFTP。
示例输出(节选)
Remote Login: On
sudo systemsetup -getremoteappleevents
  • 预期现象:systemsetup 须以 root 运行;应显示 Remote Apple Events: On 或 Off。
示例输出(节选)
Remote Apple Events: Off
lsof -iTCP -sTCP:LISTEN -n -P
  • 预期现象:应显示当前监听端口及对应进程。
示例输出(节选)
COMMAND   PID USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
launchd     1 root    8u  IPv4 0xa1b2c3d4e5f6      0t0  TCP *:22 (LISTEN)
rapportd  512 user    4u  IPv4 0xf6e5d4c3b2a1      0t0  TCP *:59241 (LISTEN)
sudo launchctl list | grep ssh
  • 预期现象:sshd 属系统域守护进程,普通用户的 launchctl list 仅显示当前用户域,需 sudo 查看系统域;启用 SSH 时可见 com.openssh.sshd(PID 为 “-” 表示按需启动)。
示例输出(节选)
-	0	com.openssh.sshd
  • 对应控制点:GB/T 22239-2019 8.1.4.1 c)(远程管理防止鉴别信息被窃听);8.1.4.4 b)(关闭不需要的系统服务与高危端口)
  • 判定要点:远程管理仅保留 SSH/SFTP 等加密协议、未开启 Remote Apple Events 等不必要服务判符合;开启 Telnet、FTP 等明文协议判不符合;仅存在多余服务或多余监听端口判部分符合。
  • 取证要求:留存 systemsetup 服务状态输出与 lsof 监听端口清单。

远程连接协议与算法核查

cat /etc/ssh/sshd_config
  • 预期现象:应显示 SSH 服务端配置,可核查认证、访问控制和算法参数。
示例输出(节选)
#Port 22
#AddressFamily any
#ListenAddress 0.0.0.0
#PermitRootLogin prohibit-password
#MaxAuthTries 6
#PubkeyAuthentication yes
Subsystem	sftp	/usr/libexec/sftp-server
sudo sshd -T | egrep 'ciphers|macs|kexalgorithms|hostkeyalgorithms|pubkeyacceptedalgorithms'
  • 预期现象:sshd -T 需 root 读取主机私钥,未加 sudo 会报 no hostkeys available;应输出 SSH 服务端当前生效的算法配置。
示例输出(节选)
ciphers chacha20-poly1305@openssh.com,aes128-gcm@openssh.com,aes256-gcm@openssh.com,aes128-ctr,aes256-ctr
macs umac-64-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com
kexalgorithms curve25519-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512
hostkeyalgorithms ssh-ed25519,rsa-sha2-512,rsa-sha2-256
pubkeyacceptedalgorithms ssh-ed25519,rsa-sha2-512,rsa-sha2-256
ssh -Q cipher
  • 预期现象:应列出本机 OpenSSH 支持的对称加密算法。
示例输出(节选)
chacha20-poly1305@openssh.com
aes128-gcm@openssh.com
aes256-gcm@openssh.com
aes128-ctr
aes256-ctr
ssh -Q mac
  • 预期现象:应列出本机 OpenSSH 支持的 MAC 算法。
示例输出(节选)
hmac-sha2-256-etm@openssh.com
hmac-sha2-512-etm@openssh.com
umac-64-etm@openssh.com
umac-128-etm@openssh.com
ssh -Q kex
  • 预期现象:应列出本机 OpenSSH 支持的密钥交换算法。
示例输出(节选)
curve25519-sha256
curve25519-sha256@libssh.org
ecdh-sha2-nistp256
diffie-hellman-group14-sha256
diffie-hellman-group16-sha512
ssh -Q key
  • 预期现象:应列出本机 OpenSSH 支持的主机密钥/公钥算法。
示例输出(节选)
ssh-ed25519
ssh-ed25519-cert-v01@openssh.com
rsa-sha2-512
rsa-sha2-256
ssh-rsa
ssh -V
  • 预期现象:应输出 OpenSSH 版本号。
示例输出(节选)
OpenSSH_9.0p1, LibreSSL 3.3.6
  • 对应控制点:GB/T 22239-2019 8.1.4.1 c)(远程管理采用加密协议防止鉴别信息被窃听的技术实现)
  • 判定要点:OpenSSH 版本受支持且仅启用安全算法(未启用 ssh-rsa/SHA-1、CBC 等不安全算法)判符合;版本老旧或启用不安全算法判部分符合。
  • 取证要求:留存 sudo sshd -T 算法输出与 ssh -V 版本截图。

安全审计核查

sudo ls -l /var/audit
  • 预期现象:/var/audit 及审计文件默认仅 root 可读,需 sudo;启用 BSM 审计时应显示审计日志目录及文件。
示例输出(节选)
total 24
drwx------  3 root  wheel     96 Aug 20 09:00 .
drwxr-xr-x  6 root  wheel    192 Aug 20 09:00 ..
-rw-r-----  1 root  wheel   8192 Aug 21 17:32 20260821093000.not_terminated.demo-mac
sudo praudit /var/audit/current
  • 预期现象:审计文件仅 root 可读,需 sudo;当前审计日志文件存在时应输出可读审计记录,文件不存在时需结合现场确认审计状态。
示例输出(节选)
header,133,11,user authentication,0,Fri Aug 21 17:32:01 2026, + 120 msec
subject,devuser,root,wheel,devuser,501,99,,0,0,192.168.1.10
return,success,0
trailer,133
log show --last 1d
  • 预期现象:应输出最近一天统一日志;输出通常较长。
示例输出(节选)
Timestamp                       Thread     Type        Activity             PID    TTL
2026-08-21 09:00:12.345001+0800 0x1a2b     Default     0x0                  111    0    launchd: Bootstrapping com.apple.sshd
2026-08-21 09:00:13.456002+0800 0x3c4d     Default     0x0                  222    0    sshd: Server listening on 0.0.0.0 port 22.
last
  • 预期现象:应显示登录记录。
示例输出(节选)
devuser   pts/1        192.168.1.55     Fri Aug 21 16:02   still logged in
devuser   console      Fri Aug 21 09:00   still logged in
reboot    ~            Fri Aug 21 08:58
shutdown  ~            Thu Aug 20 19:30
  • 对应控制点:GB/T 22239-2019 8.1.4.3 a)、b)、c)(审计覆盖每个用户、审计记录内容完整、审计记录保护与定期备份)
  • 判定要点:未启用任何审计功能判不符合;审计已启用但未覆盖全部用户、留存周期不满足要求或未定期备份判部分符合;审计记录时间准确性需结合时间同步核查。
  • 取证要求:留存 /var/audit 文件清单、praudit 与 log show 样例、审计策略配置及留存周期说明。

边界防护核查

/usr/libexec/ApplicationFirewall/socketfilterfw --getglobalstate
  • 预期现象:应显示应用防火墙开关状态。
示例输出(节选)
Firewall is enabled. (State = 1)
/usr/libexec/ApplicationFirewall/socketfilterfw --getblockall
  • 预期现象:应显示是否启用 Block all incoming connections。
示例输出(节选)
Block all incoming connections is disabled
/usr/libexec/ApplicationFirewall/socketfilterfw --getstealthmode
  • 预期现象:应显示 stealth mode 是否启用。
示例输出(节选)
Stealth mode enabled
sudo pfctl -s info
  • 预期现象:pfctl 需 root 访问 /dev/pf,未加 sudo 会报 Permission denied;启用 PF 时应显示包过滤器状态信息(macOS 使用 pf,默认规则文件为 /etc/pf.conf)。
示例输出(节选)
Status: Enabled for 5 days 03:12, Debug: Urgent
State Table                          Total             Rate
  current entries                        4
Searches                         18234567         41.15/s
Matches                             23451          0.05/s
Invalid Packets                         0          0.00/s
sudo pfctl -sr
  • 预期现象:pfctl 需 root 访问 /dev/pf;macOS 内置 pf(默认配置 /etc/pf.conf),存在 PF 规则时应输出规则集。
示例输出(节选)
scrub-anchor "com.apple/*" all fragment reassemble
block drop in log proto tcp from any to any port = 23
pass out on en0 all
  • 对应控制点:GB/T 22239-2019 8.1.4.4 b)(关闭不需要的系统服务、默认共享和高危端口)
  • 判定要点:应用防火墙/PF 未启用且存在多余监听端口判部分符合;macOS 一般不作为网络边界设备,主机防火墙按纵深防御措施判定,需结合端口清单综合出具结论。
  • 取证要求:留存 socketfilterfw 与 pfctl 的状态、规则输出及端口用途说明。

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

csrutil status
  • 预期现象:应显示 System Integrity Protection status: enabled 或 disabled。
示例输出(节选)
System Integrity Protection status: enabled.
spctl --status
  • 预期现象:应显示 assessments enabled 或 disabled,用于核查 Gatekeeper 状态。
示例输出(节选)
assessments enabled
fdesetup status
  • 预期现象:应显示 FileVault 是否开启。
示例输出(节选)
FileVault is On.
  • 对应控制点: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 状态输出截图。

最小安装与补丁核查

softwareupdate --list
  • 预期现象:应列出可用更新;若无更新,通常会提示未发现新软件。
示例输出(节选)
Software Update found the following new or updated software:
   * Label: macOS Ventura 13.6-22G120
	Title: macOS Ventura 13.6, Size: 1832476KiB, Recommended: YES,
softwareupdate --history
  • 预期现象:应显示历史安装更新记录。
示例输出(节选)
Display Name                                    Version     Date                Source
macOS Ventura 13.5                              13.5        2026-07-28 10:12:34 Apple
Safari                                          16.6        2026-07-28 10:05:01 Apple
XProtectPlistDataUpdate                                     2026-08-18 04:30:00 Apple
system_profiler SPApplicationsDataType
  • 预期现象:应列出已安装应用信息;输出通常较长。
示例输出(节选)
    Terminal:
      Version: 2.13
      Obtained from: Identified Developer
      Last Modified: 2026/8/1, 09:30
      Kind: Intel
      Signed by: Software Signing, Apple Code Signing Certification Authority...
  • 对应控制点:GB/T 22239-2019 8.1.4.4 a)(最小安装,仅安装需要的组件和应用程序)、d)(发现已知漏洞并及时修补)
  • 判定要点:安装与业务无关组件、长期未安装安全补丁判部分符合;使用已停止安全维护的系统版本或存在可被利用的高危漏洞判不符合。
  • 取证要求:留存 softwareupdate –list/–history 输出与已安装应用清单。

时间同步与计划任务核查

sudo systemsetup -getusingnetworktime
  • 预期现象:systemsetup 须以 root 运行;应显示是否使用网络时间同步。
示例输出(节选)
Network Time: On
sudo systemsetup -getnetworktimeserver
  • 预期现象:systemsetup 须以 root 运行;应显示当前网络时间服务器。
示例输出(节选)
Network Time Server: time.internal.example.com
sudo systemsetup -gettimezone
  • 预期现象:systemsetup 须以 root 运行;应显示当前时区。
示例输出(节选)
Time Zone: Asia/Shanghai
crontab -l
  • 预期现象:应显示当前用户计划任务;无任务时可能提示 no crontab。
示例输出(节选)
*/5 * * * * /usr/local/bin/healthcheck.sh >> ~/healthcheck.log 2>&1
launchctl list
  • 预期现象:应列出当前 launchd 管理的任务和服务;输出通常较长。
示例输出(节选)
PID	Status	Label
-	0	com.apple.coreservices.uiagent
512	0	com.apple.rapportd
-	78	com.openssh.ssh-agent
  • 对应控制点:GB/T 22239-2019 8.1.4.3 b)(审计记录日期时间准确性的支撑项);计划任务最小化对应 8.1.4.4 b)
  • 判定要点:时间未同步导致审计记录时间不可信时,结合安全审计判部分符合;存在来源不明的计划任务判不符合,并建议按安全事件处置流程核查。
  • 取证要求:留存网络时间与时区配置输出、crontab 与 launchctl 任务清单。

入侵防范核查

grep -E '^(PermitRootLogin|LoginGraceTime|MaxAuthTries|AllowUsers|DenyUsers|AllowGroups|DenyGroups)' /etc/ssh/sshd_config
  • 预期现象:应能看到 SSH 暴力破解防护与访问控制相关参数。
示例输出(节选)
PermitRootLogin no
LoginGraceTime 30
MaxAuthTries 4
AllowUsers devuser audituser
sudo sshd -T | egrep 'permitrootlogin|logingracetime|maxauthtries|allowusers|denyusers|allowgroups|denygroups'
  • 预期现象:sshd -T 需 root 读取主机私钥;应输出 SSH 服务端当前生效的对应参数值。
示例输出(节选)
permitrootlogin no
logingracetime 30
maxauthtries 4
allowusers devuser audituser
denyusers none
allowgroups none
denygroups none
log show --predicate 'eventMessage contains "Failed password"' --last 1d
  • 预期现象:如有 SSH 失败登录事件,应在统一日志中出现匹配记录;无事件时可能为空。
示例输出(节选)
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
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
  • 对应控制点:GB/T 22239-2019 8.1.4.1 b)(登录失败处理);8.1.4.4 b)、c)(服务最小化与管理终端接入范围限制)
  • 判定要点:允许 root 直接口令登录、未配置登录失败处理或未按地址范围限制管理终端判部分符合或不符合;结合失败登录日志佐证暴力破解防护有效性。
  • 取证要求:留存 sshd_config 与 sshd -T 参数输出、失败登录日志样例。

安全基线与完整性核查

defaults read /Library/Preferences/com.apple.loginwindow LoginwindowText
  • 预期现象:如配置了登录告警文本,应输出对应内容;未配置时可能报错或无输出。
示例输出(节选)
本系统仅限授权人员使用,操作将被审计。
sudo launchctl list | grep auditd
  • 预期现象:auditd 属系统域守护进程,需 sudo 查看系统域;启用审计时应显示 com.apple.auditd,未启用时可能无结果。
示例输出(节选)
245	0	com.apple.auditd
  • 对应控制点:GB/T 22239-2019 8.1.4.3 d)(对审计进程进行保护,防止未经授权的中断);登录告警文本为身份鉴别警示的辅助核查项
  • 判定要点:auditd 未运行判部分符合,并与「安全审计核查」节综合判定;未设置登录告警文本不单独判不符合,属管理要求补充项。
  • 取证要求:留存 auditd 服务状态输出与 LoginwindowText 截图。

参考依据

关联文章