Skip to main content

操作系统安全机制

三大系统的安全目标相同:确认系统从可信状态启动,限制用户和进程能做什么,控制哪些代码可以运行,保护数据,并留下可用于检测和响应的证据。差异主要在信任如何建立、权限如何表达,以及保护由谁配置:Linux 以 UID/GID、权限位为基础,叠加 capabilities、LSM 和容器隔离,具体强度很依赖发行版与部署配置;Windows 以访问令牌和对象 ACL 为核心,叠加完整性级别、应用控制及虚拟化隔离,提供较完整的企业策略体系;macOS 基于 Unix 权限,但对应用来源、系统完整性和隐私数据访问施加更统一的平台约束。比较时要逐层看机制是否启用,不能只凭系统名称判断安全性。

可以按六个问题展开:启动是否可信 → 谁能访问资源 → 进程如何被限制 → 哪些代码能执行 → 数据如何保护 → 发生异常如何发现。

比较维度LinuxWindowsmacOS
基础授权UID/GID、权限位、POSIX ACLSID、访问令牌、对象安全描述符和 DACLUnix 用户/组、权限位和 ACL
额外限制capabilities、SELinux/AppArmor 等 LSM、seccomp完整性级别、受限令牌、AppContainer、PPL、VBSApp Sandbox、TCC、SIP、Hardened Runtime
应用信任软件包签名、仓库策略、可选的启动与执行完整性方案代码签名、SmartScreen/Smart App Control、App Control for Business 等代码签名、Gatekeeper、公证、XProtect
静态数据保护LUKS/dm-crypt 等,按发行版和部署方案配置BitLocker/设备加密FileVault;系统卷还有签名系统卷保护

这张表是定位机制,不是“某系统默认更安全”的排名。同一种机制的实际效果还取决于硬件、系统版本、许可、设备管理策略和用户是否改动默认设置。

一、启动是否可信:先守住内核运行前的入口​

引领话术:“如果启动链已经被替换,上层权限和杀毒机制就可能在攻击者控制下运行;因此先看固件、引导程序、内核和系统文件如何被验证。”

  • **Linux:**在支持的设备上可以使用 UEFI Secure Boot 验证引导链;具体信任哪些密钥、如何验证内核及内核模块,取决于发行版和部署。还可以组合内核锁定模式、模块签名、IMA/EVM 或 dm-verity 等完整性方案。Secure Boot 的存在不意味着整个根文件系统都经过验证。
  • **Windows:**UEFI Secure Boot 验证早期启动组件,Trusted Boot 接着验证 Windows 启动组件;Measured Boot 可以记录启动测量结果供后续证明。内核驱动的签名与代码完整性控制继续约束运行时,VBS/HVCI 在具备条件且启用时强化内核代码完整性。
  • **macOS:**受支持的 Mac 具有硬件参与的安全启动;系统完整性保护(SIP)限制关键系统位置的修改,macOS 11 起的签名系统卷(SSV)验证系统卷内容。Apple silicon 机型的硬件保护与老款 Intel Mac 的实现不同。

**关键区别:**Linux 的启动和文件完整性组合较灵活,必须追问发行版、密钥和配置;Windows 把 Secure Boot、Trusted Boot 与虚拟化保护串成平台链;macOS 把硬件、系统卷和操作系统更新结合得更紧。它们都不能仅凭“开了安全启动”就证明用户态应用可信。

二、谁能访问资源:身份只是起点,最终看访问检查​

引领话术:“先说进程以谁的身份运行,再说它访问某个对象时要经过哪些额外检查;管理员或 root 也不等于能越过所有边界。”

  • **Linux:**进程带有真实/有效 UID、GID;文件权限位和 POSIX ACL 决定基本读、写、执行。sudo 和 SUID 是受控提权路径,capabilities 把一部分传统 root 特权拆成更细的能力。SELinux、AppArmor 等通过 Linux Security Modules(LSM)提供强制访问控制:即使传统文件权限允许,策略仍可拒绝。LSM 是框架,具体策略是否加载、是否处于强制模式需要单独检查。
  • **Windows:**进程或线程的访问令牌包含用户与组 SID、特权和完整性级别;对象的安全描述符包含 DACL 等信息。访问检查不能只看“是否管理员”,还要看令牌中哪些特权已启用、对象 ACL、完整性策略及对象自身保护。UAC 下管理员账户启动的普通进程通常先使用过滤后的令牌;SYSTEM 是高权限身份,并非内核态。
  • **macOS:**保留 Unix 用户/组、权限位和 ACL,但系统还会通过强制访问控制限制敏感操作。TCC(透明度、同意与控制)对相机、麦克风、屏幕录制、部分文件与隐私数据等访问施加授权要求;SIP 保护关键系统内容。获得管理员权限并不自动获得所有隐私数据访问权,也不能直接绕过 SIP。

**关键区别:**Linux 常从 UID、文件权限和 LSM 策略逐层排查;Windows 要把令牌与目标对象安全描述符放在一起看;macOS 除 Unix 权限外,还要问应用是否获得 TCC 授权,以及目标是否受 SIP 等系统策略保护。

三、进程如何被限制:代码已经运行,也要缩小它的活动范围​

