MacOS 主机安全基线 2024-10-03 04:20:56 Steven Xeldax [TOC] ## MacOS 基线 ### 配置账号登录口令复杂度 #### 要求内容 最短密码长度为 8个字符。 启用本机“组策略”中“密码必须符合复杂性要求”的策略,密码至少包含以下四种类别的字符中的三种: 英语大写字母 A, B, C, … Z 英语小写字母 a, b, c, … z 西方阿拉伯数字 0, 1, 2, … 9 非字母数字字符,如标点符号,@, #, $, %, &, *等 #### 检测方法 打开终端应用(Terminal)。 输入以下命令检查当前密码策略设置: pwpolicy -n /Local/Default -getglobalpolicy 检查返回结果中的以下参数是否符合要求: "minChars" 是否为8 "requiresAlpha" 是否为1 "requiresNumeric" 是否为1 "requiresSymbol" 是否为1 #### 修复建议 管理员可以使用命令行工具pwpolicy,来强制实施密码策略。以下命令可以强制执行上述策略: pwpolicy -u -setpolicy "minChars=8 requiresAlpha=1 requiresNumeric=1 maxMinutesUntilChangePassword=129600 usingHistory=4 usingExpirationDate=1 passwordCannotBeName=1 requiresMixedCase=1 requiresSymbol=1" ### 禁用访客账户 #### 要求内容 应该始终禁用访客帐户的所有内容,并且停用访客账户。 #### 检测方法 在“系统偏好设置”中,选择“用户和组”,确保已经禁用访客账户(Guest Users)。 #### 修复建议 在“系统偏好设置”中,选择“用户和组”,选择禁用访客账户(Guest Users)。 ### 限制sudoer文件 #### 要求内容 要限制宽限期(Grace Period)并限制为单个ttys,应使用visudo命令 #### 检测方法 打开终端应用(Terminal)。 使用visudo命令编辑sudoers文件: sudo visudo 检查sudoers文件中是否包含以下内容: Defaults timestamp_timeout=0 Defaults tty_tickets 确保这些设置已正确添加并生效。 #### 修复建议 编辑/etc/sudoers,添加以下内容: Defaults timestamp_timeout=0 Defaults tty_tickets ### 安装补丁和安全更新 #### 要求内容 确保所有 Apple 提供的软件都是最新的并且安装了更新/补丁。 #### 检测方法 可以通过“Apple菜单” – “App Store” – “升级”(Updates)来检查当前系统的更新情况。 或者,也可以在命令行中输入以下命令: $ softwareupdate -l #### 修复建议 从 Mac OS 用户界面: 1.打开 ‘System Preferences’ 2.选择 ‘Software Update’ 3.选择‘Show Updates’ 4.选择 ‘Update All’ ### 设置系统自动更新 #### 要求内容 建议始终启用自动更新,以自动向系统提供最新的安全修复程序。 #### 检测方法 打开终端应用(Terminal)。 输入以下命令检查系统是否已启用自动更新: defaults read /Library/Preferences/com.apple.SoftwareUpdate AutomaticallyInstallMacOSUpdates 如果返回值为1,则表示已启用自动更新。 #### 修复建议 defaults read /Library/Preferences/com.apple.SoftwareUpdate AutomaticallyInstallMacOSUpdates 1 如果启用了自动更新,则返回值应该为1,如上面输出所示。如果该设置不存在,可以通过以下命令来手动设置: sudo defaults write /Library/Preferences/com.apple.SoftwareUpdate AutomaticallyInstallMacOSUpdates -int 1 ### 禁用保存到icloud #### 要求内容 公司电脑禁止保存文件到iCloud #### 检测方法 输入以下命令来检查 NSGlobalDomain 中 NSDocumentSaveNewDocumentsToCloud 的设置: defaults read NSGlobalDomain NSDocumentSaveNewDocumentsToCloud 如果返回结果为 0,表示成功禁止保存文件到iCloud;如果返回结果为 1,则表示仍然允许保存文件到iCloud。 #### 修复建议 以下命令可以阻止macOS将文件直接保存到任何iCloud服务器: Sudo defaults write NSGlobalDomain NSDocumentSaveNewDocumentsToCloud -bool false ### 启用FileVault完整磁盘加密 #### 要求内容 建议启动FileVault,以在设备上启用完整磁盘加密。该功能应该已经默认启用。 #### 检测方法 点击左上角苹果图标,选择“系统偏好设置”。 在“系统偏好设置”中,点击“安全性与隐私”。 在“安全性与隐私”窗口中,切换到“FileVault”选项卡。 检查是否已启用FileVault。 #### 修复建议 点击“系统偏好设置” – “安全和隐私” – “FileVault”,选择“启用FileVault”。 *可选设置: 如果要在休眠时,从内存中删除加密密钥,并从内存中断电,可以使用以下命令: sudo pmset -a destroyfvkeyonstandby 1 hibernatemode 25 注意:这项操作可能会对用户体验产生影响,因为必须要在每次合盖/开盖后解密磁盘。因此,启动过程最多可能需要10秒钟时间。我们建议对安全性要求较高的计算机设置此选项,其首选设置如下: sudo pmset -a powernap 0 sudo pmset -a standby 0 sudo pmset -a standbydelay 0 sudo pmset -a autopoweroff 0 ### 启用防火墙 #### 要求内容 建议启用具有完整功能的防火墙,并阻止所有传入流量 #### 检测方法 1.点击左上角苹果图标,选择“系统偏好设置”。 2.在“系统偏好设置”中,点击“安全性与隐私”。 3.在“安全性与隐私”窗口中,切换到“防火墙”选项卡。 4.检查防火墙是否已经启用。 #### 修复建议 点击“系统偏好设置” – “安全和隐私” – “防火墙”,点击“打开防火墙”(Turn on Firewall)。选择“防火墙选项”(Firewall Options),设置“阻止所有传入连接”(Block All Incoming Connections),设置“启用隐身模式”(Enable Stealth Mode)。 ### 屏幕保护程序和解锁 #### 要求内容 设置屏幕保护程序的不活动时间间隔可防止未经授权的人查看到长时间无人看管的系统。 确保启用屏幕保护程序的 5分钟. #### 检测方法 点击左上角苹果图标,选择“系统偏好设置”。 在“系统偏好设置”中,点击“桌面和屏幕保护程序”(Desktop & Screensaver)。 在“桌面和屏幕保护程序”窗口中,进入“屏幕保护程序”(Screensaver)选项卡。 检查屏幕保护程序的不活动时间间隔是否已设置为5分钟。 #### 修复建议 点击“系统偏好设置” – “桌面和屏幕保护程序”(Desktop & Screensaver) – “屏幕保护程序”(Screensaver)。根据需要调整时间范围,我们建议将其设置为5分钟。 点击“系统偏好设置” – “安全和隐私” – “常规”,设置“睡眠或屏幕保护程序开始后立即需要密码”(Require password immediately after sleep or screen saver begins) ### 禁用远程Apple事件 #### 要求内容 建议禁用远程Apple事件服务(默认禁用)。该服务可用于通过网络对另一台Mac上的软件执行操作。因此,它应该始终被禁用。 #### 检测方法 下面的命令可以检查是否启用了远程Apple事件: sudo systemsetup –getremoteappleevents 应确保输出为: Remote Apple Events: Off #### 修复建议 sudo systemsetup -setremoteappleevents off ### 禁用Apple文件协议AFP #### 要求内容 禁用AFP文件传输,防止数据泄露 #### 检测方法 当前版本的 macOS 中,Apple 文件共享服务已经从 AFP(Apple Filing Protocol)迁移到了 SMB(Server Message Block)协议。因此,默认情况下,AFP 在最新的 macOS 版本中可能已被禁用。您可以通过以下步骤检查 AFP 是否已禁用: 打开“系统偏好设置”。 点击“共享”。 在“文件共享”选项中查看是否存在 AFP 选项。 #### 修复建议 如果您仍希望明确禁用 AFP 并仅使用 SMB 协议进行文件共享,可以按照以下步骤操作: 打开“系统偏好设置”。 点击“共享”。 在“文件共享”选项中,确保 AFP 选项未勾选,而 SMB 选项已勾选。 如果 AFP 选项仍可见并已勾选,请取消勾选 AFP 选项。 确保 SMB 选项处于启用状态,以确保您可以继续使用文件共享功能 ### 禁用共享配置安全共享 #### 要求内容 确保配置安全共享设置,以防止通过共享危害终端。 配置这些设置将通过不同的共享设置(例如 SMB 文件共享或远程登录)限制攻击面和危害的可能性。 #### 检测方法 选择“共享”。 确保未选中以下共享选项: “远程 Apple 事件” “互联网共享” “屏幕共享” “打印机共享” “远程登录” “蓝牙共享” “文件共享” “远程管理” “内容缓存” “媒体共享” “隔空播放接收器” #### 修复建议 从 Mac OS 用户界面: 1.打开’系统偏好设置‘ 2.选择‘共享’ 3.确保未选中“远程 Apple 事件” 4.确保未选中“互联网共享” 5.确保未选中“屏幕共享” 6.确保未选中“打印机共享” 7.确保未选中“远程登录” 8.确保未选中“蓝牙共享” 9.确保未选中“文件共享” 10.确保未选中“远程管理” 11.确保未选中“内容缓存” 12.确保未选中“媒体共享” 13.确保未选中“隔空播放接收器” ### 确保使用合规的公司机器名称 #### 要求内容 为了便于终端统计和安全管理,所以接入公司终端的机器名必须按照公司规范进行命名,公司内不得出现同名的机器。 #### 检测方法 略 #### 修复建议 可以使用以下命令来更改通过网络显示的名称: sudo scutil --set ComputerName ExampleName sudo scutil --set LocalHostName ExampleName ### 基线软件安装:安装EDR #### 要求内容 EDR(终端检测与响应)是一种安全解决方案,用于检测、调查和应对终端设备上的安全事件。安装EDR可以帮助加强终端安全,及时发现并应对潜在的威胁。 #### 检测方法 您可以检查是否已安装EDR软件,通常这些软件会在系统中以服务或进程的形式运行。您可以使用以下命令来检查EDR软件的运行状态: ps aux | grep xxxx-edr #### 修复建议 如果未安装EDR软件或发现其未运行,建议按照安装指南安装适合您环境的EDR软件,并确保其正常运行以提高终端安全性。 ### 基线软件安装:安装DLP #### 要求内容 DLP(数据丢失防护)是一种安全技术,用于监控和防止敏感数据在终端设备上泄露或丢失。安装DLP软件可以帮助组织保护敏感信息免受意外泄露。 #### 检测方法 您可以检查是否已安装DLP软件,通常这些软件会在系统中以服务或进程的形式运行。您可以使用以下命令来检查DLP软件的运行状态: ps aux | grep xxxx-dlp #### 修复建议 如果未安装DLP软件或发现其未运行,建议按照安装指南安装适合您环境的DLP软件,并配置相应的策略以保护敏感数据安全。 ### 基线软件安装:安装统一桌面管理 #### 要求内容 统一桌面管理软件可以帮助组织集中管理终端设备,包括软件部署、配置管理、安全策略等功能。安装统一桌面管理软件可以提高终端设备的管理效率和安全性。 #### 检测方法 您可以检查是否已安装统一桌面管理软件,通常这些软件会在系统中以服务或进程的形式运行。您可以使用以下命令来检查统一桌面管理软件的运行状态: ps aux | grep XXXXX #### 修复建议 如果未安装统一桌面管理软件或发现其未运行,建议按照安装指南安装适合您环境的统一桌面管理软件,并配置相应的管理策略以提高终端设备的管理效率和安全性。 ### 确保禁用 隔空投送 #### 要求内容 由于隐私问题可能会暴露用户的个人信息,请确保禁用 隔空投送。 #### 检测方法 略 #### 修复建议 从 Mac OS 用户界面: 1.在菜单栏中打开“控制中心” 2.选择“隔空投送” 3.将“隔空投送”设置为禁用 4.打开“系统偏好设置” 5.选择“程序坞和菜单栏” 6.选择“隔空投送” 7.将“在菜单栏中显示”设置为关闭 ### 配置 Apple Gatekeeper #### 要求内容 确保启用 Apple Gatekeeper 以限制下载的未经验证的应用程序启动。 #### 检测方法 略 #### 修复建议 从 Mac OS 用户界面: 1.打开’系统偏好设置‘ 2.选择‘安全性与隐私’ 3.选择‘通用‘ 4.设置允许从以下位置下载的APP:选择“App Store 和被认可的开发者” ### 禁用向 Apple 发送诊断和使用数据 #### 要求内容 组织应了解并限制与供应商共享的内容,该设置会自动将信息转发给 Apple。 #### 检测方法 略 #### 修复建议 从 Mac OS 用户界面: 1.打开“系统偏好设置” 2.选择“安全和隐私” 3.选择“隐私” 4.选择“分析和改进” 5.取消选中“共享 Mac 分析” 6.取消选中“与应用开发者共享” ### 禁用时间机器自动备份 #### 要求内容 确保未启用时间机器自动备份功能 #### 检测方法 略 #### 修复建议 从 Mac OS 用户界面: 1.打开“系统偏好设置” 2.选择“时间机器” 3.确保未勾选“自动备份” ### 禁用 Bonjour 广告服务 #### 要求内容 Bonjour 可以简化从内部受损主机发现设备的过程。 攻击者可以使用 Bonjour 的多播 DNS 功能来发现易受攻击或配置不当的服务或其他信息,以帮助进行有针对性的攻击。 确保禁用/阻止不必要或不安全的端口、协议和服务。 #### 检测方法 略 #### 修复建议 运行以下命令以禁用 Bonjour 广告服务: $ sudo /usr/bin/defaults write /Library/Preferences/com.apple.mDNS Responder.plist NoMulticastAdvertisements -bool true ## 其他版本基线 CIS benchmark ``` https://download.xeldax.top/CIS/CIS_Apple_macOS_12.0_Monterey_Benchmark_v3.1.0.pdf ``` ``` https://download.xeldax.top/CIS/CIS_Apple_macOS_13.0_Ventura_Benchmark_v2.1.0.pdf ``` ``` https://download.xeldax.top/CIS/CIS_Apple_macOS_14.0_Sonoma_Benchmark_v1.1.0.pdf ``` MacOS操作系统安全配置加固基线 ``` http://download.xeldax.top/MacOS_IR/MacOS%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%E5%AE%89%E5%85%A8%E9%85%8D%E7%BD%AE%E5%8A%A0%E5%9B%BA%E5%9F%BA%E7%BA%BFV1.0.docx%E8%B5%84%E6%BA%90.docx ``` macOS-Security-and-Privacy-Guide Guide to securing and improving privacy on macOS 这一片github写的挺好的,除了CIS的行业标准可以参考这个macos的安全基线 https://github.com/drduh/macOS-Security-and-Privacy-Guide  ## 一键检测脚本 ### lynis https://github.com/CISOfy/lynis ``` Git The very latest developments can be obtained via git. Clone or download the project files (no compilation nor installation is required) ; git clone https://github.com/CISOfy/lynis Execute: cd lynis && ./lynis audit system If you want to run the software as root (or sudo), we suggest changing the ownership of the files. Use chown -R 0:0 to recursively alter the owner and group and set it to user ID 0 (root). Otherwise Lynis will warn you about the file permissions. After all, you are executing files owned by a non-privileged user. ``` ### CIS-macOS-Security https://github.com/mvdbent/CIS-macOS-Security ### Mergen https://github.com/sametsazak/mergen ``` Mergen is an open-source, native macOS application for auditing and checking the security of your MacOS. Mergen is an open-source project, and you can download the latest release binary from the GitHub repository or you can build yourself. git clone https://github.com/sametsazak/mergen.git Open the Mergen.xcworkspace file in Xcode. Build and run the project in Xcode. Usage Once you have installed Mergen, you can launch the application and start checking the security issues. The application is user-friendly and easy to use. Follow the steps mentioned below to check the security issues: Launch the Mergen application. Choose a category and press the scan button to start the security check. Once the security check is complete, you can see the reporting options and statistics. You can see more details by double clicking the findings. ``` ## 一键部署方法 对于macos而言让所有进入办公的终端必须安装MDM统一终端管控,通过MDM统一终端管控后台下发profile就可以保证我们的基线能够自动下发配置,再结合profile下发率以及上章节的检测方法进行回归验证。profile的样例,mobileconfig文件的example如下: ``` <?xml version="1.0"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>PayloadContent</key> <array> <dict> <key>PayloadType</key> <string>com.apple.MCX</string> <key>PayloadIdentifier</key> <string>com.example.mcx.1</string> <key>PayloadEnabled</key> <true/> <key>PayloadDisplayName</key> <string>Security Baseline Settings</string> <key>PayloadDescription</key> <string>Configuration profile to enforce security baseline settings</string> <key>PayloadVersion</key> <integer>1</integer> <key>PayloadOrganization</key> <string>YourOrganizationName</string> <key>PayloadScope</key> <string>System</string> <key>PayloadContent</key> <dict> <key>com.apple.loginwindow</key> <dict> <key>DisableLoginWindowGuestAccess</key> <true/> <key>PasswordChangeRequired</key> <integer>4</integer> </dict> <key>com.apple.screensaver</key> <dict> <key>askForPassword</key> <integer>1</integer> <key>askForPasswordDelay</key> <integer>0</integer> </dict> <key>com.apple.security.firewall</key> <dict> <key>FirewallEnabled</key> <true/> </dict> <key>com.apple.security.full-disk-access</key> <dict> <key>AllowedItems</key> <array> <string>/usr/sbin/diskutil</string> <string>/usr/bin/fdesetup</string> </array> </dict> <key>com.apple.systempreferences</key> <dict> <key>DisabledPreferencePanes</key> <array> <string>com.apple.preferences.icloud</string> <string>com.apple.preferences.sharing</string> <string>com.apple.preferences.TM</string> </array> </dict> <key>com.apple.alf</key> <dict> <key>globalstate</key> <integer>2</integer> </dict> <key>com.apple.finder</key> <dict> <key>ProhibitGoToFolder</key> <true/> </dict> <key>com.apple.RemoteDesktop.agent</key> <dict> <key>ARD_AllLocalUsers</key> <false/> </dict> <key>com.apple.AppleFileServer</key> <dict> <key>disabled</key> <true/> </dict> <key>com.apple.preferences.sharing</key> <dict> <key>DisabledServices</key> <array> <string>com.apple.preferences.samba</string> </array> </dict> <key>com.apple.MCX</key> <dict> <key>Forced</key> <array> <dict> <key>mcx_preference_settings</key> <dict> <key>ComputerName</key> <string>YourCompanyName-Mac</string> </dict> </dict> </array> </dict> </dict> </dict> </array> <key>PayloadDisplayName</key> <string>Security Baseline Settings</string> <key>PayloadIdentifier</key> <string>com.example.mcx</string> <key>PayloadRemovalDisallowed</key> <false/> <key>PayloadScope</key> <string>System</string> <key>PayloadType</key> <string>Configuration</string> <key>PayloadUUID</key> <string>UUID-STRING-HERE</string> <key>PayloadVersion</key> <integer>1</integer> </dict> </plist> ``` ## 参考链接 https://wenku.csdn.net/column/3s9y0spgxu https://www.anquanke.com/post/id/84791