更改默认端口号是否真的可以提高安全性?


69

我已经看到建议说,对于私有应用程序,您应该使用不同的端口号(例如,内部网,私有数据库,没有任何外部人会使用的端口)。

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

  1. 存在端口扫描器
  2. 如果某个应用程序容易受到攻击,则无论其端口号如何,它都将继续存在。

我错过了什么还是我回答了自己的问题?


30
我要做的一件事是使用某些默认端口(例如SSH端口22)作为蜜罐。尝试连接到这些端口的任何人都会被完全阻止x一段时间。它已被证明对端口扫描有效。当然,这只是安全性工具箱中的一种工具。
Belmin Fernandez

有关通过隐藏的安全的一般性问题在这里问:security.stackexchange.com/questions/2430/...
托尼·迈尔

好吧,这可能是“脚本孩子”的障碍
Lukasz Madon

1
@BelminFernandez,“安全工具箱中的一种工具”?不,这是为了减少服务器负载(性能),并且与安全无关,仅是虚假的。从安全角度考虑,如果服务器已经很强大,则完全没有必要;如果服务器容易受到攻击,则也不会使其变得更加安全。
佩里耶

@Pacerier,同意将工作重点放在实施更可靠的安全实践上。但是,没有理由不能同时做到这两者。
Belmin Fernandez

Answers:


68

它没有针对目标攻击提供任何严肃的防御。如您所说,如果您的服务器是目标服务器,则它们将对您进行端口扫描,并找出您的门在哪里。

但是,将SSH从默认端口22移开将阻止一些非目标性和业余脚本的儿童类型的攻击。这些是相对不老练的用户,他们使用脚本一次扫描端口较大的IP地址,以专门查看端口22是否打开,并在发现端口22时对它们发起某种攻击(强力攻击,字典攻击,等等)。如果您的计算机位于要扫描的IP块中,并且未在端口22上运行SSH,则它不会响应,因此不会在计算机列表中显示此脚本小子来攻击。因此,提供了一些低级安全性,但仅针对这种机会性攻击。

举例来说,如果您有时间-在服务器上登录潜水(假设SSH在端口22上),然后撤出所有唯一的失败SSH尝试。然后将SSH移出该端口,等待一段时间,然后再次进行日志潜水。无疑,您将发现更少的攻击。

我曾经在公共Web服务器上运行Fail2Ban,当我将SSH从端口22移开时,这确实非常明显。这将机会性攻击减少了几个数量级。


3
同意 在尝试将SSH移至非标准端口时,我看到了非常相似的下降。幸运的是,禁用了密码身份验证,这确实不是问题。
EEAA 2011年

3
到目前为止最好的答案。这一切都取决于谁在攻击。我曾经帮助管理一个系统,该系统遭到了扫描小家伙的零日攻击。大概在MS-RDP中,因为防火墙没有暴露IIS。我们的主机不允许我们更改RDP端口(托管主机),因此当他们为IDS / IPS过滤建立新模式时,我们基本上不得不坐在那里。尽管对于像SSH这样的较成熟的服务器,其安全性问题似乎不如某些MS产品好得多。
Matt Molnar

9
绝对同意。安全性是关于层的,而拥有的层越多,安全性就越高。这可能是一个薄弱的层,但仍然是一个薄层。只要不仅仅依赖它,它就只能增加安全性。
Paul Kroon

1
将SSH移出端口22的另一点是,大量的SSH尝试加服务,因为Fail2Ban有时可能会占用宝贵的CPU时间。在顶级硬件上,它可能可以忽略不计,但是某些较旧的服务器可能会遇到CPU高峰。它的CPU时间,内存和带宽可用于其他用途。
artifex 2011年

我对Server 2003上的RDP进行了相同的操作-它大大减少了事件查看器中失败的身份验证条目的数量。
Moshe

43

保持日志清洁非常有帮助。

如果您看到在端口33201上运行sshd的尝试失败,则可以放心地认为此人以为目标并且您可以根据需要选择采取适当的措施。例如,与当局联系,调查此人可能是谁(通过与您的注册用户的IP或其他IP进行交叉引用等)。

如果您使用默认端口,那么就不可能知道有人在攻击您,还是只是白痴在随机扫描。


8
出色的区别
ZJR

3
+1这是更改我从未听说过的端口号的最佳论据,到目前为止,这是唯一诱使我这样做的方法
squillman 2011年

2
+1这很重要。有针对性的威胁比随机探测要危险得多(如果您有任何不错的安全性,脚本小子就可以转移到更容易的目标上)。目标攻击者可能对特定漏洞甚至密码模式了解更多。这是很好的能够识别垃圾邮件的群之外的这些攻击的端口22上
史蒂芬吨斯奈德

1
这是错误的。我已经看到至少一台服务器通过对非标准SSH端口的扫描而受到损害。没有内在的原因使攻击者也无法扫描其他端口。
Sven Slootweg