引领话术:“防线不能只停在‘能否启动程序’;一个合法程序被利用后,它可见的资源、能调用的接口和能影响的高权限进程才决定损害范围。”

  • **Linux:**namespaces 隔离进程看到的进程、网络和挂载等资源;cgroups 控制资源用量;seccomp 缩小可用系统调用集合;LSM、capabilities 和 Landlock 等进一步约束访问。容器会组合这些机制,但容器共享宿主机内核,不能直接等同于虚拟机安全边界。
  • **Windows:**受限令牌、完整性级别和 AppContainer 为不同应用建立权限边界;低完整性进程默认不能随意写入高完整性对象。PPL 保护部分敏感进程,使普通高权限进程也不能任意读写它们;VBS 把特定安全资产或检查放进与普通内核隔离的环境。具体能力需要对应应用或设备策略启用。
  • **macOS:**App Sandbox 按 entitlement 限制应用能力,并通过系统服务受控地访问资源;Hardened Runtime 收紧部分运行时行为。TCC 负责隐私资源授权,SIP 负责系统内容保护,它们与 App Sandbox 解决的是不同问题。并非所有 Mac 应用都运行在 App Sandbox 中。

**关键区别:**Linux 的隔离原语可组合,尤其适合服务和容器;Windows 以令牌、完整性和受保护进程/虚拟化边界分层;macOS 强调应用能力声明、沙箱与用户授权。比较隔离强度时,要说清“被隔离的对象”和“边界由谁强制执行”。

四、哪些代码能执行:签名、信誉与执行策略各管一段​

引领话术:“签名证明来源与完整性,恶意判定还需要信誉、扫描或行为分析;能运行的代码也仍受前面的权限与隔离规则约束。”

  • **Linux:**发行版软件仓库通常验证软件包元数据或签名,管理员可建立可信软件来源;内核模块签名、IMA 等可用于进一步控制代码或文件完整性。但普通用户下载的 ELF 或脚本能否执行,通常仍主要取决于文件权限、挂载选项和本机策略,不能把‘软件包签名’理解为所有可执行文件的强制白名单。
  • **Windows:**驱动签名和代码完整性约束内核代码;SmartScreen/Smart App Control 及 Microsoft Defender 提供不同范围的信誉、应用或恶意软件防护。组织可配置 App Control for Business 或 AppLocker 限制允许执行的应用、脚本和驱动。功能是否生效以及拦截范围应以具体版本、策略和审计/强制状态为准。
  • **macOS:**代码签名表明代码身份与完整性;Gatekeeper 对从互联网获取的应用等进行检查,公证服务检查是否含已知恶意内容;XProtect 提供恶意软件检测与处置。用户或组织策略可能允许例外,因此“已公证”不等于绝对安全,“未公证”也不自动等于恶意。

**关键区别:**Linux 侧重点常是软件供应链与可选的执行完整性策略;Windows 提供从信誉检查到企业白名单的多种档位;macOS 将开发者签名、公证和首次运行检查结合得更紧。不要把签名、白名单和杀毒混为一谈。

五、数据如何保护:分别讨论关机后的磁盘与开机后的访问​

引领话术:“磁盘加密解决设备丢失后的离线读取问题;系统已经解锁时,数据是否能被进程读取仍取决于权限、密钥和隐私策略。”

  • **Linux:**常见全盘或分区加密方案是 LUKS/dm-crypt,也可使用文件系统或应用层加密。解锁后的文件仍受 UID/GID、ACL 和 LSM 控制;密钥管理、恢复方式与自动解锁策略决定离线防护的实际效果。
  • **Windows:**BitLocker/设备加密保护静态卷数据;使用 TPM 时可把密钥释放与设备启动状态关联,也可按风险配置启动 PIN。登录后访问仍由令牌、DACL 和应用保护策略决定;Credential Guard 等机制在支持且启用时可隔离部分凭据材料。
  • **macOS:**FileVault 保护用户数据卷的静态数据;SSV 主要保护系统内容完整性,两者目标不同。系统解锁后,还需靠 Unix 权限、TCC 和应用沙箱控制谁能访问文件与隐私资源。

**关键区别:**三者都能加密静态数据,但“磁盘已加密”不能推出“恶意进程读不到当前用户已解锁的数据”。分析勒索软件或信息窃取时,这一点尤其重要。

六、发生异常如何发现:防护之外还要有可观察性​

引领话术:“安全机制既要能阻断,也要能让防守方回答‘谁在何时启动了什么、访问了什么、被哪条策略拒绝’。”

  • **Linux:**可结合 audit、journald、LSM 拒绝日志及 eBPF 等手段观察进程、文件、网络和策略事件;采集覆盖率依赖内核、规则、权限和部署方式。
  • **Windows:**Security Event Log、ETW、Defender 相关事件以及可选的 Sysmon/EDR 提供不同粒度的遥测;事件是否出现依赖审计策略和产品配置。
  • **macOS:**Unified Logging、OpenBSM 审计以及 Endpoint Security Framework 等提供系统日志和终端安全事件;TCC、Gatekeeper 等也会产生相关诊断信息。可见性受系统授权和采集配置限制。

**关键区别:**不要只列日志名称,要说明需要验证事件是否开启、字段是否足够、时间是否准确,以及终端事件能否关联到用户、进程树和文件/网络行为。

我会用“可信启动、身份与访问控制、进程隔离、代码执行控制、数据保护、检测响应”六层比较三大系统。Linux 的优势是机制开放且可组合,但实际安全基线因发行版和配置而异;Windows 的安全模型围绕访问令牌与对象 ACL,叠加完整性级别、应用控制和 VBS,适合统一企业策略;macOS 在 Unix 权限之上强化应用来源、系统卷完整性和隐私授权。三者都遵循纵深防御:一个机制只覆盖特定威胁,例如 Secure Boot 不替代运行时检测,磁盘加密不替代进程访问控制。落地时我会先确认版本、硬件与策略状态,再针对具体攻击路径判断哪道边界能阻断、哪类日志能证明。

参考资料​