Journeyman Geek Asked: 2010-03-25 18:14:09 +0800 CST2010-03-25 18:14:09 +0800 CST 2010-03-25 18:14:09 +0800 CST 为什么 sshd 默认允许 root 登录? 772 我目前正在努力加强我的服务器以防止黑客攻击——除此之外,我正在尝试以 root 身份通过 ssh 登录。虽然我已经实现了fail2ban,但我想知道,为什么默认情况下允许root登录?即使使用非基于 sudo 的发行版,我也可以始终以普通用户身份登录并切换 - 所以我想知道允许 root 登录 ssh 是否有任何明显的优势,或者它只是没有人愿意改变的东西? security ssh root 5 个回答 Voted Best Answer Zoredache 2010-03-25T19:04:10+08:002010-03-25T19:04:10+08:00 在 ssh 上允许 root 登录有任何明显的优势 有一些备份系统需要远程系统上的 root 才能实际执行备份。使用基于密钥的身份验证设置以在远程系统上执行维护任务的情况并不少见。 我强烈希望将默认值从更改PermitRootLogin yes为至少PermitRootLogin without-password,这将只允许基于密钥的身份验证。几乎从不需要对 root 帐户进行远程密码验证。 在系统(如 Ubuntu)上,使用禁用密码的 root 帐户设置系统变得越来越普遍。默认设置没有太大的风险,因为无法直接对禁用密码的帐户进行身份验证。 还要考虑到,如果您有一个密码足够复杂的 root 帐户,那么通过 ssh 远程登录到 root 的蛮力尝试成功的机会非常低。禁用 root 帐户确实提供了额外的安全层,但如果您有一个强密码,则可能不需要它。如果您将强密码与denyhosts 和fail2ban 等反应性工具结合使用,通常几乎没有尝试暴力破解root 密码的风险。 根据风险和网络要求,在安装完成后强化系统始终是一个好习惯。一个不重要且没有用户数据的系统实际上并不需要与存储医疗或银行记录的系统相同级别的加固。 Xeoncross 2010-03-25T18:22:20+08:002010-03-25T18:22:20+08:00 我不确定,但我假设他们想确保进行外国安装的人可以登录。因为还没有其他用户,所以第一次登录可能需要 root。 但是,在创建用户并授予他 sudo 权限后,您必须确保在 sshd 配置中禁用以 root 身份登录选项。 我还建议您将 SSH 端口更改为 22 以外的端口。虽然它不会使您的机器更安全 - 它确实会阻止所有那些浪费/烦人的请求。 Embreau 2010-03-25T19:37:15+08:002010-03-25T19:37:15+08:00 考虑防止 root 登录作为额外的保护。几年前,暴力破解达到顶峰,如今,他们倾向于通过守护进程(apache、pureftpd、...)可以看到的内容来寻找漏洞。如果明天发现 SSHD 漏洞,防止 root 登录成为一个好主意。虽然 SSHD 成熟且安全,但您永远不知道。最近,漏洞利用更多地是通过内核提升特权或使用带有内核的第三方应用程序,因此阻止 root 登录不会改变任何事情。 基于 Debian 的发行版已经进行了切换,而基于 RedHat 的发行版建议这样做(如果您阅读了他们的最佳实践文档) sucuri 2010-03-26T05:16:04+08:002010-03-26T05:16:04+08:00 好吧,因为 root 是一个有效的用户并且 sshd 允许它工作。例如,在 OpenBSD(来自 OpenSSH 的同一个人)上,在安装过程中不会要求您创建用户,因此您需要使用 root 访问您的机器。 一些基于桌面的发行版迫使您创建额外的用户,但对于服务器,您实际上不需要一个。 此外,sudo 或 su 比以 root 身份登录更安全的这些论点是一个很大的神话。例如,在 Ubuntu 上,用户可以默认使用 sudo 运行任何命令,因此任何进入的攻击者也可以以 root 身份运行任何命令。从安全的角度来看非常没用。 Joe Internet 2010-03-25T20:13:06+08:002010-03-25T20:13:06+08:00 它几乎是特定于发行版的。有些允许,有些不允许。 如果我正在管理一个发行版,我会将系统配置为在安装时尽可能地强化。忘记启用某些功能比忘记禁用某些功能要好。
有一些备份系统需要远程系统上的 root 才能实际执行备份。使用基于密钥的身份验证设置以在远程系统上执行维护任务的情况并不少见。
我强烈希望将默认值从更改
PermitRootLogin yes
为至少PermitRootLogin without-password
,这将只允许基于密钥的身份验证。几乎从不需要对 root 帐户进行远程密码验证。在系统(如 Ubuntu)上,使用禁用密码的 root 帐户设置系统变得越来越普遍。默认设置没有太大的风险,因为无法直接对禁用密码的帐户进行身份验证。
还要考虑到,如果您有一个密码足够复杂的 root 帐户,那么通过 ssh 远程登录到 root 的蛮力尝试成功的机会非常低。禁用 root 帐户确实提供了额外的安全层,但如果您有一个强密码,则可能不需要它。如果您将强密码与denyhosts 和fail2ban 等反应性工具结合使用,通常几乎没有尝试暴力破解root 密码的风险。
根据风险和网络要求,在安装完成后强化系统始终是一个好习惯。一个不重要且没有用户数据的系统实际上并不需要与存储医疗或银行记录的系统相同级别的加固。
我不确定,但我假设他们想确保进行外国安装的人可以登录。因为还没有其他用户,所以第一次登录可能需要 root。
但是,在创建用户并授予他 sudo 权限后,您必须确保在 sshd 配置中禁用以 root 身份登录选项。
我还建议您将 SSH 端口更改为 22 以外的端口。虽然它不会使您的机器更安全 - 它确实会阻止所有那些浪费/烦人的请求。
考虑防止 root 登录作为额外的保护。几年前,暴力破解达到顶峰,如今,他们倾向于通过守护进程(apache、pureftpd、...)可以看到的内容来寻找漏洞。如果明天发现 SSHD 漏洞,防止 root 登录成为一个好主意。虽然 SSHD 成熟且安全,但您永远不知道。最近,漏洞利用更多地是通过内核提升特权或使用带有内核的第三方应用程序,因此阻止 root 登录不会改变任何事情。
基于 Debian 的发行版已经进行了切换,而基于 RedHat 的发行版建议这样做(如果您阅读了他们的最佳实践文档)
好吧,因为 root 是一个有效的用户并且 sshd 允许它工作。例如,在 OpenBSD(来自 OpenSSH 的同一个人)上,在安装过程中不会要求您创建用户,因此您需要使用 root 访问您的机器。
一些基于桌面的发行版迫使您创建额外的用户,但对于服务器,您实际上不需要一个。
此外,sudo 或 su 比以 root 身份登录更安全的这些论点是一个很大的神话。例如,在 Ubuntu 上,用户可以默认使用 sudo 运行任何命令,因此任何进入的攻击者也可以以 root 身份运行任何命令。从安全的角度来看非常没用。
它几乎是特定于发行版的。有些允许,有些不允许。
如果我正在管理一个发行版,我会将系统配置为在安装时尽可能地强化。忘记启用某些功能比忘记禁用某些功能要好。