我目前正在努力加强我的服务器以抵御黑客攻击 - 除其他外,我收到大量通过 ssh 以 root 身份登录的尝试。虽然我已经实施了 fail2ban,但我想知道,为什么默认允许 root 登录?即使使用非基于 sudo 的发行版,我也始终可以以普通用户身份登录并切换 - 所以我想知道允许 root 在 ssh 上登录有什么明显的优势,还是只是没有人愿意改变?
答案1
允许 root 在 ssh 上登录有什么明显的优势吗
有些备份系统需要远程系统上的 root 权限才能实际执行备份。设置基于密钥的身份验证来执行远程系统上的维护任务的情况并不罕见。
我非常希望默认值PermitRootLogin yes
至少从 改为PermitRootLogin without-password
,这样就只允许基于密钥的身份验证。几乎不需要对 root 帐户进行远程密码身份验证。
在系统(如 Ubuntu)上,使用禁用密码的 root 帐户进行设置变得越来越常见。默认设置的风险并不大,因为没有办法直接对禁用密码的帐户进行身份验证。
另外,如果您的 root 帐户的密码足够复杂,则暴力尝试通过 ssh 远程登录 root 的成功率非常低。禁用 root 帐户确实提供了额外的安全层,但如果您有一个强密码,则可能不需要这样做。如果您将强密码与类似denyhosts 和fail2ban 的反应工具结合使用,则暴力破解 root 密码的尝试通常几乎没有风险。
安装完成后,根据风险和网络要求对系统进行强化始终是一种很好的做法。非关键且没有用户数据的系统实际上不需要与存储医疗或银行记录的系统相同级别的强化。
答案2
我不确定,但我认为他们想确保进行国外安装的人可以登录。第一次登录可能需要 root 用户,因为目前还没有其他用户。
然而,你必须确保禁用以 root 身份登录选项在创建用户并授予他 sudo 权限后,在 sshd 配置中。
我还建议您将 SSH 端口更改为 22 以外的其他端口。虽然这不会让您的机器更安全 - 但它确实可以阻止所有那些浪费/烦人的请求。
答案3
考虑将阻止 root 登录作为额外的保护。几年前,暴力破解处于顶峰,而现在,他们倾向于通过守护进程(apache、pureftpd 等)来寻找漏洞。如果明天发现 SSHD 漏洞,阻止 root 登录将成为一个好主意。虽然 SSHD 成熟且安全,但你永远不知道会发生什么。最近的漏洞更多地是利用内核提升权限或使用第三方应用程序与内核配合使用,因此阻止 root 登录不会改变任何事情。
基于 Debian 的发行版已经进行了切换,而基于 RedHat 的发行版建议这样做(如果你阅读他们的最佳实践文档)
答案4
它几乎是特定于发行版的。有些允许,有些不允许。
如果我在管理发行版,我会在安装时将系统配置得尽可能坚固。忘记启用某些功能总比忘记禁用某些功能要好。