我应该更改 linux 服务器上的默认 SSH 端口吗?

信息安全 验证 攻击 linux 攻击预防 SSH
2021-09-06 01:55:15

更改 SSH 端口有什么好处吗,我见过有人这样做,但我似乎找不到原因。

如果您有一个强密码和/或证书,它对任何事情都有用吗?

编辑:

我还应该提到我正在使用 iptables 规则来限制暴力破解攻击,每个 IP 地址每分钟只允许 5 次登录尝试。

4个回答

互联网是一个狂野而可怕的地方,充满了不满者,他们的动机从好奇一直到犯罪活动。这些讨厌的人不断地扫描运行他们希望利用的服务的计算机;通常是更常见的服务,如 SSH、HTTP、FTP 等。扫描通常属于以下两类之一:

  1. Recon 扫描以查看打开这些服务的 IP 地址。
  2. 针对已发现运行特定服务的 IP 地址进行漏洞利用扫描。

考虑到 Internet 有多大,通常不可能通过查看每个 IP 地址的每个端口来找到到处监听的内容。这是更改默认端口的建议的关键。如果这些心怀不满的人想要找到 SSH 服务器,他们将开始在端口 22 上探测每个 IP 地址(他们可能还会添加一些常见的替代地址,例如 222 或 2222)。然后,一旦他们打开了端口 22 的 IP 地址列表,他们将启动密码暴力破解来猜测用户名/密码或启动他们选择的漏洞利用工具包,并开始测试目标系统上的已知(至少对他们而言)漏洞。

这意味着,如果您将 SSH 端口更改为 34887,那么该扫描将通过您,可能导致您不会成为后续入侵的目标。

看起来很红是吧?不过也有一些缺点。

  1. 客户端支持:连接到您服务器的每个人都需要知道并使用更改后的端口。如果您处于管理繁重的环境中,则可以将此配置下推到客户端,或者如果您的用户数量足够少,则应该易于通信。
  2. 文档例外:大多数网络设备,例如防火墙和 IDS,都是预先设置的,以便在公共端口上运行公共服务。需要检查并可能修改此设备上与此服务相关的任何防火墙规则。同样,将调整 IDS 签名,以便仅在端口 22 上执行 SSH 检查。每次更新签名时,您都需要使用新端口修改每个签名。(作为数据点,目前有 136 个涉及 SSH 的 VRT 和 ET snort 签名)。
  3. 系统保护:现代 Linux 通常带有内核层 MAC 和/或 RBAC 系统(例如基于 RedHat 的 SELinux 或基于 Debian 的 AppAmor),它们的设计目的是只允许应用程序完全按照它们的意图去做。这可能包括访问/etc/hosts文件、写入特定文件或在网络上发送数据包。根据该系统的配置方式,默认情况下,它可能会禁止sshd绑定到非标准端口。您需要维护允许它的本地策略。
  4. 其他方监控:如果您有外部信息安全部门或外包监控,则需要让他们了解更改。在执行安全评估或分析日志以查找安全威胁时,如果我看到 SSH 服务器在非标准端口上运行(或非 UNIX/Linux 上的 SSH 服务器),我会将其视为潜在的后门并调用事件处理程序的受损系统部分。有时它会在打电话给管理员并被告知它是合法的后 5 分钟内解决,此时我会更新文档,其他时候它确实是得到照顾的坏事。无论如何,这可能会导致您停机,或者至少,当您接听电话并听到“您好,我是信息安全办公室的鲍勃”时,您会感到紧张不安。

在更改端口之前,您需要考虑所有这些,以便您知道自己做出了最佳决定。其中一些缺点可能不适用,但有些肯定会。还要考虑您要保护自己免受什么侵害。通常情况下,将防火墙配置为只允许从特定主机访问 22 个主机,而不是整个 Internet 会更容易。

是的,不是通过提高安全性,而是可以减少服务器上失败的登录尝试次数。我总是更改我的默认 ssh 以减少我从 ossec 收到的警告。此外,如果您使用一个真正随机的端口并且有人仍然试图访问您的计算机,那么它更有可能是有针对性的攻击而不是随机扫描程序。

正如其他人所说,将 SSH 放在 22 以外的端口上将更不可能被随机扫描命中。如果攻击者试图获取您的服务器,而不是任何服务器,您将成为目标。

我有一个ssh绑定到随机高端口的服务器。我在端口 22 上有一个 ssh 蜜罐,它会以“拒绝访问”消息回复任何登录尝试。

我认为这不是默默无闻的防御,而是深度防御:要攻击我的服务器,攻击者必须先找到端口。如果我有几个假的蜜罐(很多端口重定向到同一个蜜罐),攻击者会命中很多假的,并且无法知道它是否命中了真正的 ssh。

不过,这只是防守。我也有portsentry活动,所以如果有人尝试端口扫描,他们将被阻止一个小时。如果他们在正确的 ssh 上暴力破解密码,他们将在一个小时内收到“拒绝访问”。如果他们成功猜出密码,他们将看到一个 PAM 提示,要求输入 Google Auth 令牌。

更改端口的成本非常低,我认为有利有弊。

由于大多数人都在谈论缺点(这是真实的),我想在这里分享几个优点:

  • 你真的想避免自动攻击。除非您是知名用户,否则绝大多数攻击都不会针对您,而是会尝试默认端口的自动尽力而为攻击。避免它们在几个方面有帮助:

    • 您减少了攻击面(大多数自动攻击)
    • 由于 sshd 或它使用的加密库中的错误,您减少了曝光
    • 一些像heartbleed这样的 bug允许通过连接到一个开放端口来利用您的服务器,即使不知道任何密码或密钥也是如此。通过使用非标准端口,您可以避免这种情况。
    • 一些漏洞(如弱私钥)允许在您应用补丁之前自动攻击 0wn 您的服务器。再次使用非标准端口可以避免第一波攻击者,并为您提供更多时间进行修补。
    • 您可以减少日志中的混乱情况,从而在查看日志时为您节省大量管理时间,让您可以将精力集中在更有问题的针对性攻击上
    • 与您在更新中提到的 kludge 相比,它以更少的工作提供了更好的保护(在 5 次错误登录后阻止 IP - 这将允许一些攻击,尤其是在 IP 不断变化的情况下;尤其是在 IPv6 世界中,每个攻击者将有数十亿个备用;并且 kludge 会产生误报,将合法用户拒之门外并产生更多的支持电话)
    • 有时,即使是好的密码也会被泄露(可能是通过其他地方的一些其他错误,或者粗心的用户在键盘记录的机器上输入密码)并存储在字典中,以便以后进行攻击。同样,随机端口将避免绝大多数此类自动攻击(大多数键盘记录器将只保存用户名/密码对,而不是在配置中寻找端口)。
  • 无论攻击者没有预料到什么,它总是要么完全关闭他,为他创造更多的工作,要么让你成为一个不那么有趣的目标。它还增加了您检测和防御攻击的时间。

  • 在端口 >1024 上运行不需要 sshd 以 root 身份运行,这允许运行它只是一个需要它的用户,避免了一整类错误(即使某些 sshd 实现特别注意以降低的权限运行也是如此不需要时)。