远程根登录

远程根登录

我知道保护服务器安全要做的第一件事就是禁止远程根登录。

密码非常弱;人们对仅允许通过 ssh 密钥或其他无密码方法进行 root 登录有何看法。

哪种方法最好?最好不要冒险吗?使用辅助帐户进行 ssh 连接su -真的能增加安全性吗?

serverfault.com 上的人们如何访问远程服务器上的根目录?

答案1

在大多数情况下,实际上禁用远程 root 登录并没有什么好处。它略微有助于执行一项策略,即管理员通过自己的帐户登录并su在必要时使用 root(或sudo可能使用sudosh...,具体取决于您的策略)。

创建非常长且繁琐的根密码(只要您不再使用古老的 DES+12 位盐散列法作为密码,它就是有效的)对于执行这样的策略同样有效。

我熟悉的一个网站有一个系统,其中为每个主机随机生成唯一的密码,存储在数据库中,并推送到系统。管理员需要使用ssh他们的普通帐户和sudo大多数操作。但是,他们可以通过基于 SSL 的内部 Web 服务(这进一步需要他们的 RSA SecurID 令牌和 PIN)访问 root 密码。获取 root 密码需要输入理由(通常是 Remedy(TM) 票号的链接)并定期审核访问。直接使用 root 密码的少数几个可接受原因之一是系统在fsck启动过程中停止运行的情况……并且sulogin需要真正的 root 密码才能手动运行文件系统检查和修复过程。(有人讨论了替代方法 --- 对于 Linux 来说相对容易,但当您尝试扩展您的程序以考虑仍在该环境中生产的许多旧式 HP-UX、AIX 和较旧的 SunOS 和 Solaris 系统时,会变得更加困难)。

在某些情况下,root 密码是必需的 —— 或者至少是最佳可用替代方案。保持密码可用,同时使其足够强大,以抵御您可以预见的各种威胁,这通常是最佳策略。

我知道的另一个网站有一种相当优雅的去中心化账户管理方法。他们有 user-* 和 sudo-* 包(类似 RPM),使用常规包管理程序和自动化基础设施安装到系统中。在他们的情况下,sudo-* 包依赖于相应的 user-* 包。这很好,因为它允许您拥有具有本地化帐户的机器集群(所有帐户都是管理员、开发人员、支持人员或“无头”帐户),并消除了对 LDAP/NIS 或其他网络身份和身份验证服务的依赖。(这减少了系统之间的耦合,使它们更加健壮)。

我喜欢这种方法的一点是它提供了灵活性。任何有sudo访问权限的人都可以发出命令来添加普通用户或其他sudo用户帐户。因此,如果我正在处理一张票,任何已经有权访问系统的人都可以轻松地授予我访问权限。将我添加到某个中央数据库中的某个访问控制列表的票证会通过一些集中式审批流程,最终将更改传播回相关系统,这个过程没有任何延迟。sudo系统上的任何授权人员都可以授予我访问权限,然后删除我。(是的,如果我是邪恶的,他们玩弄我,sudo我可以恶意修改一些东西来保留访问权限……事实上,我可以像普通用户一样做一些事情来保留访问权限,即使被删除。然而,这不是他们担心的威胁。我的访问权限仍然仅限于相对较少的系统;因此,被盗用帐户的影响仍然比我见过的大多数类似方案更有限。

答案2

如果您禁用远程 root 访问权限,则可以防止远程攻击者直接获取 root 权限 - 他们必须破解另一个帐户,获取机器访问权限,然后尝试获取 root 权限。这是一个额外的步骤。

通常,root 无法进行远程访问。SU 运行良好。如果真的出现故障,总是可以直接访问盒子来修复它。

如果您想要更严格 - 只需完全禁用 root,这就是 sudo 的作用所在。同样,使用这种方法,您仍然可以通过进入单用户模式获得 root 访问权限 - 就像 Ubuntu 一样。不过,我相信他们为此使用了修补的 init,正如他们的文档所述。

此外,您可以设置空闲以在空闲用户的终端处于打开状态且 PC 也处于打开状态时将其踢出。您可以强制所有用户使用密钥,但密钥管理可能很困难。

作为突破型系统的单一直通日志记录主机也强制了额外的保护层和审计跟踪。

答案3

我建议您设置系统以仅允许在控制台进行 root 访问。

否则,使用带密码选项的 sudo,允许选定的用户访问特权命令。顺便说一句,请注意,如果您愿意,sudo 可以设计为限制用户帐户只能执行某些命令。Sudo 会在系统日志中留下使用过的“标记”。sudo 比 su 更好,因为不会泄露 root 密码。因此,您可以更改 root 密码,而使用 sudo 的用户不会更明智。

允许使用 sudo 来获取特权命令应该伴随强制定期更改密码,更改频率取决于环境。

答案4

永不允许 root

设置系统仅允许通过密钥访问,无需密码

然后为允许通过 root 帐户进行更改的用户设置 sudo

相关内容