更改默认端口号实际上增加了安全性吗?

我看到了一些build议,告诉你应该为私有应用程序使用不同的端口号(例如内联网,私有数据库,任何没有外人使用的端口号)。

我不完全相信,可以提高安全性,因为

  1. 端口扫描仪存在
  2. 如果应用程序易受攻击,则不pipe其端口号如何。

我错过了什么,或者我回答了我自己的问题?

它没有提供任何针对目标攻击的严重防御。 如果你的服务器正在被攻击,那么就像你说的那样,他们将会扫描你并发现你的门在哪里。

但是,将SSH从默认端口22移开将阻止一些非目标和业余脚本kiddietypes的攻击。 这些都是相对不成熟的用户,他们一次性使用脚本来扫描大块的IP地址,以查看端口22是否打开,当他们发现端口时,会发起某种攻击(蛮力,字典攻击,等等)。 如果您的计算机正在被扫描的IP块中,并且它不在端口22上运行SSH,那么它将不会响应,因此不会显示在此脚本kiddie要攻击的计算机列表中。 人类,有一些低级别的安全提供,但只有这种types的机会主义攻击。

举例来说,如果你的服务器上有时间日志跳转(假设SSH位于端口22上),并提取所有可能的唯一失败的SSH尝试。 然后将SSH从该端口移出,等待一段时间,然后再次login。 你无疑会发现更less的攻击。

我曾经在一个公共的networking服务器上运行Fail2Ban,当我将SSH从22端口移出时,确实非常明显。它将机会性攻击的数量级降低了一个数量级。

保持原木清洁是非常有帮助的。

如果您发现sshd在端口33201上运行失败,您可以安全地假定该用户是针对您的 ,如果您愿意,您可以select采取适当的措施。如与当局联系,调查此人是谁(通过交叉引用您的注册用户的IP或其他)等等。

如果你使用默认的端口,那么就不可能知道是否有人攻击你,或者只是随机的白痴做随机扫描。

不,不。 不是真的。 这个术语是默默无闻的安全 ,这不是一个可靠的做法。 你的观点都是正确的。

默默无闻的安全措施最终将阻止那些随便找寻默认港口的企图,因为他们知道在某些时候他们会find一个人离开前门。 然而,如果有任何严重的威胁要面对改变,那么最初的攻击最多只能放慢速度,但由于你已经指出了这一点,所以只能这么做。

为自己的忙,并保持您的端口configuration正确,但采取适当的防范措施locking下来适当的防火墙,授权,ACL的,等等。

这是一个微不足道的小窍门,但不是一个显着的磕磕绊绊的速度。 这是一个很难支持长期的configuration,因为与特定服务对话的所有内容都必须被告知不同的端口。

曾几何时,为了避免networking蠕虫是一个好主意,因为那些人​​往往只扫描一个端口。 然而,迅速增长的蠕虫的时代已经过去了。

正如其他人所指出的那样,更改端口号码并不能提供很高的安全性。

我想补充一点,更改端口号实际上可能对您的安全性不利。

想象下面的简化scheme。 一个黑客扫描100台主机。 其中99个主机在这些标准端口上提供服务:

 Port Service 22 SSH 80 HTTP 443 HTTPS 

但是有一位主持人从人群中脱颖而出,因为系统所有者试图混淆他们的服务。

 Port Service 2222 SSH 10080 HTTP 10443 HTTPS 

现在,这可能是一个cookies有趣的,因为扫描提出了两件事情:

  1. 主机的所有者正试图隐藏系统上的端口号。 也许业主认为在系统上有一些有价值的东西。 这可能不是一个普通的系统。
  2. 他们select了错误的方法来保护他们的系统。 pipe理员认为端口混淆是错误的,表明他们可能是一个没有经验的pipe理员。 也许他们使用端口混淆来代替适当的防火墙或正确的IDS。 他们也可能犯了其他安全错误,并且可能容易受到额外的安全攻击。 我们现在进一步探讨一下吧?

如果你是一个黑客,你会select在标准端口上运行标准服务的99个主机中的一个,或者这个使用端口混淆的主机?

我将至less部分地违背大趋势。

就其本身而言 ,更换到不同的端口可能会在您search时获得几秒钟的时间,从而无法获得实质性的结果。 但是,如果将非标准端口的使用与反扫描端口措施结合使用,则可以提高安全性。