@SvenSlootweg,是的,尤其是在计算机变得越来越快,越来越便宜的情况下,扫描花费了65535倍的时间再也不再需要了。
Pacerier '16

28

不,不是。并不是的。术语是“ 默默无闻的安全性”,这不是可靠的做法。您的两点都正确。

默默无闻的安全性充其量可以阻止那些偶然的尝试,这些尝试只是为了寻找默认端口而已,因为他们知道在某个时候他们会发现有人打开了前门。但是,如果您面临任何严重的威胁,则更改防御端口最多只会减慢最初的攻击速度,但是由于您已经指出的情况,这种影响只会很小。

帮自己一个忙,并正确配置端口,但要采取适当的预防措施,使用适当的防火墙,授权,ACL等将其锁定。


17
以我自己的拙见,将(强)密码和加密投影到安全性的想法有点
困难

5
仅使用8个字符以及全部字母和数字字符(甚至不允许使用特殊字符),可能的组合数为62 ^ 8(218,340,105,584,896)。即使使用端口扫描检测器,65535也不是在同一宇宙中。注意,我不推荐弱密码。
squillman 2011年

3
同样,“这不是说非标准端口就是整个安全设备”。一点点帮助。这是一个10秒钟的调整,如果没有其他问题,它将阻止您的服务器出现在寻找SSH的人面前。
ceejayoz

8
嗯 在我的书中,跟踪非标准端口是不值得的。我会不同意任何人的看法……除了改变端口之外,增加其他对策当然是其中的一部分,我宁愿把事情留给那些难题。
squillman 2011年

6
从我所看到的来看,非标准端口已经变得相当标准。ssh使用2222,HTTP使用1080、8080、81、82、8088。否则,它变得太模糊,你想知道什么样的服务是在端口7201,为什么你不能连接上7102到ssh
BillThor

13

这只是一个微不足道的水平,但是在黑客入侵的道路上并不是一个明显的速度颠簸。这是一个难以长期支持的配置,因为必须告知与该特定服务有关的所有信息有关不同的端口。

曾几何时,为了避免网络蠕虫是一个好主意,因为这些蠕虫往往只扫描一个端口。但是,蠕虫迅速繁殖的时代已经过去。


2
+1解决更困难的配置和支持问题。让您浪费时间在固定门上(而不是去搜索房屋的位置)。
Macke

12

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

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

想象以下简化方案。破解程序可扫描100台主机。这些主机中有九十九个在以下标准端口上提供服务:

Port    Service
22      SSH
80      HTTP
443     HTTPS

但是随后有一个主机在人群中脱颖而出,因为系统所有者试图混淆他们的服务。

Port    Service
2222    SSH
10080   HTTP
10443   HTTPS

现在,这对于破解者可能很有趣,因为该扫描显示出两件事:

  1. 主机的所有者正在尝试隐藏其系统上的端口号。所有者可能认为系统上有有价值的东西。这可能不是常规系统。
  2. 他们选择了错误的方法来保护其系统。管理员认为端口混淆会犯错,这表明他们可能是经验不足的管理员。也许他们使用端口混淆来代替适当的防火墙或适当的IDS。他们可能还会犯其他安全错误,并且可能容易遭受其他安全攻击。现在让我们进一步探讨吧?

如果您是黑客,那么您会选择查看在标准端口上运行标准服务的99台主机之一,还是使用端口混淆的一台主机?


14
除非经验告诉我,否则我将查看99位主持人。如果您问我,那些正在四处移动端口的人可能更容易打补丁和保护自己。
ceejayoz

4
我将看一下脱颖而出的1台主机,因为有些PFY偶然地认为“如果更改端口号,我就立于不败之地!” 但已将root密码设置为“ password”。
安德鲁

3
@Ceejayoz,完全同意。我在2222上运行SSH,没有安全性,但是可以减少脚本小子的使用。我认为他们也更可能不理我,不愿更改端口,也可能采取了其他措施。显然,这并不是所有的默认配置...
Chris S

1
我了解并非所有人都同意我的观点。但是以我的经验,有很多系统所有者会使用端口混淆功能,但是他们会犯一些错误,例如在暴露了一些关键的安全漏洞后不更新OpenSSH,或者会使用共享大学系统中未加密的SSH密钥,等等。这些系统是多汁的目标。
Stefan Lasiewski 2011年

3
通过扩展:转移到非标准端口,您更有可能不鼓励脚本小子,但也更有可能引起有经验的黑客的兴趣。哪个提出了问题:您更害怕针对哪个目标?
tardate 2011年

9

我将至少部分地与大趋势背道而驰。

就其本身而言,更改为其他端口可能会在搜索时使您花费几秒钟的时间,因此,从根本上讲,您不会获得任何收益。但是,如果将非标准端口与反端口扫描措施结合使用,则可以真正提高安全性。

