假设您有一台运行不安全软件的服务器,并且您必须将其公开,那么哪些端口对于在互联网上提供该服务来说是“最安全的”。我说的“最安全”是指最不可能被端口扫描和探测漏洞。
我最初的想法是使用低于 1024 且未用于任何已知服务的端口(例如 471/timbuktu),因为它们在常规使用中永远不会被访问,并且探测它们会揭示潜在的恶意意图(违背了探测器的利益)。
请注意,互联网端服务端口将由防火墙选择 - 服务器上服务的端口将有所不同(并且值得注意的是,该服务不会以 root 身份运行)。
感谢您的阅读——感谢您的想法。
布赖恩
编辑:
当然,这是通过隐蔽性实现的安全性。这就是为什么这个问题带有隐蔽性标签!;)通过隐蔽性实现安全与我想要了解的内容无关。虽然指出这些显而易见的问题可能会对不太了解安全性的路人有所帮助,但这并不能回答问题或进一步讨论。我认为强调通过隐蔽性实现安全的担忧是因为我的提问措辞不当。
给出的所有答案都对我没有帮助。为什么 10000 以上的端口更可取?我期望相反。这些是从消费者机器发出的 TCP 连接使用的端口,因此这些端口的异常连接的信噪比在较高端口上要低得多。因此,在扫描较低端口时检测到攻击者的期望更高,攻击者使用所述高端口或扫描它们的动机更高(尽管与流行的服务端口相比,例如NMAP 的顶级端口)。但是,高端口的数量要多得多,因此问题是,扫描命中不知名高端口的概率是否低于命中未使用服务的低端口的概率。我认为这是一个经验数据问题。
互联网侧连接端口可以低于 1024,并且使用 NAT。这是相关端口。内部端口无关紧要,因此应用程序不会以 root 身份运行(管理员权限等)。即使它以 root 身份运行,也可能被 chroot/监禁。
端口敲击是个好主意。虽然这是一种创造性的隐写隐藏服务的方法(从而降低服务被发现的可能性),但不幸的是,它并没有回答这个问题。不过还是谢谢你的建议。
什么能真正有所帮助(这就是罪过问题的答案)将是一些关于使用 SYN/connect 探测哪些端口以及向蜜罐发送哪些有效载荷等的经验数据。这更为广泛,但实际上更重要的是什么会有所帮助。
编辑6:了解那些未使用的端口(即 <1024 且未分配给服务,例如端口 4、6、8、10、12、14、15、16 等)是否被扫描是很有价值的。如果您查看防火墙日志,是否会看到探测未分配服务端口的内容?
再次感谢。
编辑为清楚起见,此处的“最安全”本质上是端口扫描间隔的度量。问题中隐含的漏洞是对尚未部署补丁的服务的利用。如果您明白我的意思,如果端口的间隔大大大于部署修复漏洞的补丁的时间,则该端口“更安全”。因此,如果 ssh 守护程序中存在远程漏洞,则端口 60001 比 SSH 的端口 22 更安全,因为作为默认 ssh 端口,端口 22 将更频繁地被扫描以查找安全 shell 守护程序(和相应的漏洞),因此在潜在的远程漏洞尝试之间部署补丁的时间更少。这是本次调查的初衷,我希望这条评论对您有所帮助。
答案1
随机的高端口(大约 10000 以北)可能是最不可能被扫描的,但考虑到只需一次扫描就能找到并利用易受攻击的服务,我强烈建议你重新考虑你的策略。
答案2
好吧,除非我弄错了(我不是 *nix 神)并且假设你正在使用 *nix(根据你提到的 root,我假设你是),你仍然必须是 root 才能绑定到低于 1024 的端口,所以这是不可能的。
除此之外,通过隐蔽性实现安全并不是您的好选择,您也不应该采用这种做法。端口扫描器可以自动枚举您的所有端口,因此如果有人想找到它,他们就会找到。选择不同的端口号可能会让他们花更长的时间来完成这项工作。
如果防火墙接受来自应用服务器监听的端口以外的传入流量,则无关紧要。如果它允许传入连接并收到一个,它会很乐意将其转发到该不同端口上的服务器,特别是如果它只是一个数据包过滤防火墙。如果防火墙上有一个代理,可以让您进行应用程序级协议分析并过滤掉该级别的各种操作,那么您的情况会稍微好一些。
编辑:
很高兴澄清。针对您的评论,
摘自您的原始帖子:“值得注意的是,该服务不会以 root 身份运行”。如果您不以 root 身份运行服务,您将无法监听 <1024 端口。因此被解雇。抱歉,一开始我并不清楚您要从防火墙上的 <1024 转发到应用服务器上的 >1024,但现在我明白您的意思了。
我没有说端口扫描器会扫描所有端口,我说的是它们可以扫描所有端口。这可能吗?不,不像扫描知名端口那么可能。智能防火墙会检测到这种情况吗?是的。
我最后一段话只是想说,一旦攻击者找到一个开放端口,它就会盲目地转发流量,除非你有一个应用程序级过滤器来进行更精细的过滤,在这种情况下,蒙蔽会更透明。我并不一定鼓励使用应用程序级过滤器。我是说,一旦攻击者建立连接,端口转发就无法为你节省任何东西。
所以,归根结底,您是在征求意见(这里通常解释为“建议”),而我的想法是,您选择哪个端口其实并不重要。您在任何端口上都容易受到影响。如果这不符合您的期望,我很抱歉,我希望这有助于澄清我发帖的目的。
答案3
假设您有一台运行不安全软件的服务器,并且您必须将其公开,那么哪些端口对于在互联网上提供该服务来说是“最安全的”。我说的“最安全”是指最不可能被端口扫描和探测漏洞。
你的问题听起来通过隐蔽性实现安全。这不是一个好的运作方式。我强烈建议你考虑其他选择。
您说您必须将其公开。这可能意味着您正在向某人授予系统访问权限。您的用户将能够利用这些漏洞。
如果您必须运行某些易受攻击的东西,那么您至少应该在可以保护它的代理或应用程序网关后面运行它。
如果可能的话,您还应该考虑要求使用 VPN、端口敲击或类似技术,以便只有受信任的用户才能访问系统。
答案4
这很简单。暴露在互联网上的不安全软件只是在等待被攻击,无论你如何试图隐藏它。高端口是“最安全的”,但你需要一个像样的反应式防火墙来隐藏它以确保安全。所谓反应式,是指如果检测到任何一种攻击企图,它将丢弃来自给定源的所有数据包。这仍然并不意味着你的想法有任何意义,但它将使某人更难通过端口扫描找到你的不安全端口……除非他们在前几次尝试中就找到了正确的端口。