安全意识的人们常常build议在Linux机器上以root身份禁用ssh。 我的问题是这样的:
比方说,通常你会写很多ssh脚本到大量的Linux机器上,执行各种根级的任务。 如果以root用户身份禁用ssh,那么如何进行需要root权限的日常维护?
当然,sudo是一个选项,但是每次运行命令时都必须input密码。 如果你的脚本执行各种任务呢? 如果您必须对大量主机运行该脚本,该怎么办?
当然,你可以设置NOPASSWD参数,但这不是一个安全风险?
只是在这里沉思。 想获得社区的反馈。 我正在寻找一种相对安全的方式来ssh到Linux机器,并执行根级任务。
有很多事情可以做。 这是一个部分列表:
如果脚本真的必须定期运行,把它放在crontab中,并停止手动运行。
使用诸如MCollective之类的系统(与puppet相关,但不完全是puppet的一部分)可以在大量机器上远程运行命令。
使用ssh键来允许来自特定用户的rootlogin。 这带来了审计风险,因为login的人可能没有login,所以它只适用于非常小的安装。
在/etc/sudoers
只指定可以在没有密码的情况下运行的特定脚本; 别的什么都需要密码。
如果你经常“编写脚本以root身份运行任务到ssh”,你应该认真考虑设置Puppet / Chef / CFEngine / Ansible / Salt / Rundeck。
您不必每次input密码:如果您在相对较短的时间内运行sudo,则不必input密码。 如果需要更长的任务,可以运行sudo -s
来获得root shell。
使用sudo作为root的直接ssh的一个好处是:a)不需要共享超过多个人的root密码b)可以读取日志来确定谁是sudo的。 只要你一个人,这可能不是必要的,但可能会改变。
如果需要执行一些特定的命令,可以设置sudo(通过/etc/sudoers
文件)以允许特定的用户(和/或组)列表在没有密码的情况下执行这些命令。