如何使用 SELinux 策略限制对私有 ssh 密钥的访问?

如何使用 SELinux 策略限制对私有 ssh 密钥的访问?

我使用的是 Fedora 发行版 - 其预装了 SELinux 策略。我想限制~/.ssh文件夹中对我私钥的不安全访问 - 以防止可能在我的帐户下运行的恶意软件泄露。Root-kit 是不可能的。


更新#1: 我想解决新手 Fedora 用户的企业问题 - 没有 USB 令牌等。他们可能会使用非常弱的密码。如果只有用户root和 ssh 客户端程序可以访问私钥,那就没问题了。实际的人类用户没有必要查看私钥 - 我不知道为什么要查看私钥,哪怕是一次,对任何人来说。


我该怎么做?建议使用 SELinux。

答案1

向有权使用私钥的人隐藏私钥的适当方法是使用硬件安全模块(智能卡或其他东西效果很好)。对于 SSH 密钥,您可以花点功夫做到这一点(谷歌搜索显示本教程介绍了一些笨重的硬件和 GPG)。

但是,如果您担心不是 shell 的东西会获取 shell,请记住许多漏洞都会让您获得 shell,AppArmour 可以通过这种方式限制文件系统权限,但我相信在主目录内执行此操作对于多用户系统来说管理起来会更棘手一些。

SELinux 也可以做到这一点;你在文件上贴上安全标签,只允许ssh读取它们

请记住,用户通常能够创建自己的 SSH 密钥,并且通常是密钥的所有者,这意味着他们可以调整所放置的任何标签和权限。这是一个存在的假设。

如果您要运行病毒,请遵循一些规则,这些规则将使您比以下任何规则都更安全:

  • 有意运行病毒的机器应该被隔离。具体来说,它们应该无法充当任何事物的跳转箱。它们应该具有有限的网络访问权限(在自己的 VLAN 上),直至最低限度。它们永远不应该拥有 X.509 私钥或 SSH 私钥之类的凭证,这些凭证将允许它们对任何事物进行身份验证。
  • 您需要保留快速离线重建这些机器的能力。这使得快照虚拟机对于此类研究非常有吸引力。
  • 您关心的任何内容都不应存储在运行病毒的机器上。
  • 如果病毒是你自己制造的,或者它们的运行在你的控制之下,那么尽可能地让它们保持惰性。C&C 地址应该是黑洞(192.0.2.1,一个为测试和文档保留的 IP,是一个不错的选择;0.0.0.0 也合适;blackhole.iana.org是一个很好的 DNS 名称)。如果它们需要是真实地址,你可以在受限网络上为它们托管一个特殊的测试 C&C。
  • 如果您使用其他人的 C&C 和您无法控制的病毒,请务必小心。如果您要这样做,最好在本地控制台上通过单独的互联网连接执行此操作,该连接与您的 LAN 没有任何关联。

如果您担心意外运行病毒,selinux 可能会帮助您,但真正的解决方案是常识和应有的谨慎。

您还可以使用密码保护您的私钥,这会使它们被加密,但病毒可以通过您的按键绕过这一点。

答案2

如果恶意软件要使用您的凭据运行,那么我认为 SELinux 不是完成这项工作的合适工具,因为您所设置的任何东西肯定也会阻止您访问密钥。

私钥带有内置的安全机制,这些机制协同工作非常强大。密钥必须只有其所有者才能读取。如果您添加一个强大的密码短语,那么就没什么可担心的了。

相关内容