为什么要阻止“root”使用 ssh 登录?

为什么要阻止“root”使用 ssh 登录?

最佳做法是删除“root”通过 ssh 登录的能力。但是,我需要运行一些 Ansible 命令,并且当前正在通过名为“amdhske”的用户进行连接,然后将此用户设置为无需输入密码即可执行操作,否则sudoAnsible 需要保留该用户的密码。

那么在这种情况下禁用 root 访问权限有什么意义呢?任何通过 ssh 进入“amdhske”用户帐户的攻击者都可以彻底sudo摆脱服务器。我猜这里唯一的优势是,选择一个较长的随机用户名使得攻击者不太可能知道它,而“root”是“root”的默认用户名。还有其他原因吗?

答案1

非常简单。原因有二:

  1. 你可以限制你的用户无需密码即可执行哪些 sudo 操作。你只需在 sudoers 文件中输入正确的配置即可:

    amdhske ALL=NOPASSWD: /usr/bin/somecommand
    

如果您以 root 身份登录,那么您就有所有权限执行任何操作。

  1. 地球上的每个脚本小子都知道您的超级用户帐户名称是 root。那么您认为他们会尝试使用什么用户名来暴力破解您的系统呢?没错,就是 root。

这就是为什么禁用 root ssh 登录是一种良好的安全做法。

答案2

为了解决“Ansible”的问题而不禁用 的密码问题sudo,您可以 sudo 一个简单的命令,例如sudo ls然后继续sudo Ansible。不过,这只是一种解决方法,它sudo会在一段时间后过期,因此可能无法完全解决问题。

附言:我明白这并没有解决 OP 的直接问题,但我正在尝试解决他/她的根本问题(双关语)。

答案3

这里发生了几件事,我可能错过了一些,但我会继续说下去。

  1. 通过隐蔽性实现安全:定期检查您的身份验证日志。每天可能会有数百次自动脚本尝试 root 登录,而禁止该用户登录会阻止一些容易实现的目标。

  2. 遗留政策:对于基于密钥的身份验证来说,这不是什么大问题,但对于较旧的身份验证模型,保持 root 登录状态是非常糟糕的做法。这些最佳实践没有改变,因为 root 登录首先没有真正的好处。

  3. 日志记录:如果每个用户都有自己的帐户,您就可以更轻松地知道谁在您的系统上做了什么。

此外,不久前,无密码 sudo 还被认为是非常糟糕的做法。只有在基于密钥的身份验证时代,这种做法才变得有用且安全。用户通常甚至不知道自己的密码,因此即使被要求,他们也无法提供密码。

相关内容