macOS-三级等保现场测评命令单

示例版本: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

网络配置核查

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)

账户与口令策略核查

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
pwpolicy -getaccountpolicies
  • 预期现象:已配置账户口令策略时应输出策略 XML/plist;未配置时可能为空。
示例输出(节选)
Getting global account policies

+-------------------------------------------------------------------------------+
policyCategoryPasswordContent:
        policyIdentifier: maxFailedLoginAttempts
        policyContent: policyAttributeCurrentFailedAttempts < 5 ...
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

远程接入服务核查

systemsetup -getremotelogin
  • 预期现象:应显示 Remote Login: On 或 Off。Apple 官方说明远程登录使用 SSH 或 SFTP。
示例输出(节选)
Remote Login: On
systemsetup -getremoteappleevents
  • 预期现象:应显示 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)
launchctl list | grep ssh
  • 预期现象:启用 SSH 时通常可见 sshd 相关服务或进程标识。
示例输出(节选)
-	0	com.openssh.sshd

远程连接协议与算法核查

cat /etc/ssh/sshd_config
  • 预期现象:应显示 SSH 服务端配置,可核查认证、访问控制和算法参数。
示例输出(节选)
#Port 22
#AddressFamily any
#ListenAddress 0.0.0.0
#PermitRootLogin prohibit-password
#MaxAuthTries 6
#PubkeyAuthentication yes
Subsystem	sftp	internal-sftp
sshd -T | egrep 'ciphers|macs|kexalgorithms|hostkeyalgorithms|pubkeyacceptedalgorithms'
  • 预期现象:应输出 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

安全审计核查

ls -l /var/audit
  • 预期现象:启用 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
praudit /var/audit/current
  • 预期现象:当前审计日志文件存在时应输出可读审计记录;文件不存在时需结合现场确认审计状态。
示例输出(节选)
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
2026-08-21 09:00:12.345001+0800 0x1a2b     Default     0x0                  111   launchd: Bootstrapping com.apple.sshd
2026-08-21 09:00:13.456002+0800 0x3c4d     Default     0x0                  222   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

边界防护核查

/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
pfctl -s info
  • 预期现象:启用 PF 时应显示包过滤器状态信息。
示例输出(节选)
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
pfctl -sr
  • 预期现象:存在 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

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

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.

最小安装与补丁核查

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...

时间同步与计划任务核查

systemsetup -getusingnetworktime
  • 预期现象:应显示是否使用网络时间同步。
示例输出(节选)
Network Time: On
systemsetup -getnetworktimeserver
  • 预期现象:应显示当前网络时间服务器。
示例输出(节选)
Network Time Server: time.internal.example.com
systemsetup -gettimezone
  • 预期现象:应显示当前时区。
示例输出(节选)
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

入侵防范核查

grep -E '^(PermitRootLogin|LoginGraceTime|MaxAuthTries|AllowUsers|DenyUsers|AllowGroups|DenyGroups)' /etc/ssh/sshd_config
  • 预期现象:应能看到 SSH 暴力破解防护与访问控制相关参数。
示例输出(节选)
PermitRootLogin no
LoginGraceTime 30
MaxAuthTries 4
AllowUsers devuser audituser
sshd -T | egrep 'permitrootlogin|logingracetime|maxauthtries|allowusers|denyusers|allowgroups|denygroups'
  • 预期现象:应输出 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 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 sshd: Failed password for invalid user admin from 203.0.113.77 port 51236 ssh2

安全基线与完整性核查

defaults read /Library/Preferences/com.apple.loginwindow LoginwindowText
  • 预期现象:如配置了登录告警文本,应输出对应内容;未配置时可能报错或无输出。
示例输出(节选)
本系统仅限授权人员使用,操作将被审计。
launchctl list | grep auditd
  • 预期现象:启用审计时应显示 auditd 相关服务;未启用时可能无结果。
示例输出(节选)
245	0	com.apple.auditd