在 Linux 中更改 SSH/SFTP 端口有哪些优点/缺点?

信息安全 网络 SSH
2021-09-04 14:37:16

我已经为我们的网站设置了一个远程 CentOS 虚拟机(通过主机)。我阅读了一个在线建议,将默认 SFTP 端口从 22 更改为更高的端口,例如 22000。我知道这在很大程度上是通过默默无闻的安全性,但这是唯一的优势吗?否则,最好将其保留为端口 22,设置 DOS 缓解,并使用强密码。

附加背景:我必须在服务器上激活 Root 帐户才能管理多个帐户和域。SSH 访问只允许通过特定的 IP/Mac 组合。即使用户模仿特定的 IP/Mac,他们也只有 5 次获得密码的机会,然后才会以不断升级的惩罚来阻止他们:5 分钟、60 分钟、24 小时和永久阻止。最后,我为 Root 帐户启用了多因素身份验证。

相关职位:
约书亚·泰森。(2012)。为什么将 SSH 放在 22 以外的另一个端口上是个坏主意

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

https://www.reddit.com/r/synology/comments/31ov2g/root_ssh_from_china/

https://serverfault.com/questions/74176/what-port-does-sftp-use

安全的 FTP 访问;最佳实践

在办公室外运行 Linux Web 服务器时应采取哪些安全措施?

封闭港口安全

https://serverfault.com/questions/189282/why-change-default-ssh-port

https://unix.stackexchange.com/questions/2942/why-change-default-ssh-port

4个回答

正如您所推测的,将 SSH 端口从 22 更改为另一个端口基本上是“默默无闻的安全性”,并且只带来了最小的优势。

主要优势是较少的僵尸网络/自动流量将进入端口 22,以运行 SSH 攻击。但是,对于真正的攻击者或由更精明的程序员运行的僵尸网络来说,这相当微不足道。对所有端口运行端口扫描。端口 20,000(或任何数字)将通过 SSH 握手明确响应,因此他们将尝试对该端口进行攻击。端安全优势。

通常,这些机器人试图做的是:

  • 通过使用常用密码和/或字典/和/或随机字符来暴力破解“root”或“admin”密码。
  • 尝试使用 SSH 漏洞或利用来获取 shell,或使用 nginx/nginx 等普通用户来获取平台 shell 进入系统。

当然,在多次失败尝试后使用 fail2ban 或类似软件将 IP 列入黑名单将降低暴力攻击成功的机会。您还可以限制您的 SSH 守护进程仅使用基于 SSH 密钥的身份验证并禁止密码身份验证;从而使蛮力攻击不可行。

要回复您提供的一些进一步信息,请注意最好从您的 root 帐户禁用远程 SSH 登录。简单地启用多因素身份验证是次优的,您应该让所有 sudoers 用户都必须使用多因素登录;然后需要使用 sudo 从那里发出命令。

因此,简而言之,您可能会在奇数端口上收到较少的扫描活动。但是,它不能替代使用保护 SSH 守护程序的最佳实践,例如 fail2ban、强化 sshd 配置(例如不允许 SSH1 等)、双重身份验证、限制 SSH 用户/组、不直接以 root 身份登录、正确配置的 sudoers ,以及定期的安全补丁/更新。

编辑

在查看之前已解决此问题的页面后,我肯定会推荐阅读那里的绿色检查答案。它很好地概述了更改端口的大部分积极和消极因素,并建议这样做是否是一个好主意取决于具体情况。对于我最常拥有的客户类型——在大多数情况下具有小型网络的小型(ish)企业——我通常会建议或实施将 SSH 端口从至少一些机器上的默认值移开(面向网络,面向 DMZ 等)。但其他 IT 环境中的其他人甚至可能不认为这是一个严肃的选择。万岁拉不同

不过,我会说,我喜欢@Steffen Ullrich,我对“但它是默默无闻的安全性!!它一定很糟糕!”感到恼火。观点。是的,它是默默无闻的安全。所以呢?如果您真的在使用纵深防御策略,Security by Obscurity 可以起到积极的作用,这是增加已经强大防御强度的另一层。您是否应该使用属于 Security by Obscurity 的措施作为您唯一的防线,甚至是主要防线?除非有一些极端的假设情况,当然不是。(例如,移动您的 SSH 端口显然根本无法替代对任何设法连接到它的人的强身份验证。)但是能够欺骗、减慢、挫败和迷惑攻击者是一件好事在 InfoSec 中也是如此。就像它在战争、扑克、体育或……嗯,几乎在人类经验中发生的任何对抗情况下都是一件好事。

