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

我正在使用Fedora发行版 – 预安装了SELinux策略。 我想限制在~/.ssh文件夹中对我的私钥的不安全访问 – 以防止可能运行在我的帐户下的恶意软件泄漏。 根套装是没有问题的。


更新#1:我想解决与新手Fedora用户的企业问题 – 没有USB令牌等,他们可能会使用一个非常弱的密码。 如果只有root用户和ssh客户端程序才可以访问私钥,那就没问题了。 没有必要让真正的用户看到私钥 – 我不知道为什么要看私钥的原因,甚至一次。


我怎样才能做到这一点? build议使用SELinux。

将私钥隐藏到允许使用私钥的适当方式是硬件安全模块(智能卡或其他方式)。 你可以做一些SSH密钥的工作(谷歌search用一些笨重的硬件和GPG来介绍这个教程 )。

但是,如果你担心某个东西不是shell的东西,记住大量的漏洞可以让你得到一个shell,AppArmour可以通过这种方式限制文件系统权限,但是我相信在主目录内部做一些对于多用户系统的pipe理更加棘手。

SELinux也可以这样做; 你把一个安全标签的文件,只允许ssh读取它们 。

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

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

  • 故意运行病毒的机器应该有点孤立。 具体而言,他们应该不能成为任何东西的跳箱。 他们应该有有限的networking访问权(在他们自己的VLAN上),直到最低限度的要求。 他们永远不应该拥有像X.509私钥或SSH私钥这样的凭据,这将允许他们对任何事情进行身份validation。
  • 您需要保持快速脱机重build这些机器的能力。 这使得快照的虚拟机非常适合这种types的研究。
  • 没有你关心的应该存储在用于运行病毒的机器上。
  • 如果病毒是您自己制造的,或者您的操作在您的控制之下,则尽可能使其处于惰性状态。 C&C地址应该是黑洞(192.0.2.1,为testing和文档保留一个IP,是一个好的; 0.0.0.0也是适当的; blackhole.iana.org是一个很好的DNS名称)。 如果他们需要真正的地址,你可以在受限制的networking上为他们提供一个特殊的testingC&C。
  • 如果您使用别人的C&C和您无法控制的病毒,请务必小心。 如果你这样做的话,最好是在本地控制台上以独立的互联网连接方式进行,而不是以任何方式与你的局域网相连。

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

您还可以用密码来保护您的私钥,这会导致它们被encryption,尽pipe病毒可以让您的击键绕过。

如果恶意软件将使用您的凭据运行,那么我不认为SELinux是这个工作的正确工具,因为您可能放置的任何东西肯定会阻止您访问密钥。

私钥带有一个内置的安全机制,一起工作非常强大。 钥匙只能由他们的主人阅读。 如果你添加一个强大的密码短语,那么应该有很less担心。