以下是适用于我的系统的情况:非公共服务在非标准端口上运行。 任何连接尝试从一个源地址超过两个端口,成功或不成功,在指定的时间内导致来自该源的所有stream量被丢弃。

击败这个系统需要运气(在被阻挡之前击中正确的端口)或分布式扫描(触发其他措施),或者需要很长时间,这也将被注意到并且被执行。

在我看来,移动应用程序所运行的端口并不会增加安全性 – 仅仅是因为相同的应用程序正在运行(具有相同的优缺点),只是在不同的端口上运行。 如果您的应用程序有一个弱点,那么将它监听到的端口移到不同的端口上并不能解决这个弱点。 更糟糕的是,它积极鼓励你不要解决这个弱点,因为现在它不会被自动扫描不断地打击。 它隐藏了真正应该解决的问题。

一些例子:

  • “它清理日志” – 然后你有一个问题,你如何处理你的日志。
  • “它减less了连接开销” – 开销是微不足道的(因为大部分扫描是),或者你需要某种过滤/拒绝服务缓解
  • “它减less了应用程序的暴露” – 如果你的应用程序不能经受自动化扫描和利用,那么你的应用程序有严重的安全缺陷需要解决(即保持打补丁!)。

真正的问题是pipe理:人们期望SSH为22,MSSQL为1433等等。 移动这些是复杂性和所需文档的又一层。 坐在一个networking上,而且不得不使用nmap来判断事物是否被移动,这是非常烦人的。 对安全的补充是短暂的,最坏的情况也不是微不足道的。 不要这样做。 解决真正的问题。

你是正确的,它不会带来太多的安全性(因为TCP服务器端口范围只有16位的熵),但你可以这样做是由于其他两个原因:

  • 正如其他人已经说过的那样: 尝试多次login的入侵者可能会混淆日志文件 (即使来自单个IP的字典攻击可能被fail2ban阻止);
  • SSH需要公钥encryption来交换密钥来创build一个安全的隧道(这是一个昂贵的操作,在正常情况下不需要经常进行); 重复的SSH连接可能会浪费CPU能力

备注:我不是说你应该改变服务器端口。 我只是在描述合理的理由(IMO)来更改端口号。

如果你这样做的话,我认为你需要向所有其他pipe理员或用户说明这不应该被认为是一个安全function,并且使用的端口号甚至不是一个秘密,并且将其描述为一个安全特性那带来真正的安全并不算是可以接受的行为。

我可以看到一个假设的情况,那就是在备用端口上运行sshd会有潜在的安全性。 那就是在你正在运行的sshd软件中发现一个被普遍利用的远程漏洞的情况。 在这种情况下,在另一个端口上运行sshd可能会给您带来额外的时间,您不必成为随机的驱动器目标。

我自己我在我的私人机器上的另一个端口上运行sshd,但这主要是为了方便在/var/log/auth.log中保持混乱。 在一个多用户系统中,我真的不认为上面提到的小的假设的安全好处是足够的理由,因为在标准部分找不到sshd造成的额外麻烦。

它稍微增加了安全性。 在这种情况下,攻击者发现开放端口现在必须弄清楚在端口上运行什么。 没有访问你的configuration文件(但是:-))他不知道端口12345是运行http,sshd还是其他常见服务之一,所以他们需要做额外的工作来弄清楚什么是可以认真运行的攻击它。

也正如其他海报指出,而尝试login到22号港口,可能是无知的脚本小子,僵尸木马,甚至真正的用户错误的IP地址。 尝试login端口12345几乎肯定是一个真正的用户或严重的攻击者。

另一个策略是拥有一些“亲子陷阱”端口。 由于没有真正的用户会知道这些端口号,那么任何连接尝试必须被视为恶意,您可以自动阻止/报告有问题的IP地址。

有一个特殊的情况,使用不同的端口号码肯定会使你的系统更加安全。 如果您的networking正在运行公共服务(如Web服务器),但也运行仅限内部使用的Web服务器,则可以通过在不同的端口号上运行并阻止来自此端口的任何外部访问来绝对阻止任何外部访问。

不是本身。 但是,不使用特定应用程序的默认端口(例如SQL Server)基本上会强制攻击者扫描您的端口; 这个行为可以被防火墙或其他监控指标检测到,攻击者的IP被阻塞。 另外,当他们使用的简单工具或命令脚本没有在您的机器上findSQL服务器实例时(因为该工具只检查默认端口),平均“script kiddie”将更有可能被阻止。