本指南汇集了用于提高运行最新版本MacOS(以前称为OS X)的现代Apple Macintosh计算机(MacBook)的安全性和隐私的技术。
本指南面向希望采用企业标准安全性的高级用户,但也适用于对改善Mac上的隐私和安全性感兴趣的新手用户。
系统的安全性取决于其管理员的能力。没有单一的技术、软件或技术可以保证完美的计算机安全;现代操作系统和计算机非常复杂,需要大量的增量更改才能有效地改善个人的安全和隐私状况。
本指南按原样提供,不提供任何形式的担保。如果您按照本指南操作弄坏了任何东西或遇到任何麻烦,只有您自己负责。
你想保护什么?保护谁?你的对手是一个三封信的代理机构(如果是,你可能会考虑使用OpenBSD);是网络上的一个爱管闲事的窃听者;还是一个坚定的APT,策划了一场针对你的战役?
MacOS系统更新可以使用App Store应用程序或软件更新命令行实用程序完成-这两种更新都不需要注册苹果帐户。更新也可以直接从苹果的支持网站下载。
除了全磁盘加密之外,还可以考虑创建一个或多个加密分区或卷来存储密码、密钥、个人文档等。
为您的数据创建定期备份,并准备好格式化和重新安装操作系统,以防受到危害。
通过定期测试备份来验证备份是否有效,例如,通过访问某些文件或执行基于哈希的比较。
安装新软件时应小心。总是喜欢自由和开源软件(MacOS并非如此)。
最简单的方法是通过在引导时按住Command和R键引导到恢复模式。可以直接从Apple下载并应用系统映像。但是,这种方式会在网络上以纯文本形式暴露序列号和其他标识信息,出于隐私原因,这可能不是我们所希望的。
另一种安装MacOS的方法是首先从App Store或其他地方下载MacOS Mojave,然后创建一个自定义的可安装系统映像。
MacOS安装应用程序是代码签名的,应该使用pkgutil--check-sign或CoDesign-DVV命令进行验证,以确保您收到了合法的副本。
$pkgutil--Check-Signature/Applications/Install\MacOS\Catalina.app Package";安装MacOS Catalina";:状态:由Mac OS X证书链信任的证书签名:1.软件签名sha1指纹:01 3E 27 87 74 8A 74 10 3D 62 D2 CD BF 77 A1 34 55 17 C4 82-。--2、苹果代码签名认证机构sha1指纹:1D 01 00 78 A6 1F 4F A4 69 4A FF 4D B1 AC 26 6C E1 B4 59 46----3.苹果根CA sha1指纹:61 1E 5B 66 2C 59 3A 08 FF 58 D1 4A E2 24 52 D1 98 DF 6C 60。
$CoDesign-dvv/Applications/Install\macOS\Catalina.app可执行文件=/Applications/Install MacOS Catalina.app/Contents/MacOS/InstallAssistant_springboard Identifier=com.apple.InstallAssistant.Catalina Format=APP捆绑MACH-O Thin(X86_64)代码目录v=20100大小=276标志=0x2000(库验证)散列=3+3位置=嵌入式平台标识符=9签名大小=4628Authority=软件签名机构=苹果代码签名机构=Apple Root CA Info.plist Entries=33团队标识符=未设置密封资源。
与从网络引导或使用目标磁盘模式不同,可以使用安装程序应用程序包的Contents/Resources文件夹中包含的createinstallmedia实用程序创建可引导的MacOS安装程序。请参阅为MacOS创建可引导安装程序,或运行不带参数的实用程序以查看其工作原理。
要创建可引导的USB安装程序,请挂载USB驱动器,并对其进行擦除和分区,然后使用createinstallmedia实用程序:
$diskutil list[查找与正确大小匹配的磁盘,通常是最后一个磁盘,例如/dev/disk2]$diskutil unmount tDisk/dev/disk2$diskutil artitionDisk/dev/disk2 1 JHFS+Installer 100%$cd/Applications/install\MacOS\Catalina.app$sudo./Contents/Resources/createinstallmedia-volume/volumes/installer-nointeraction擦除磁盘:0%...。10%……。20%...。30%...。100%正在复制到磁盘:0%...。10%……。20%...。30%...。40%...。50%...。60%...。70%...。80%...。90%...。100%使磁盘可引导...。正在复制启动文件...。安装介质现在可从";/Volumes/Install MacOS Catalina";
注意:苹果的AutoDMG安装程序似乎不能跨操作系统版本运行。例如,如果您想要构建10.14映像,则必须在MacOS 10.14上执行以下步骤!
要创建可恢复到Mac的自定义安装映像(例如,使用USB-C电缆和目标磁盘模式),请使用MagerValp/AutoDMG。
在安装应用程序中找到InstallESD.dmg。在终端或使用Finder找到它,右键单击应用程序包,选择显示软件包内容,然后导航到Contents>;SharedSupport以查找文件InstallESD.dmg。
通过将其SHA-256散列与InstallESD_Hashes.csv或notpeter/apple-installer-checksum中的其他散列进行比较来验证文件完整性。
要确定Mac最初附带或可用的MacOS版本和内部版本,请参阅HT204319。
$hdiutil Attach-mount point/tmp/InstallESD./InstallESD.dmg$hdiutil create-size 32G类型稀疏-fs HFS+J-volname";-uid 0-gid 80-mode 1775/tmp/macos.parseimage$hdiutil attach-mount point/tmp/macOS-owners on/tmp/macos.parseimage$suinstall。#[...]
安装需要一段时间,请耐心等待。在另一个终端中使用ail-F/var/log/install.log监视进度并检查错误。
$hdiutil分离/tmp/macos";disk4";已卸载。";disk4";弹出。$hdiutil分离/tmp/InstallESD";disk3";已卸载。";disk3";已弹出。$hdiutil Convert-format UDZO/tmp/macos.parseimage-o~/sierra.dmg正在准备映像引擎...。[...]$ASR imagescan--source~/sierra.dmg。
文件sierra.dmg现在可以通过目标磁盘模式、从可引导的USB安装程序、从网络或恢复模式引导来应用。例如,可以进一步定制映像以包括供应的用户、安装的应用程序、首选项。
要使用目标磁盘模式,请在按住T键的同时启动要镜像的Mac,并使用USB-C、Thunderbolt或Firewire电缆将其连接到另一台Mac。
如果您没有另一台Mac,请在启动时按住Option键,引导至USB安装程序,并将sierra.dmg和其他所需文件复制到该安装程序。
使用命令diskutil list标识连接的Mac的磁盘,通常为/dev/disk2。
(可选)使用单次通过安全擦除磁盘(如果以前使用FileVault加密,则必须先解锁磁盘并将其挂载为/dev/disk3s2):
将映像恢复到新卷,确保/dev/disk2是要擦除的磁盘:
$sudo ASR RESTORE--source~/sierra.dmg--target/volumes/macOS--erase--buffer size 4M[...]。是否擦除/dev/disk2s2(/Volumes/MacOS)的内容?[纽约]:Y[...]。
Disk Utility应用程序还可用于擦除连接的磁盘并将sierra.dmg还原到新创建的分区。
要传输任何文件,请将它们复制到已挂载磁盘映像上的共享文件夹(如/Users/Shared),例如cp Xcode_8.0.dmg/Volumes/MacOS/Users/Shared。
除非您已使用AutoDMG构建映像,或者将MacOS安装到同一Mac上的第二个分区,否则您将需要创建恢复分区才能使用全磁盘加密。您可以使用MagerValp/Create-Recovery-Partition-Installer或通过以下步骤手动执行此操作:
附加并展开安装程序,然后运行它-再次确保/Volumes/MacOS路径是连接的磁盘上新创建的分区:
$hdiutil Attach RecoveryHDUpdate.dmg$pkgutil--展开/Volumes/mac\OS\X\Lion\Recovery\HD\更新/RecoveryHDUpdate.pkg/tmp/Recovery$hdiutil Attach/tmp/recovery/RecoveryHDUpdate.pkg/RecoveryHDMeta.dmg$/tmp/recovery/RecoveryHDUpdate.pkg/Scripts/Tools/dmtest EnsurereRecoveryPartition/Volumes/macOS//Volumes/Recovery\HD\HD\Update/BaseSystem.dmg 0/Volumes/Recovery\HD\Update/BaseSystem.chunklist[...]。创建恢复分区:已完成。
再次运行diskutil list以确保/dev/disk2上现在存在Recovery HD。使用hdiutil unmount/volumes/macOS弹出磁盘,然后关闭目标磁盘模式引导的Mac的电源。
要使用VMware Fusion将MacOS安装为虚拟机(VM),请按照上述说明创建映像。您不需要手动下载和创建恢复分区。
对于安装方法,请选择从恢复分区安装MacOS。自定义任何内存或CPU要求并完成设置。默认情况下,来宾虚拟机应引导至恢复模式。
注意:如果虚拟机因内核死机而无法启动,请调整内存和进程资源设置。
在恢复模式下,选择一种语言,然后从菜单栏中选择实用程序>;终端。
在来宾虚拟机中,键入ifconfig|grep inet-您应该看到一个私有地址,如172.16.34.129。
在主机Mac上,键入ifconfig|grep inet-您应该看到类似172.16.34.1的私有网关地址。在主机Mac上,您应该能够ping通172.16.34.129或等效的访客VM地址。
在主机Mac上,通过编辑/etc/apache2/httpd.conf并将以下行添加到顶部(使用分配给主机Mac的网关地址和端口80),将可安装映像提供给来宾VM:
在来宾虚拟机上,使用ASR通过本地网络将磁盘映像安装到卷:
-bash-3.2ASR RESTORE--源http://172.16.34.1/sierra.dmg--目标/卷/Macintosh\hd/--ERASE--缓冲区大小4M验证目标...完成验证源...完成擦除/dev/disk0s2(/Volumes/Macintosh hd)的内容?[NY]:y正在检索扫描信息...已完成大小验证...已完成还原....10....20....30....40....50....60....70....80....90....100验证....10....20....30....40....50....60....70....80....90....100重新装载目标卷...已完成
完成后,在sudo httpd-X窗口按Ctrl C停止主机Mac上的Apache Web服务器,并使用sudo RM/Library/WebServer/Documents/sierra.dmg删除映像副本。
在来宾虚拟机中,从菜单栏左上角选择Startup Disk,选择硬盘并重新启动。您可能希望在VMware中禁用网络适配器以初始配置来宾虚拟机。
例如,在尝试高风险浏览之前和之后从保存的来宾虚拟机快照获取和恢复,或者使用来宾虚拟机安装和操作有问题的软件。
注意:在设置MacOS之前,请考虑先断开网络连接并配置防火墙。然而,2016年末配备触摸栏硬件的MacBook需要在线操作系统激活(另见下一节)。
如果您在帐户设置过程中输入真实姓名,请注意您的计算机的名称和本地主机名将包含该名称(例如,John Appleseed的MacBook),因此将出现在本地网络和各种首选项文件中。
安装后,应根据需要在系统首选项>;共享中或使用以下命令对两者进行验证和更新:
您友好的匿名安全研究员就激活Touch Bar MacBook设备对隐私的影响说了几句话:
苹果似乎越来越对合并或统一两个操作系统越来越感兴趣(尽管有模糊的说法),而且不断有传言称,MacOS将进行根本性改革,使其更像iOS,而不是过去的MacOS。苹果推出了运行iOS/SepOS的基于ARM的协处理器,首先是TouchBar MacBook Pros上的T1处理器(运行TouchBar,实现NFC/ApplePay,使用SEP添加生物识别登录,并验证固件完整性),以及iMac Pro的T2(实现/验证嵌入式设备固件,实现安全引导等),似乎强化了这一担忧,基本上使得使用MacOS设备而不向苹果发送元数据变得困难甚至不可能。
IOS设备总是需要在第一次启动时以及电池耗尽时激活,这会初始化SepOS以继续进行验证启动。首先启动激活不仅会按照下面讨论的那样初始化SepOS,还会将元数据发送给Apple(以及通过Apple通过移动设备的运营商)来激活基带和SIM。在第一次启动后的激活过程中,就像第一次启动一样,一长串高度敏感的元数据被散列发送给苹果(注意,散列不会让您从Apple这里获得任何隐私,因为它们会将这些精确的元数据链接到购买时的支付信息),这样它就可以返回完成安全启动所需的个性化响应。这个过程特别令人担忧的是,它是一个网络链接的安全引导过程,其中集中式外部服务器有权指示设备应该引导什么。同样,设备不断发送元数据(在激活和其他苹果链接/托管活动期间),并基于购买付款信息非常强烈地将IP地址与真实身份链接,如果是蜂窝设备、收集的关于SIM的元数据等,也存在严重的隐私问题,除非这样的连接在网络级别被阻止(这仅在自我管理的基础设施上可能,即非蜂窝),并且这样做基本上使得使用设备变得不可能,因为简单地安装应用程序需要向苹果发送设备元数据。
激活验证机制专门设计为依赖唯一的设备标识符,这些标识符与购买时的支付信息相关联,并且由Apple为设备与之交互的每项Apple托管服务(基于Apple ID的服务、软件更新、iMessage、FaceTime等)持续主动关联。苹果能够(和邀请)悄悄地向符合特定唯一身份标准的设备发送有针对性的恶意更新,这是一个合理的担忧,不应因为不太可能而不屑一顾,特别是考虑到苹果完全遵守了最近实施的中国(以及其他威权和非威权国家)国家安全法,尤其是考虑到苹果完全遵守了最近实施的中国(以及其他威权和非威权国家)国家安全法。
IOS从一开始就被设计成对终端用户的控制非常少,终端用户无法在维护安全性的同时根据自己的意愿配置设备,并且严重依赖于新的、封闭的源代码。虽然MacOS在其历史上的大部分时间都是以类似的方式设计的,但高级用户和企业用户(目前)仍然可以相对安全地配置他们的设备,同时保持与Apple的基本零网络交互,并通过安装第三方软件/内核扩展,完全控制网络堆栈,并在每个进程的基础上拦截文件系统事件。尽管MacOS有大量的封闭源代码,但它的设计处于苹果历史上一个非常不同的时期,更符合开放源码标准,并且可以由企业/高级用户进行配置和控制。
将这些协处理器引入Mac设备,虽然在许多方面提高了安全性,但也带来了上面讨论的iOS的所有问题,这意味着在高度敏感的公司和其他环境中,在完全用户控制下安全运行Mac设备,而不强制与Apple母公司进行网络交互是有问题和有风险的。鉴于本文作者不知道协处理器的确切硬件配置,以下内容可能不准确。但是,考虑到这些协处理器的低级性质,如果这些协处理器(如果还没有)最终将拥有独立于英特尔CPU的独立网络访问(迹象表明T1目前不是这种情况;T2尚不清楚),这将导致与许多人对英特尔ME/AMT提出的问题类似的担忧(当然,Mac设备在英特尔CPU中也有ME...),这一点也不会让作者感到惊讶。有人可能会争辩说,这些协处理器提高了安全性,在许多方面确实如此,但并不能提高用户抵御恶意苹果的安全性。
缺乏可配置性是关键问题。苹果本可以引入安全的引导和固件保护,而无需要求网络访问,无需进行与设备唯一ID相关的验证,也无需引入大量潜在可利用的代码来保护其免受小得多但高度可利用的代码库的攻击,同时运行在具有高度特权的主板位置的协处理器上,这为符合制造商合规性的对手提供了巨大的力量,以进行有针对性的攻击。
这是一个持续关注的问题,在最坏的情况下,可能潜在地代表MAC的终结,即适合于具有严格网络和安全策略的敏感环境的独立、终端用户可控且相对安全的系统。
第一个用户帐户始终是管理员帐户。管理员帐户就是我
Apple和其他公司认为使用单独的标准帐户进行日常工作并使用管理员帐户进行安装和系统配置是最佳实践(Pdf)(第41-42页)。
没有严格要求必须通过MacOS登录屏幕登录到管理员帐户。系统会在需要时提示认证,剩下的可以由终端来完成。为此,苹果提供了一些隐藏管理员帐户及其主目录的建议。这可以是一个优雅的解决方案,以避免有一个可见的幽灵帐户。还可以从FileVault中删除管理员帐户以进行其他强化。
只有管理员才能在/Applications(本地目录)中安装应用程序。Finder和Installer将通过身份验证对话框提示标准用户。许多应用程序可以安装在~/Applications中(目录可以手动创建)。经验法则是:不需要管理员访问的应用程序-或者不抱怨没有安装在/Applications中-应该安装在用户目录中,其余的安装在本地目录中。Mac App Store应用程序仍安装在/Applications中,不需要其他身份验证。
Sudo在标准用户的shell中不可用,这需要使用su或login进入admin帐户的shell。这可能会使一些操作变得更加棘手,并且需要一些使用命令行界面的基本经验。
系统首选项和几个系统实用程序(例如Wi-Fi Diagnostics)需要root权限才能实现全部功能。系统首选项中的许多面板都已锁定,需要通过单击锁定图标单独解锁。某些应用程序将在以下情况下简单地提示进行身份验证。
.