SELinux 是否使 Redhat 更安全?
我记不清有多少次禁用了 SELinux,因为它总是让我无法运行东西。很多时候,东西无法正常工作的原因并不明显,我不得不用 Google 来查找原因。
考虑到大多数普通用户在遇到麻烦时都会禁用或削弱安全性(除了严肃的企业级 Redhat 用户),SELinux 真的有用吗?
PS. 是否有一些工具可以帮助您记录、跟踪和管理所有应用程序中的 SELinux 问题?
答案1
是的,Selinux 使系统更安全。但您需要了解它的概念,并至少具备有关 selinux 和审计工具的基本知识。
Selinux 正在将日志记录到 /var/log/audit/audit.log(但请确保 auditd 正在运行),并且有许多工具可以解决 selinux 问题。可能最简单的方法是使用audit2allow
答案2
是的,假设它确实在使用中,SELinux 会使 Red Hat(以及任何其他实际使用它的 Linux 发行版)更加安全。
SELinux 实现强制访问控制. 普通的 Unix 权限、ACL 等,实现自主访问控制. 两者相辅相成。
为了正常工作,SELinux 需要一个策略,定义允许在系统上执行哪些操作。虽然可以从头开始创建整个系统策略,但大多数 Linux 发行版都附带基于所谓的参考政策。这意味着,除其他事项外,跨发行版配置 SELinux 将非常相似。(大多数 Linux 发行版都会在其软件包存储库中提供 SELinux 参考策略,尽管它可能未默认安装。)
SELinux 的工作原理是限制用户和进程仅执行策略中允许的操作。默认情况下,策略是拒绝,因此如果策略没有明确允许某项操作,则不会发生。这就是为什么您经常遇到 SELinux 禁止您尝试执行某项操作的问题。
从好的方面来看,这还可以防止漏洞(甚至是零日漏洞)失控。例如,如果您的 Web 服务器 (Apache) 被利用,则损害仅限于 Apache 可以访问的内容。例如,/etc/shadow
即使使用远程 root 漏洞,它也无法读取您的文件。虽然 Unix 权限 (DAC) 允许 root 读取文件,但 SELinux (MAC) 不允许受感染的进程越界。
最大的问题是必须为服务加载 SELinux 策略模块。如果您在机器上安装的服务不包含 SELinux 策略模块,那么它将不受限制地运行,可以做任何它想做的事情。SELinux 不会适用于它。
您应该知道的另一件事是布尔值。这些可调参数由 SELinux 策略提供,用于针对特定安装进行自定义,并根据本地配置需求允许或拒绝访问。例如,您可以授予 Apache 访问 Samba 共享的权限,允许 Samba 共享用户主目录,以及许多其他可能有用的功能,这些功能对于某些设置是必需的,但对于其他设置则不是。
目前我看到的最好的 SELinux 指南是 Red Hat 的安全增强型 Linux 用户指南。它将帮助您快速启动和运行,并填写正在发生的事情的背景详细信息。它还包括一个全面的故障排除指南它可以帮助您让您的进程在 SELinux 下运行。
它有用吗?
SELinux 可防止进程(和用户,如果你已限制用户)执行意外操作。它可严重限制远程攻击可能造成的损害。如果你从未遭受过远程攻击,那么你 (1) 很幸运,而且 (2) 可能是新手。如果你有造成了远程妥协,您当然不希望它再次发生。
它不是那么有用家设置,除非您恰好在家中运行面向 Internet 的服务(有些人确实如此)。在这种情况下,上述所有内容均适用。
SELinux 可能是阻止你的数据被真正想要利用 0-day 漏洞的攻击者获取的最后一道屏障。如果你能使用它,你为什么不呢?
答案3
我认为 SELinux 只是通过引入权限扩展设置来扩展传统权限系统。它会让你的系统更安全吗?我认为这取决于你如何在应用程序中使用 SELinux。另外,我不擅长 SELinux,但配置它需要更多了解它可以为你提供哪些限制。但它也引入了许多问题,你需要手动调查才能克服这些问题
答案4
有一个名为 setroubleshoot 的软件包可以帮助用户查找由 SELinux 引起的问题。安装它,将其设置为在启动时运行。然后,当您收到 SELinux 拒绝时,它将被记录在 中/var/log/messages
。如果您也登录了 GUI,您将收到通知。