Appearance
安全防护
本章将介绍 macOS 安全配置,包括系统安全、隐私保护、网络安全等内容。
安全概述
macOS 安全架构
text
macOS 安全架构:
系统完整性保护 (SIP)
├── 保护系统文件
├── 限制内核扩展
├── 防止进程调试
└── 默认启用
Gatekeeper
├── 验证应用签名
├── 检查应用来源
├── 阻止恶意软件
└── 默认启用
XProtect
├── 内置恶意软件检测
├── 自动更新定义
└── 后台运行
FileVault
├── 全盘加密
├── 保护数据安全
└── 防止未授权访问
沙盒机制
├── 限制应用权限
├── 隔离应用数据
└── 保护系统安全查看安全状态
bash
# 查看 SIP 状态
csrutil status
# 查看 Gatekeeper 状态
spctl --status
# 查看 FileVault 状态
fdesetup status
# 查看防火墙状态
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --getglobalstate
# 查看安全设置
# 系统设置 → 隐私与安全性系统完整性保护 (SIP)
SIP 功能
text
SIP 保护范围:
├── /System 目录
├── /usr 目录
├── /bin 目录
├── /sbin 目录
├── 预装的 Apple 应用
└── 系统内核扩展
SIP 限制:
├── 无法修改受保护的系统文件
├── 无法加载未签名的内核扩展
├── 无法调试系统进程
└── 无法修改系统目录权限管理 SIP
bash
# 查看 SIP 状态
csrutil status
# 禁用 SIP(需要恢复模式)
# 1. 重启进入恢复模式
# 2. 打开终端
# 3. 执行: csrutil disable
# 4. 重启
# 启用 SIP
# 在恢复模式执行: csrutil enable
# 查看 SIP 配置
csrutil report
# 部分禁用 SIP(高级)
# csrutil enable --without debug
# csrutil enable --without fs
# csrutil enable --without kextGatekeeper
Gatekeeper 设置
bash
# 查看 Gatekeeper 状态
spctl --status
# 启用 Gatekeeper
sudo spctl --master-enable
# 禁用 Gatekeeper(不推荐)
sudo spctl --master-disable
# 允许特定应用
sudo xattr -rd com.apple.quarantine /Applications/App.app
# 查看允许的应用
spctl --list
# 评估应用
spctl --assess --verbose /Applications/App.app应用签名验证
bash
# 查看应用签名
codesign -dv --verbose=4 /Applications/App.app
# 验证应用签名
codesign --verify --deep --strict --verbose=2 /Applications/App.app
# 查看签名证书
codesign -dvvv /Applications/App.app
# 公证状态检查
spctl -a -t exec -vv /Applications/App.appFileVault 加密
启用 FileVault
bash
# 查看 FileVault 状态
fdesetup status
# 启用 FileVault
sudo fdesetup enable
# 启用并设置恢复密钥
sudo fdesetup enable -personal
# 查看加密进度
fdesetup status -verbose
# 查看恢复密钥
sudo fdesetup displayrecoverykey
# 更改恢复密钥
sudo fdesetup changerecovery -personal
# 禁用 FileVault
sudo fdesetup disableFileVault 用户管理
bash
# 查看授权用户
fdesetup list
# 添加用户到 FileVault
sudo fdesetup add -usertoadd 用户名
# 移除用户
sudo fdesetup remove -user 用户名
# 验证用户密码
fdesetup authrestart -user 用户名防火墙配置
基本防火墙设置
bash
# 查看防火墙状态
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --getglobalstate
# 启用防火墙
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setglobalstate on
# 禁用防火墙
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setglobalstate off
# 查看防火墙日志
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --getloggingmode
# 启用日志
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setloggingmode on
# 查看防火墙版本
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --getversion防火墙规则管理
bash
# 查看已添加的应用
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --listapps
# 添加应用到防火墙
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --add /Applications/App.app
# 删除应用
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --remove /Applications/App.app
# 允许传入连接
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --unblockapp /Applications/App.app
# 阻止传入连接
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --blockapp /Applications/App.app
# 查看被阻止的应用
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --listblockedapps隐身模式
bash
# 查看隐身模式状态
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --getstealthmode
# 启用隐身模式
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setstealthmode on
# 禁用隐身模式
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setstealthmode off隐私设置
权限管理
text
隐私权限类型:
├── 位置服务
├── 相机
├── 麦克风
├── 通讯录
├── 日历
├── 提醒事项
├── 照片
├── 蓝牙
├── 文件和文件夹
├── 辅助功能
├── 完全磁盘访问权限
├── 输入监控
└── 屏幕录制命令行管理权限
bash
# 查看权限数据库
sqlite3 ~/Library/Application\ Support/com.apple.TCC/TCC.db "SELECT client, auth_value FROM access WHERE service='kTCCServiceCamera';"
# 重置权限
tccutil reset All
# 重置特定权限
tccutil reset Camera
tccutil reset Microphone
tccutil reset Location
tccutil reset Contacts
tccutil reset Calendar
tccutil reset Photos
tccutil reset Accessibility
# 查看辅助功能权限
# 系统设置 → 隐私与安全性 → 辅助功能定位服务
bash
# 查看定位服务状态
defaults read /var/db/locationd/Library/Preferences/ByHost/com.apple.locationd
# 启用/禁用定位服务
# 系统设置 → 隐私与安全性 → 定位服务
# 查看使用定位的应用
# 定位服务列表中查看密码安全
钥匙串安全
bash
# 锁定钥匙串
security lock-keychain
# 锁定所有钥匙串
security lock-keychain -a
# 设置钥匙串自动锁定时间
security set-keychain-settings -t 3600 -l ~/Library/Keychains/login.keychain-db
# 查看钥匙串设置
security show-keychain-info
# 更改钥匙串密码
security set-keychain-password
# 验证钥匙串密码
security unlock-keychain -p 密码密码生成
bash
# 生成随机密码
openssl rand -base64 12
# 使用 pwgen(需安装)
brew install pwgen
pwgen -s 16 1
# 使用 security 命令
security generate-password -h
# 生成并存储密码
security add-generic-password -a "用户名" -s "服务名" -w "密码"网络安全
安全网络连接
bash
# 查看 SSL 证书
openssl s_client -connect www.baidu.com:443 -showcerts
# 验证证书
openssl verify -CAfile /etc/ssl/cert.pem certificate.pem
# 查看证书信息
openssl x509 -in certificate.pem -text -noout
# 测试 TLS 连接
openssl s_client -connect www.baidu.com:443 -tls1_2
# 查看支持的加密套件
nmap --script ssl-enum-ciphers -p 443 www.baidu.comSSH 安全
bash
# 生成 SSH 密钥
ssh-keygen -t ed25519 -C "your@email.com"
# 生成 RSA 密钥
ssh-keygen -t rsa -b 4096 -C "your@email.com"
# 查看公钥
cat ~/.ssh/id_ed25519.pub
# 添加到 SSH 代理
ssh-add --apple-use-keychain ~/.ssh/id_ed25519
# 查看已添加的密钥
ssh-add -l
# SSH 配置文件
# ~/.ssh/config
# Host myserver
# HostName server.example.com
# User username
# IdentityFile ~/.ssh/id_ed25519
# Port 22VPN 安全
bash
# 查看 VPN 连接
scutil --nc list
# 检查 VPN 状态
scutil --nc status "VPN名称"
# 查看 DNS 设置
scutil --dns
# 检查 DNS 泄漏
nslookup www.baidu.com
dig www.baidu.com安全审计
系统日志
bash
# 查看系统日志
log show --predicate 'subsystem == "com.apple.security"' --last 1h
# 查看登录日志
log show --predicate 'eventMessage contains "Login Window"' --last 1d
# 查看认证日志
log show --predicate 'subsystem == "com.apple.Authorization"' --last 1h
# 查看 sudo 日志
log show --predicate 'eventMessage contains "sudo"' --last 1d
# 实时监控日志
log stream --predicate 'subsystem == "com.apple.security"'安全检查脚本
bash
#!/bin/bash
# 安全检查脚本
echo "=== macOS 安全检查 ==="
# 检查 SIP
echo -e "\n[系统完整性保护]"
csrutil status
# 检查 Gatekeeper
echo -e "\n[Gatekeeper]"
spctl --status
# 检查 FileVault
echo -e "\n[FileVault]"
fdesetup status
# 检查防火墙
echo -e "\n[防火墙]"
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --getglobalstate
# 检查自动更新
echo -e "\n[自动更新]"
defaults read /Library/Preferences/com.apple.SoftwareUpdate AutomaticCheckEnabled
# 检查管理员账户
echo -e "\n[管理员账户]"
dscl . read /Groups/admin GroupMembership
# 检查登录项
echo -e "\n[登录项]"
osascript -e 'tell application "System Events" to get the name of every login item'
# 检查开放端口
echo -e "\n[监听端口]"
lsof -i -P | grep LISTEN | head -10
echo -e "\n=== 检查完成 ==="安全最佳实践
日常安全建议
text
安全最佳实践:
账户安全:
├── 使用强密码
├── 启用 FileVault
├── 设置自动锁定
├── 启用双重认证
└── 定期更换密码
系统安全:
├── 保持系统更新
├── 启用 SIP
├── 启用 Gatekeeper
├── 启用防火墙
└── 定期检查权限
网络安全:
├── 使用 WPA3 Wi-Fi
├── 避免公共 Wi-Fi
├── 使用 VPN
├── 检查 SSL 证书
└── 管理浏览器权限
数据安全:
├── 定期备份
├── 加密敏感数据
├── 安全删除文件
├── 管理钥匙串
└── 检查共享设置安全删除
bash
# 安全删除文件
srm 文件名
# 安全删除目录
srm -r 目录名
# 安全清空废纸篓
# Finder → 清倒废纸篓(按住 Option)
# 使用磁盘工具抹掉磁盘
# 选择"安全抹掉"选项
# 命令行安全抹除
diskutil secureErase 1 disk2
# 级别:0=最快, 1=单次覆盖, 2=7次覆盖, 3=35次覆盖小结
本章介绍了 macOS 安全防护的主要内容:
- 安全架构:了解 SIP、Gatekeeper、XProtect 等
- 系统完整性保护:管理 SIP 设置
- Gatekeeper:控制应用来源
- FileVault:全盘加密保护
- 防火墙:网络访问控制
- 隐私设置:管理应用权限
- 密码安全:钥匙串和密码管理
- 网络安全:SSL、SSH、VPN 安全
- 安全审计:日志和检查脚本
- 最佳实践:日常安全建议
下一步
下一章我们将学习 故障排查,了解 macOS 常见问题的解决方法。
