可能的重复:
禁用 sudo 密码会造成哪些具体漏洞?
我再次陷入了关于sudo
没有密码是否足够安全的旧争论。我站在那些不介意每次使用时输入密码的人一边sudo
,即使它不太方便,因为这意味着不仅仅是服务器上运行的任何脚本都可以sudo install-rootkit
在我不知情的情况下包含它。
我还通过多 shell 命令(如gsh
和 )使用它terminator
向多个远程服务器(CentOS 5)发送相同的命令。
另一方的论点是,它是多余的,只会阻止他使用他最喜欢的多 shell 命令。
谷歌搜索“sudo 最佳实践”,我没有找到太多关于此的讨论,似乎人们普遍同意无密码sudo
。
我是少数吗?
PCI-DSS 合规性会产生影响吗? (我们尚未兼容 PCI,但这是可能的)。
答案1
如果您使用 sudo 来跟踪命令,无论您是否输入密码,都会记录下来。
除此之外,在管理小型站点时,每次调用 sudo 时都提示输入密码可能会带来一些不便。在大型站点,它可能不具有可扩展性。在这种情况下,人们会在执行 sudo 时在客户端使用脚本或应用程序临时存储密码。此时,您现在就有可能利用该脚本或应用程序,并从该客户端窃取具有超级用户权限的用户登录凭据。
抛开这一点来说,更大的问题是您实际上不需要登录服务器,除非是为了维护。否则,某些错误命令导致中断的可能性将会增加。您可能需要检查您的日常活动并在必要时实现自动化,以便减少登录和执行超级用户命令的需要(这将带来减少每次都必须输入密码的投诉的副作用) )。
答案2
我唯一一次允许 NOPASSWD 是针对特定程序。有时您需要 NOPASSWD 来实现自动化流程。
如果您打算使用 NOPASSWD 标志,则不要允许开放途径滥用访问权限。例如,不允许在未锁定其标注的情况下访问编辑器 (NOEXEC)。
答案3
如果您打算使用 sudo 允许 NOPASSWD,则仅允许通过 ssh 密钥进行 ssh,并确保用户使用该密钥输入密码
答案4
没有密码的 sudo 比有密码的安全性低。
就像生活中的其他事情一样,当您在没有密码的情况下使用 sudo 时,您会为了方便而牺牲安全性。
由您决定您的特定系统是否可以接受这种权衡。