我刚刚开始使用 salt,我想知道 saltmaster 如何针对客户端进行身份验证。我知道在连接 minion 时,master 必须接受 minion 的公钥,因此未经授权的 minion 无法连接。但是,如何防止有人冒充 saltmaster,让所有 minion 连接到错误的服务器并愉快地执行代码并向攻击者提供完全访问权限?
当然,minion 会连接到给定的 IP 地址或主机名,但劫持它应该很容易……
答案1
如果不付出额外努力,就无法阻止(可疑的)攻击者在第一次密钥交换和所有后续连接期间发起中间人攻击。这与互联网上任何密钥交换中固有的风险相同。
您可以验证主人和奴仆的指纹。
在 master 上:sudo salt-key -F
在 Minion 上:sudo salt-call --local key.finger
但是你必须相信,当你通过 ssh 进入该机器时,你和该机器之间不会存在(精心策划的)(持续的)中间人攻击。一路上都是乌龟。
真正偏执的人必须在离线的情况下预先生成密钥(主服务器和所有从属服务器),并和我们其他人一样希望他们的 CPU 不会以我们尚未发现的微妙方式受到损害。
如果密钥后来不匹配,您可以验证 minion 确实拒绝连接到 master。关闭 salt-minion、备份/etc/salt/pki/minion/minion_master.pub
、修改它,然后以调试模式启动 salt-minion:sudo salt-minion -l debug