我们有大约2500台Linux服务器。 我们有一个Jumpstart服务器,从中我们可以通过SSH连接到任何服务器来处理与系统pipe理员有关的任务。 我们已经部署了一个身份文件,并在所有服务器上使用相同的公钥。 但这是一个巨大的安全威胁。
我们想为每个服务器部署不同的密钥。 但是,这将创造大量的钥匙,使其难以pipe理。 请build议一种方法,我可以轻松地做到这一点。
对于2500个主机,你可能已经有了一个configurationpipe理系统,但是如果你没有,你可以使用SaltStack 。 我们有这个root auth:
user1auth: ssh_auth: - present - user: root - source: salt://resources/ssh_keys/user1 user2auth: ssh_auth: - present - user: root - source: salt://resources/ssh_keys/user2
您不需要在跳转主机上拥有私钥。 login时只需使用代理转发: ssh -A root@host 。
还有其他系统(比如Pupet,cfengine)。
我在所有地方使用相同的SSH密钥所看到的问题是缺乏问责制。
相反,我会让每个用户拥有自己的SSH密钥或密钥,并使用集中式身份validation和授权系统。
这样,公共密钥甚至不需要分发到目标系统,并可以存储在像FreeIPA这样的中央目录服务中。
除了获得责任外,您还可以定义细粒度的基于angular色的访问控制(RBAC)策略。
FreeIPA很好地处理SSH密钥pipe理。 我在家里成功地使用它,但许多企业在生产中使用它(freeipa用户邮件列表是超级活跃的)。 这是基于红帽身份pipe理解决scheme的上游自由软件项目。 还有一些Red Hat的开发人员在freeipa-users邮件列表上进行了调整和帮助。
基本上它是一个类Unix / Linux环境下类似Active Directory的服务。 它也可以与AD同步。 它具有nix本机function,如NFS自动安装,集中的sudo策略等。
每个用户都可以将其SSH密钥添加到FreeIPAconfiguration文件中。 然后sshd可以configuration为使用sssd软件包提供的AuthorizedKeysCommand,该软件将被configuration为查询FreeIPA服务器。 结合sudo政策,您可以获得特权升级和审计(谁起诉)。
作为一个RedHat项目,它可以安装在Fedora或者CentOS上,但是我已经成功的安装和configuration了debian盒作为FreeIPA客户端。 我将身份validation服务器安装在Fedora服务器上,这是它本机支持的平台。
将公钥复制到所有要login的服务器通常是通过SSH完成的。 如果你所做的是在jumpstart服务器上创build一个private / public keypar,并将公钥复制到你想要SSH的主机上的~/.ssh/authorized_keys文件,那么这是(部分)被接受的安全方式通过ssh远程login。 其他要考虑进一步安全的ssh是:
/etc/ssh/sshd_config并设置PasswordAuthentication No和PubkeyAuthentication yes /etc/ssh/sshd_config LogLevel更改为VERBOSE ,然后监视/var/log/auth.log以查看exception情况。 /etc/security/access.conf只允许用户从某个IPlogin /etc/pam.d/login并设置account required pam_access.so以启用对access.conf所做的更改 为每个服务器部署一个“不同的密钥”似乎意味着你需要在每个服务器上的~/.ssh/authorized_keys使用一个不同的~/.ssh/authorized_keys 。 原因是我不清楚,但如果你必须的话,我会在Jumpstart服务器上创build一个文本文件,每行都有一台主机。 使用for循环来parsing文件并运行ssh-keygen -f $line_from_file为每个主机创build一个密钥对。 您也可以使用相同for循环ssh到每个主机,并使用sed -i或其他东西将pubkey添加到~/.ssh/authorized_keys 。
每个服务器上的单一身份文件违反了大多数安全框架,包括PCI,HIPAA等。每个人类用户都需要自己的帐户,这些帐户需要被删除。
有很多商业和开源解决scheme可以为你处理这个问题。 例如,Userify(我工作的地方),通用密钥pipe理器,SSH密钥箱等
您的select应该取决于您的需求和预算,以及您认为重要的function。 例如,许多集中式系统如此集中,以至于如果您的LDAP服务器closures,您可能无法login到任何服务器。 能够集中pipe理您的SSH权限非常重要,同时分散实际操作以获得更高的可靠性和控制力。
另见这个倾斜的讨论:
如果你没有预算的限制,可以使用像戴尔TPAM或Cyberark这样的专有解决scheme(我不喜欢它们)
另外,您可以为每个用户使用ssh-agent或gpg-agent使用一个SSH密钥