![如何保护 ~/.ssh/authorized_keys 文件?](https://linux22.com/image/151436/%E5%A6%82%E4%BD%95%E4%BF%9D%E6%8A%A4%20~%2F.ssh%2Fauthorized_keys%20%E6%96%87%E4%BB%B6%EF%BC%9F.png)
我有一台启用了公钥身份验证的机器。我在 处有一些授权密钥~/.ssh/authorized_keys
。
我担心我曾经错误地使用我的用户(没有 root 访问权限)运行恶意脚本/程序。该脚本将被允许进行静默修改,~/.ssh/authorized_keys
以允许攻击者永久获得该用户的远程访问权限并进一步攻击系统。
授权密钥 ( ) 的默认位置是否存在
~/.ssh/authorized_keys
安全问题?是否有不同的方法以更安全的方式保存每个用户的授权密钥(即需要根访问权限才能允许新主机)?
答案1
如果您在此计算机上具有 root 访问权限,那么您可以尝试使用以下命令使 ssh 文件和目录不可变chattr
命令,例如:
sudo chattr +i ~/.ssh/authorized_keys
sudo chattr +i ~/.ssh
这将防止您的授权密钥文件被修改、重命名、删除或覆盖。由于只有 root 可以取消设置不变性标志,这将阻止您作为普通用户运行的任何脚本将密钥插入到您的authorized_keys
文件中。
答案2
sshd 配置文件中有一个选项:AuthorizedKeysFile
使用令牌你可以这样设置:
AuthorizedKeysFile /etc/sshd.keyfiles/%u.key
下一步是将此文件夹添加到您的 Puppet/Ansible/etc 系统中,并跟踪该文件夹中所有文件的更改。
答案3
ssh 如何防止使用“mount --bind”欺骗主文件夹?我做了一个测试,并将主文件夹与另一个文件夹安装在不同的硬盘上。使用命令 ssh-copy-id 后,客户端的密钥已正确导入到 /home/.ssh/authorized_keys 中,并且在使用“sudo chmod 755 ~”更改主文件夹的访问权限后,它就像一个魅力一样,它不再需要输入密码。