我不是服务器管理员,但我们现任的服务器管理员离开了。所以暂时就由我来照顾事情了。我们的系统目前受公钥/私钥保护。但在进行一些调查时,我发现唯一的访问权限是通过这个密钥。我不相信有任何可以访问的辅助帐户。根已被锁定。这让我很困扰,因为如果由于任何原因密钥失败/过期,我们将被锁定。正如我所说,我不是服务器管理员,但我认为我们至少需要另一个非 root 的可访问帐户,可能具有 sudo 权限。
现在问题来了,我们有大约 30 个 Ubuntu 主要是 Web 服务器,管理所有这些密码似乎是一件苦差事。我还不想进去创建帐户。我需要有关配置对 30 多个(并且还在不断增加)服务器的访问的最佳方法的建议。
考虑到经济增长,保护环境的最佳方法是什么?我是否只需要手动配置所有这些帐户并使用单独的密码?或者我们应该考虑使用目录服务?如果是的话,你会推荐什么 Ubuntu?
你不需要担心,也不需要改变。您的前管理员做得很好,禁用 root 和密码是增强总体安全性的良好开端。仅使用密钥身份验证是安全的。通常密钥不会过时,它们只是存储在文件系统中,只要它们保留在那里,它们就可以工作。您也不必担心被锁在门外。如果您对网络服务器有完全的控制权,您总是可以通过修改文件
/etc/shadow
(再次激活根)来授予自己根访问权限。这里唯一的问题是,您需要使用另一个操作系统实例挂载文件系统。做这件事有很多种方法。更简单的方法之一是使用 initramfs 操作系统层或使用可引导安装映像并使用 shell。如果你真的想要一个 root 密码,我建议使用一个非常非常长的密码,并在所有机器上设置它,打印出来并将其放入保险箱中。您只需通过 即可设置 root 密码
sudo passwd
。这通常还会激活 root 用户帐户。该密码只应由最少的人知道,不应存储在任何可访问互联网的计算机系统上,并且仅应在紧急情况下使用。我会使用 ansible 来集中管理这些服务器上的 ssh 密钥,不确定可能有点过分了。
https://medium.com/@chandrapal/managing-linux-users-ssh-keys-using-ansible-39ee2fc24c16
也许可以将其与 keeper security 这样的解决方案结合起来,您可以将 ssh 密钥仅共享给需要它的人。
有很多事情:
这听起来就像有共享管理员帐户和共享 ssh 密钥来远程登录到该帐户。
一般来说,您希望管理员(实际上是所有用户)使用自己的帐户和密钥登录。然后他们可以使用
sudo
自己的个人密码提升权限。当某人离开您的组织时,您可以锁定/删除他们的个人帐户,然后就完成了。
对于共享帐户,该过程变得越来越复杂,因为您应该更改所有共享帐户的密码,并且共享帐户越多,您就越有可能错过一个或出现某些问题。
几乎所有安全准则都要求禁用远程 root 访问。通常允许通过控制台进行 root 登录,但需要知道 root 密码。
正如已经建议的那样,生成一个强 root 密码列表,最好每个系统都有一个,打印该列表并将其粘贴在办公室的保险箱中,以备打破玻璃事件之用。(当您需要访问远程控制台时。)
对这些密码进行 SHA512 加密哈希,并使用这些加密密码在系统上设置 root 密码(通过配置管理自动化),以防止处理明文密码。
顺便说一句,传统的 ssh 密钥对不会过期。
拥有 30 台服务器并期望更多,您应该考虑一种集中式和自动化的配置管理形式。
这将使事情变得更容易:
为每个团队成员/员工/系统管理员提供个人帐户及其 ssh 密钥对的访问权限
sudo
为每个团队成员/员工/系统管理员提供(基于组的)权限进行更新
重新部署正确的配置以进行测试、水平扩展、灾难恢复等。
通过适当的自动化配置管理,您可以避免集中式用户目录,并为所有管理员和员工配置本地用户帐户。
短期内这可能不会那么复杂。
但是,如果您想强制执行定期密码轮换,并且需要确保每个人都使用强密码,那么中央用户目录很快就会成为更好的解决方案。
如果您已经有一个中央用户目录(例如 Microsoft Active Directory),那么与其集成几乎总是比为管理 Linux 服务器设置单独的用户目录更好。