最后,您知道谁使用 Security by Obscurity 吗?每个人,每天。每个不向 Internet 发布每个设备、每个物理连接、每个操作系统、每个应用程序、每个授权用户、每个管理员、每个安全软件和所有其他安全性的全面、准确列表的安全专家或管理员-他们工作的每个网络的相关细节都依赖于 Security by Obscurity 在某种程度上减缓和阻碍潜在的攻击者。仅仅依靠 Security by Obscurity是非常愚蠢的。

无论如何:),原始答案从这里开始:


更改 SSH 端口是我尝试尽可能遵循的一种做法,并建议客户端在合理可能的情况下遵循(即,只要可以在不破坏访问场景的情况下完成复杂的、复杂的管理设置,这些设置基于 SSH 的假设而演变)在默认端口上)。为什么?好:

  • 正如其他人所说,这意味着攻击者对大量 IP 地址运行典型的、快速且肮脏的端口扫描,而攻击者只是在他或她能找到的任何机器上寻找潜在易受攻击的公共服务,通常会错过检测您的 SSH 服务. 一个专门针对您的机器并试图找到您的 SSH 服务的坚定攻击者难道不能检查每个端口吗?当然。但对于大多数坏人来说,这样做只有您首先已经找到并选择了您的目标机器。换句话说,一个对许多 IP 地址进行广泛扫描以发现有趣目标的坏人,无论是来自网络外围还是内部,(通常)无法(或不想)检查数百或数千,更不用说每个 IP 地址有数万个端口。这样做根本不切实际——通常,对于大多数攻击者来说——跨越多个潜在目标。因此,更改 SSH 端口有时会显着降低计算机对非目标攻击的可见性。

(虽然,如果你确实在正确地进行基于 IP 和/或 MAC 的过滤,那么非目标攻击无论如何都应该失败。但为了深度防御,它仍然是一个理想的特性。)

  • 但是好吧,有针对性的攻击呢?愿意扫描所有 65000+ 端口以获取您的侦听 SSH 服务的攻击者呢?好吧,显然这样的攻击者找到他或她正在寻找的东西,即您的 SSH 端口。但是,如果您有一个 IDS/IDPS 并熟练配置,在这里更改端口仍然会有所帮助。为什么?好吧,简单地在一台机器上扫描数以万计的端口是一个比扫描相对少数的“更高调”的事件。原因很明显:设备在数以万计的端口上接收扫描的情况非常非常罕见,这不是协同攻击的迹象。即使扫描来自多个不同的 ip,跨越数小时或数天,当攻击者需要检查机器上成千上万的端口时,也没有办法真正隐藏它,尤其是那些很少被常见的端口服务。

当然,如果您的攻击者更有耐心,并且可以通过内部网络访问您的机器,他/她也许能够嗅探 SSH 流量并查看它指向的端口。但这给了你的对手一个不耐烦和搞砸的机会……

归根结底,更改端口绝对应该只是攻击者必须处理的额外的补充保护因素。不能替代正确的 SSH 基础知识(强大的身份验证因素、正确配置 auth-try 限制/锁定等),但它仍然是一个有用的措施。

我知道这在很大程度上是通过默默无闻的安全性,但这是唯一的优势吗?

移动到不同的端口实际上意味着攻击者现在对如何最好地攻击您的系统的信息更少,并且必须首先弄清楚在哪里寻找 SSH,然后再尝试破解它。因此,这种隐蔽性的安全性增加了攻击者的成本,并且可能已经阻止了一些懒惰的攻击者,因为有更便宜的目标。因此,默默无闻可以成为纵深防御的一部分。

您还可以在端口 22 上设置一些 SSH 服务器,使用不同的配置并且根本没有密码验证。这将使攻击者忙于尝试暴力破解密码,而您可以愉快地登录真正的 SSH 服务器。

主要优点是您将减少对 VM 进行 SSH 蛮力尝试的次数。但是更改默认端口不会使服务更安全。

如果有人想发现是否有端口服务于 SSH/SFTP 服务,nmap 会很容易做到

但是正如您所说,通过默默无闻的安全性是保护您的系统的一种不好的方法。

主要缺点在于使用。如果更改默认 SSH 端口,则每次尝试建立与 SSH/SFTP 的连接时都必须指定自定义端口(尚未在配置文件中定义)

ssh mysuperhost.com -p 22222

关于已经提出的其他解决方案:

  • 允许 Root 登录:不允许直接在 SSH 服务器上进行 root 登录PermitRootLogin no然后,您可以使用 su/sudo 命令进行权限提升,但首先使用标准用户通过 ssh 登录。
  • 超越强密码使用:强制使用SSH 密钥进行身份验证,这比密码使用安全得多(在它们中很复杂)
  • 端口敲门:您可以建立一个端口序列,您必须在您的 SSH/SFTP 默认端口接受新连接之前敲门。很高兴知道但使用起来很麻烦。