这是适用于我的系统的情况:非公共服务在非标准端口上运行。在指定的时间内,尝试从单个源地址到两个以上端口的连接(无论成功与否)都将导致来自该源的所有流量被丢弃。

要击败该系统,将需要运气(在被阻塞之前先击中正确的端口)或需要触发其他措施的分布式扫描,或者需要很长的时间才能注意到并采取措施。


结合Andreas Bonini关于有针对性的攻击的观点,这是使用备用端口的有力论据。
JivanAmara 2014年

5

我认为移动应用程序运行的端口根本不会提高安全性-仅仅是因为同一应用程序仅在不同的端口上运行(具有相同的优点和缺点)。如果您的应用程序存在漏洞,则将其侦听的端口移动到另一个端口将无法解决该漏洞。更糟糕的是,它会积极地鼓励您不要解决该弱点,因为现在自动扫描并不会不断对其施加不利影响。它隐藏了真正的问题,这是应该实际解决的问题。

一些例子:

  • “它会清理日志”-然后您在处理日志方面遇到问题。
  • “它减少了连接开销”-开销很小(因为大多数扫描是这样),或者您需要在上游完成某种过滤/拒绝服务缓解
  • “它减少了应用程序的风险”-如果您的应用程序无法承受自动扫描和利用,则您的应用程序存在严重的安全缺陷,需要解决(例如,对其进行修补!)。

真正的问题是管理上的:人们期望SSH达到22,MSSQL达到1433,依此类推。解决这些问题又是一层复杂性和所需的文档。坐在一个网络上并且不得不使用nmap只是想弄清楚事情已经转移到哪里很烦人。安全性充其量只是短暂的,缺点也不是很小的。不要这样 解决实际问题。


2

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

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

备注:我并不是说您应该更改服务器端口。我只是在描述更改端口号的合理原因(IMO)。

如果这样做,我认为您需要向所有其他管理员或用户明确说明,这不应被视为安全功能,并且所使用的端口号甚至都不是秘密,并且应将其描述为安全功能。带来真正安全性的行为不被视为可以接受的行为。


日志文件可以使用适当的过滤器轻松整理。如果您在谈论由于日志减少而导致的服务器性能,那么我们不再在谈论安全性。性能完全是一个完全不同的主题。
Pacerier '16

当由于磁盘使用过多而导致计算机无法使用时,不是这样。
curiousguy

是的,这是性能问题。性能当然也很重要,但是这个特定线程仅专门讨论安全性。(出于该线程的目的,请想象您是Google大小的公司,而Google 实际上确实希望这些数据用于分析和/或销售目的。)
Pacerier,2016年

1

我可以看到一种假设的情况,即在备用端口上运行sshd可能会带来安全方面的好处。在这种情况下,您正在运行的sshd软件中发现了一个被利用的远程漏洞。在这种情况下,在备用端口上运行sshd可能会给您额外的时间,而您不必成为随机的随身目标。

我本人确实在私人计算机上的备用端口上运行sshd,但这主要是为了减少/var/log/auth.log中的混乱情况。在多用户系统上,我真的不认为上面介绍的假设的安全性小好处是没有在标准部件上发现sshd引起额外麻烦的充分原因。


该方案只会是有效的,如果所有的管理员(或多个)绝对不会采取这种“额外时间”任何余地以往任何时候都去吃午饭
Pacerier

1

它稍微增加了安全性。因为攻击者发现开放端口后,现在必须弄清端口上正在运行的内容。无法访问您的配置文件(尚未:-)),他不知道端口12345是否正在运行http,sshd或其他一千种常见服务,因此它们需要做一些额外的工作来弄清楚正在运行的内容,然后才能认真对待攻击它。

同样,正如其他发布者指出的那样,尝试登录端口22可能是笨拙的脚本小子,僵尸木马甚至是错误输入IP地址的真实用户。几乎可以肯定,尝试登录端口12345可能是真实用户,还是严重的攻击者。

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

在特殊情况下,使用不同的端口号肯定会使您的系统更安全。如果您的网络运行的是诸如Web服务器之类的公共服务,而且还运行内部仅供内部使用的Web服务器,则可以通过在其他端口号上运行并从该端口阻止任何外部访问来绝对阻止任何外部访问。


必须权衡〜0.1%的安全性增长与相关的安全性下降之间的权衡,这可能会导致安全性总净损失,具体取决于用例和上下文。
佩里耶

0

不是靠自己。但是,对于特定的应用程序(例如SQL Server)不使用默认端口,基本上会迫使攻击者扫描您的端口。然后,您的防火墙或其他监视指标可以检测到此行为,并阻止攻击者的IP。同样,当他们使用的简单工具或命令脚本在您的计算机上找不到SQL Server实例时(因为该工具仅检查默认端口),平均“脚本小子”更有可能被吓倒。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.