authorized_keys 的中心位置是个好主意吗?

Gav*_*ler 31 security linux ssh apache-2.2

我正在配置云服务器以运行以下堆栈:Ruby、Passenger、Apache;在 Ubuntu 10.04 (Lucid Lynx) 下。

在想让服务器更容易管理的过程中,我在 上设置了 RSA 密钥rootwww-data以便我可以ssh进入服务器。我不喜欢的事情是,www-data.ssh目录坐在/var/www这是Apache的默认目录设置。我担心的是,如果 apache 没有正确配置,那么.ssh目录可能会暴露。

我在整个解决方案来到移动~/.ssh/authorized_keys通过改变文件到一个中心位置AuthorizedKeysFile/etc/ssh/sshd_config。这有两个优点:密钥的单一位置,不必担心糟糕的 apache 配置。我能想到的唯一缺点是现在每个用户都可以在服务器上登录(显然是中央密钥文件的双刃剑。)

在这个配置中有什么我遗漏的吗?我是否过度暴露自己,或者这是比单个authorized_keys文件更好的解决方案?

在服务器管理方面,我是绿色的,但我完全准备好因做坏事而被称为坏名声。:D

小智 54

所有的密钥文件可以集中在同一个目录中,而不是混在同一个文件中。

只需sshd_config像这样设置文件:

AuthorizedKeysFile  /etc/ssh/authorized_keys/%u
Run Code Online (Sandbox Code Playgroud)

在您的服务器上:

  • www-data 密钥将在 /etc/ssh/authorized_keys/www-data
  • 根密钥将在 /etc/ssh/authorized_keys/root

关于访问权限,sshd 接受这些设置:

/etc/ssh/authorized_keys由拥有root:root并具有模式 755。密钥文件由拥有root:root并具有模式 644。

其他模式可能有效,但我还没有测试过。

  • +1,但我不会设置其他位。将 %u 文件的所有权设置给用户,这样就不需要了。 (3认同)
  • PoI:如果您尝试使用 Windows 版本的 SSHD 让它在域环境中工作,您可能会注意到 SSHD 抱怨“...authorized_keys/domain\\user”不存在。我设法通过创建子目录“...authorized_keys/domain/”并将用户文件放在该子目录下来解决这个问题。 (2认同)

vor*_*aq7 15

一般来说,我不会按照你的建议去做。它打破了常见的假设(例如~/.ssh/authorized_keys为您的用户工作,并引入了您在问题中已经提到的问题。如果您在实施之前看到明显的问题,则意味着您的解决方案并不理想。

在安全方面,我也认为让每个人共享一个服务帐户是一个可怕的想法:现在只有你自己,而且你知道你是做出改变的人。5 年后,当您拥有 5 个管理员时,您会想知道谁更改了哪些内容,并通过审核日志挖掘谁使用了哪些密钥,这真是太痛苦了。
你最好让人们以他们自己的身份登录并使用sudo或类似的东西来提升他们的权限并做他们需要做的任何事情。


如果您仍然想集中 SSH 密钥,我建议您查看像Puppetradmind这样的部署系统来管理/分发authorized_keys文件到适当的~user/.ssh/目录(或破解一个本地解决方案,将它们 SCP 到位)。
当您扩展到多个服务器时,您可能还想查看旧版 OpenSSH的 LDAP 公钥补丁(或新版 OpenSSH 中的AuthorizedKeysCommand指令和适当的脚本),以便您可以集中您的用户而不必分发他们的密钥遍布您的网络,但这对您来说可能很遥远。

  • 在大多数系统上,“/etc/ssh/sshd_config”中的“AuthorizedKeysFile”默认为“%h/.ssh/authorized_keys”。这里 `%h` 是主目录的占位符。是什么阻止您将其设置为“/some/folder/ssh_keys_by_user/%h/”或什至“/root/ssh_keys/%u”。您甚至可以授予相应用户对其个人文件的写入权限(并且只有他的)将文件链接到标准位置(使用“ln -s /root/ssh_keys_by_user/username /home/username/.ssh/authorized_keys”)并且不打破上述假设。 (2认同)