隐身端口与封闭端口

隐身端口与封闭端口

我正在阅读一个有关隐身端口和封闭端口之间区别的网站。

http://www.grc.com/faq-shieldsup.htm

如果端口关闭,则端口会回应数据包。但是隐形端口则根本不会做出响应。

建议隐藏所有不使用的端口吗?如果建议,该怎么做?

答案1

取决于您要做什么。基本上,如果您不回复一个表示端口已关闭的数据包,合法用户的生活就会变得更加困难,但也可能让任何试图闯入盒子的攻击者的生活变得困难。它不会阻止某人扫描盒子以找出哪些端口是开放的,但可能会减慢他们的速度。而且它可能使别人一开始就发现您的系统的可能性降低。

它是一个通过知名端口向全世界提供服务的系统吗?(比如 Web 服务器)那么尝试“隐藏”你的端口不会有什么用处。

这是一个不需要任何人知道的系统吗?去吧。

你没有说明你运行的是哪种操作系统等,因此答案各不相同。在 Linux 上使用 iptables 时,你基本上执行的是“-j DROP”而不是“-j REJECT”。

答案2

某些操作系统会用数据包来响应连接请求(对于 TCP 而言)或未经请求的数据包(对于 UDP 而言),表明该端口上没有任何设备在监听。某些操作系统可以配置为丢弃传入到端口的数据包,这些端口上没有任何设备在监听,因此不会有任何响应。

对我来说,这两种行为并无优劣之分。我的看法很简单:不要运行不必要的程序来监听传入的连接/数据包。您必须运行的程序应尽可能安全地配置。

在我看来,担心您的机器响应端口扫描似乎没有抓住要点。在我看来,史蒂夫·吉布森(GRC.com 的负责人)有点疯狂。(他的“纳米探针”页面还在吗?)他似乎在他的一些文章中散布恐慌。

答案3

那个页面有点难以理解。也许是孩子写的,或者是卖无用产品的人写的。所以让我们重新开始吧。

现在我们只讨论 TCP。

当有人尝试连接到您不希望允许连接的 TCP 端口(发送 SYN 数据包)时,您可以选择以下几种响应方式:

  1. 如果您没有监听此端口,则使用 RST 数据包进行响应,这是 TCP 协议所要求的。通常,您会将此端口称为“关闭”端口。如果您在此端口上运行允许来自其他来源的连接的服务,则将其称为“隐身”端口是有意义的。
  2. 接受连接并立即断开连接(RST 或 FIN)。TCP 包装器过去对阻塞的连接有这种行为。
  3. 忽略数据包。这很常见。如果您在端口上运行允许来自其他来源的连接的服务,则将其称为“隐形”端口是有意义的。
  4. 接受连接并忽略该连接的后续数据包。虽然这可能不会增加任何实际安全性,但可能会惹恼攻击者。
  5. 用合理的 ICMP 错误进行响应。通常由路由器(包括防火墙)执行,但主机型“防火墙”并不经常执行。
  6. 以不合理的 ICMP 错误进行响应。只是为了惹恼/迷惑攻击者
  7. 响应不一致且随机。这可能会惹恼攻击者,但可能不会增加任何实际安全性。

如何响应取决于您的目标。如果您希望机器看起来不是有效节点,则无论是否正在运行服务(允许来自其他来源的连接),您都应忽略该数据包。但是,如果您要响应任何流量,这无助于隐藏您的存在。

如果您只想禁止连接,而不想隐藏您的 IP 地址是活动的,那么最好的办法可能是使用 RST 数据包进行响应,无论您是否正在侦听该端口。这可以隐藏您在该端口上是否有允许来自某些地址的连接的服务,或者该端口上是否没有运行任何服务。

选择 4 或 7 可能会让运行端口扫描器的人感到沮丧,但偶尔也会给您带来操作上的麻烦。对于您实际使用的地址来说,它并不是那么有用,但对于蜜罐来说却很有趣。

选择 #2 很常见,因为一些流行的过滤软件(例如 TCP Wrappers)需要接受连接才能获取源地址,以便确定是否应允许连接。这是基于历史操作系统限制,这些限制可能与现代操作系统的新安装无关。

您的选择取决于您的需求。这包括您是否有允许从每个地址进行连接的端口,以及您是否有允许从某些地址进行连接的端口。

如果您不允许任何来源的传入连接,您不妨丢弃任何不允许的数据包。这隐藏了您的机器的存在,使随机攻击者不太可能相信它是一个有效的地址。

如果您允许某些端口上来自任何来源的传入连接,而其他端口上来自某些来源的传入连接(这是一种非常常见的配置),则您可以进行一些合理的选择。如果您对根本没有监听的端口发送 RST,但对故意禁止的端口采取不同的行为,则表明您允许从选定来源连接到哪些端口。我认为更好的选择是发送 RST,无论您根本没有监听该端口还是禁止来自来源的连接。

这类安全问题应该包括威胁模型、您向所有人提供的服务与特定来源的说明,以及安全策略或您需要帮助定义安全策略的说明。引入没有明确定义的新术语会造成更多混乱。

答案4

配置防火墙以静默丢弃它们而不是回复。大多数防火墙都有办法做到这一点。上次我需要使用 OpenBSD 的 ipf,它是“阻止丢弃”而不是“阻止返回”。

http://www.openbsd.org/faq/pf/filter.html#syntax

http://www.openbsd.org/faq/pf/options.html#block-policy

相关内容