长期以来,我的印象是,使用unix时,您永远不应该以root用户身份登录。
现在,我已经开始在DigitalOcean上使用虚拟专用服务器,而一些建议则使用SSH密钥作为root登录。
这对我来说很有意义,但我感到不安,就像我在同一个文本文件中使用制表符和空格一样。
使用SSH根登录更安全,还是作为另一个具有狡猾密码的用户使用?
发布于 2014-09-08 20:44:56
要记住的第一条规则是,除非任务必须以root身份执行,否则不能以根用户的身份执行任务。
这部分减少了错误或其他错误造成损坏的风险。如果您使用的工具恰好存在安全漏洞,则还可以降低损坏的风险。
此外,帐户只应该拥有他们需要的特权,仅此而已。
在说明了这些部分之后,让我们来看看这两种根访问方法的参数。
以非根用户身份登录并使用sudo的
sudo作为前缀的命令。给你更多的安全性
审计跟踪只有在人们遵守规则的情况下才有效。如果有两个以上的人可以访问sudo,或者您只是记不起自己做过的所有事情,这是很方便的。然后你可以找出是谁做了什么,然后问他们为什么这么做。
但如果有人想绕过审计线索他们可以。如果您试图阻止某人绕过审计跟踪,这些限制可能最终会阻止他们完成他们的工作。
人们可以通过反射将sudo置于每个命令的前面,即使在不需要它的时候也是如此。如果存在安全漏洞,在不使用sudo命令的情况下运行不会给您带来很大的好处,因为如果攻击者破坏了正在运行的进程,那么是否使用sudo运行它并不重要,因为它只需要execve sudo就可以获得相同的权限。
用户密码允许访问更多的权限。用户可以通过经常输入用户密码。如果攻击者获得此密码,则可使用该密码通过sudo运行命令。
受威胁的用户帐户有效地授予root权限。还记得关于除非您必须以root的形式运行,并且提供帐户所需的特权的部分吗?
如果您以非根用户身份登录所有不需要根权限的任务,则可以减少暴露。如果帐户具有sudo访问权限,则无法获得这种好处。如果同一个帐户具有sudo访问权限,那些未作为根用户运行的任务将成为攻击者更有价值的目标。
如果您希望双方都能做到最好,您可以在服务器上给每个管理员两次登录。一次登录的日常任务,不需要根特权。和一个具有sudo访问权限的二级登录,以便在他们需要的时候访问。但是,第二个帐户和直接作为root登录的惟一不同之处是审计跟踪。但是,人们可能更容易忘记,他们不应该一直使用带有sudo访问的帐户。记住始终不以root身份登录对人们来说似乎要容易一些。
一些人认为,对于只需要猜测密码而不同时使用用户名和密码的攻击者来说,强行强制使用密码更容易。实际上,这是一个很弱的论点。
您可以将sshd配置为只允许使用密钥登录。没有必要允许使用密码登录。如果不允许密码登录,那么密码强制就不再是问题了。甚至不需要存在密码,这样就可以访问根帐户。没有人会猜测ssh认证的秘密密钥。
当/root/.ssh/authorized_keys包含每个管理员的公钥时,这些公钥可以用作显示谁做了什么的审计跟踪。而且,通过从authorized_keys中删除密钥来撤销访问与通过任何其他方法一样容易。
发布于 2014-09-06 23:58:34
此建议在多人可以执行根级操作的系统中最为相关。Linux审核守护进程可以区分"UID“和”有效UID",因此执行"sudo -i“并执行根级操作的用户" bob”将在审计日志中显示为“用户bob充当用户根”。因此,如果您跟踪/etc中的文件更改或/sbin中的文件执行情况,您将确切地知道是谁执行了这些操作。如果有人以root用户的身份直接登录,则此信息将不可用。
它还简化了帐户管理--如果您的管理团队成员离开了,您只需锁定他们的帐户,而不是替换所有系统上的根ssh密钥(尽管这是一个很好的实践,以及更改根密码)。
发布于 2014-09-06 18:09:09
我自己通常做的是配置登录到根帐户,用sudo配置服务器(将自己添加到sudoers),然后不再允许通过SSH进行根登录。
我看不出为什么你不能这样工作,但如果你自己有一个有效的案例,使用一个密钥和密码通常是很好的保护(这是双因素认证,因为它是你知道的东西和你拥有的东西)。
如果禁用根登录,也会减少计算机的攻击面。通常给出的另一个论点是,sudo给出了一定的问责性,根帐户通常是一个系统帐户,如果某物或某人使用root登录,您就无法知道谁在实际执行这些命令。在使用sudo时,您仍然有这种责任,因为人首先必须登录自己的帐户,然后sudo才能扎根。如果您的帐户很少(而且在大多数情况下不是独立的远程日志系统),这可能不适用于您。
https://security.stackexchange.com/questions/66894
复制相似问题