为什么 SSH 带有如此不安全的默认配置?
列出我认为不安全的默认值:
- SSH 上启用 root 登录
- 允许 SSH 协议版本 1(易受 MIM 攻击)
也没有内置的机制来处理暴力攻击
我可以理解互操作性和兼容性对于新系统很重要,但是将具有这些默认设置的服务器放在网络上是一个主要的安全问题。如果有人不知道这些配置选项,他们可能会启用一个非常容易受到暴力破解的服务器,并且在足够长的时间内不知道问题,以至于有人获得访问权限。
在 SSH 上暴力破解 root 的想法已经存在很长时间了,并且在任何服务器上都存在来自机器人等的 root 登录尝试的“背景噪音”。为 SSH 提供一些默认值是有意义的,这将有助于减轻这种威胁。
这些不安全的默认值的原因是什么?
答案1
在许多系统中,您进入系统的唯一入口点是通过 ssh。在尚未创建用户帐户的全新安装中,您可能拥有的唯一帐户是 root。
那么,即使您有多个帐户,如果您使用外部身份验证并且您的身份验证系统出现故障怎么办?你需要能够回到盒子里并修复它。
您可以设置PermitRootLogin
为without-password
仅 ssh 密钥有效,但要执行此操作,您必须使用密码至少登录一次才能添加 ssh 密钥。
除了最初可能需要它的原因之外,我认为包维护者有责任使默认值相当安全,但仍然有效。使其尽可能安全的方法包括禁用 root、使其侦听 22 以外的端口、禁用密码身份验证等。让 root ssh 启用密码本身并不是一个安全漏洞。如果 root 的密码较弱,这只是一个安全漏洞。
我将其比作防火墙策略。大多数发行版在出厂时没有启用任何 iptables 规则或 sysctl 自定义。将服务器放在互联网上而不进行任何定制是一个很大的风险。服务器所有者有责任实施适合服务器用途的安全策略。
答案2
您的发行版最有可能是导致这些不安全的默认值的原因。不同的发行版提供不同的默认配置。
另一方面,在没有事先配置的情况下启动网络服务可能是一个坏主意。管理员往往有自己的特殊需求,如果不发布自己的脚本,至少要在安装后查看一下配置。
暴力攻击:还有其他方法可以检测此类攻击。例如 ipsets 和防火墙,甚至入侵检测系统。 ssh 不需要发明自己的解决方案。
答案3
SSH 没有不安全的默认设置(至少没有您提到的那些)。
自 OpenBSD 4.7(2010 年发布)以来,协议 1 已默认禁用。即使协议 1 仍然默认启用,它也只会在客户端请求时使用,并且客户端(就像我认为所有支持协议版本 2 的客户端)使用协议版本 2,除非服务器不支持它或用户明确请求版本 1(自 OpenBSD 4.7 起,OpenSSH 客户端不会明确回退到协议版本 1)。
允许通过 SSH 进行 root 登录并不是一个安全问题。如果它允许攻击路径,则意味着服务器管理员做得不好。不要选择可猜测的 root 密码!禁用根登录是一种强化——它是深度安全。它通过添加一层保护来防止用户犯错误,从而提高安全性。这是一件好事,但不是必需的。
如果您不选择愚蠢的可猜测的密码,那么不断的登录尝试造成的唯一威胁就是填充您的日志分区。
限制登录尝试率是一把双刃剑。一方面,它降低了攻击者猜测过于简单的密码的风险,并减少了他们消耗的带宽。另一方面,如果您碰巧需要从与攻击者相同的网络邻居登录您的服务器,并且您设置了严格的限制,那么您自己就会受到 DoS 攻击。
1不仅仅是根顺便说一句,登录尝试。还有常见的名字和常见的系统帐户名称,例如admin
、webmaster
等。