识别网络上多个服务器之间的 ssh 信任

识别网络上多个服务器之间的 ssh 信任

问题:

我们有许多 dev/qa/prod RH/Solaris 服务器,其中许多帐户之间具有 ssh 信任,包括不同环境中的服务器之间(prod->prod,还有 qa->prod)。我知道这是一种不好的做法,我试图解决它的第一步是了解哪些盒子上的哪些帐户可以 ssh 到哪些盒子上的哪些其他帐户而无需密码。

我的方法是使用一个 shell 脚本来登录到指定的服务器列表,并sudo通过 /etc/passwd 文件获取所有帐户和主目录的列表,查看后者是否存在.sshid_rsa.pub/或id_dsa.pubauthorized_keys并将每个帐户每个框的这些信息输出到stdout运行脚本的机器上。

用户可以指定 ssh 使用非默认密钥,这是一个公认的限制。(我认为事实并非如此)

然后使用输出创建一个 html 页面,其中包含从上面的输出创建的 JavaScript 对象 {username, machine_name, rsa_key, dsa_key, authorized_keys[]},并使用 JQuery(或类似)显示层次结构(如何待定)。

我的问题是,是否已经存在解决此类问题的方法?如果没有,欢迎对我的方法提出任何意见。

答案1

看起来你很清楚自己在这里做什么。记录哪些系统可以连接到没有密码的东西总是一个好主意。这样做不一定是坏习惯,事实上,做某些事情是必须的,但你需要知道如果有人闯入你的某个服务器,这一切是如何运作的——他们还能访问什么?

一个值得查看的地方是所有服务器上的身份验证日志。这将告诉您当前脚本/程序实际使用了哪些密钥。

SSHd 确实会告诉您用户如何登录。在日志中您应该会看到如下一行:

Accepted publickey for automatedprocess from 123.456.789.012 port 12345 ssh2

查看日志并查找日志所在服务器、用户名和发件人地址的所有唯一组合,将显示哪些系统一直在使用这些密钥。

这也可能为您提供一个良好的起点,让您了解哪些不再需要,哪些是自动化流程经常使用的。

相关内容