专用用户与 selinux

专用用户与 selinux

与 SELinux(其中 SE 用户可能绑定到 Linux 用户)相比,使用专用(非 root)用户运行进程有哪些优点和缺点?

答案1

简短回答: 为每个服务使用专用的 selinux 用户的优点是可以提高安全性/实现权限分离。另一方面,这是一种侵入性更改,大多数 Linux 发行版默认不应用此更改。

因此,服务通常使用专用用户帐户运行(即:)httpd,并且它们通过专用 selinux 配置文件可以访问/监听的内容受到进一步限制,但不涉及特定的 selinux 用户/角色(即:httpd_t使用系统默认system_u用户角色而不是专用角色运行)。这样做是为了提高系统安全性,而不会过多地侵犯普通用户的工作方式。

长答案:关键的区别在于自主访问控制 (DAC)强制访问控制(MAC)

第一种 (DAC) 是传统的 unix 权限系统,用户可以更改其拥有的所有文件的权限。此外,应用程序有权执行在“普通用户”级别授予的任何操作(例如,监听高 TCP 端口)。虽然非常直观和合理,但 DAC 本身为用户的错误配置(即:无意中授予对敏感文件的访问权限)或恶意软件(即:缓冲区溢出,启动 shellcode 打开监听端口以远程控制目标主机)留下了漏洞。

进入 MAC,只有系统管理员才能规定哪些可以做,哪些不可以做。例如,系统管理员可以通过 selinux 限制用户(文件所有者!)可以更改哪些文件,或者哪些文件可以设置“其他”位。类似地,可以禁止应用程序监听除一组受限端口之外的任何内容,而不管默认的 unix 权限系统如何。

从这里,很容易看出特定系统如何完全依赖 DAC 或 MAC。在第一种情况下,用户可以完全控制其可以执行的操作,禁止传统上仅限于 root 的操作。“普通”(即没有 selinux/apparmor/grsec/whatever)Linux 系统是仅 DAC 设置的一个很好的例子。在另一个极端,在仅 MAC 的系统上任何用户可能具有特权,但实际上没有任何可能与敏感信息进行交互(在这样的系统中,只有专门指定的“真正的”根帐户才能修改 MAC 策略本身)。

话虽如此,DAC 和 MAC 实际上是正交的:它们可以(并且经常)同时使用以加强整个系统的安全性。这是 selinux 政策背后的关键原因targeted:由于在仅限 MAC 的系统中转换 Linux 会过于侵入(并且 99% 的情况下确实不需要),因此 RedHat 发布了一项政策,选择性地对最敏感的服务应用更严格的规则, 而交互用户则基本不受影响。这就是为什么用户默认被分配给selinux 用户并unconfined_u拥有其角色。system_runconfined_r

答案2

专用用户:

专用用户是专门用于特定目的或服务的帐户。此类用户帐户通常是为了为特定功能或服务(例如运行特定服务或应用程序)提供安全环境而创建的。

SELinux:

SELinux(安全增强型 Linux)是一种 Linux 内核安全模块,它提供了一种支持访问控制安全策略(包括强制访问控制 (MAC))的机制。它旨在保护系统及其应用程序免受用户、进程或应用程序造成的恶意或意外破坏。它还旨在通过限制对系统资源和应用程序的访问来为系统管理员和用户提供安全的环境。

使用专用用户运行流程的优点:

  • 增强安全性:通过使用专用用户运行进程,您可以限制该进程对特定资源的访问,并限制受损进程可能造成的潜在损害。
  • 改进的性能:专用用户可以通过减少根用户在安全相关任务上花费的时间来帮助提高系统性能。
  • 简化维护:专用用户可以通过为每个流程提供隔离的上下文来简化系统维护,使您能够快速识别和解决任何问题。

使用专用用户运行进程的缺点:

  • 复杂性增加:使用专用用户运行进程会增加系统管理的复杂性,因为您必须管理用户的权限和特权。
  • 功能有限:专用用户可能缺乏某些进程所需的能力,例如访问特权系统资源。

使用 SELinux 运行进程的优点:

  • 增强安全性:SELinux 提供了强大的访问控制机制,可用于隔离进程并限制恶意进程的潜在破坏。

  • 改进的性能:SELinux 可以通过限制在安全相关任务上所花费的时间来帮助提高系统性能。

  • 提高灵活性:SELinux 允许用户将 SE 用户绑定到 Linux 用户,从而实现对访问和权限的更细粒度的控制。

使用 SELinux 运行进程的缺点:

  • 复杂性增加:SELinux 可能很复杂且难以配置,从而使得系统管理更加困难。
  • 兼容性有限:SELinux 并不与所有应用程序兼容,这限制了它在某些情况下的实用性。

相关内容