关于监听和打开端口的一些困惑,监听,打开和阻止之间的区别

关于监听和打开端口的一些困惑,监听,打开和阻止之间的区别

一段时间以来,我一直在努力在一些 Linux 机器上打开端口,并按照一些教程进行操作,我在 2 个不同的 Linux VM 上尝试过但都失败了,经过一番研究,我想我已经找到了失败的原因。

因此,我所做的就是下载 gufw,设置规则以允许到特定端口的入站连接或禁用防火墙并重新启动。之后,当我使用 zenmap 扫描时,我可以看到该端口仍然关闭。

但是当我使用 nc -l -p port 时,我可以看到端口已打开。当该机器上的 apache 服务器运行时,端口 80 上也发生了同样的事情。

然后,我将防火墙配置为拒绝所有入站流量并重新启动。我启动了 apache 服务并运行 nc -l -p port,然后使用 zenmap 进行扫描,结果显示端口 80 和 nc 选择的端口已被过滤

由此我得出以下结论:

  • 听力表示该端口不受防火墙保护,或者防火墙允许入站流量进入该端口,并且有服务正在侦听该端口
  • 已过滤意味着可能有或可能没有服务在监听该端口,但防火墙拒绝入站流量
  • 关闭表示该端口不受防火墙保护,但没有服务/应用程序监听该端口

因此,打开端口意味着如果应用程序正在监听,则该端口可供外部使用。如果没有监听,则 nmap 扫描时该端口将显示为“已关闭”。

总而言之,如果我想要一个应用程序可以被外部访问,我必须将它绑定(是这个词吗?)到一个端口,然后在防火墙上打开该端口。

这是正确的吗?如果您能对此进行补充,我将不胜感激,我问过另一个类似的问题,但当时我对端口和防火墙了解不多,所以如果我的结论是正确的,我可以回答这个问题,希望这对某些人有帮助。

此外,即使没有监听,是否仍然可以以某种方式连接到端口?

答案1

端口只是应用程序与第 4 层协议之间的连接概念。实际上并不存在所谓的“端口”。当应用程序想要接收来自第 4 层协议(TCP、UDP 等)的流量时,它会请求该协议将该协议的任何第 4 层段(以特定端口号为地址)发送给应用程序。

当第 4 层协议没有应用程序请求将第 4 层数据段发送到特定端口号时,该端口关闭

当应用程序请求并被第 4 层协议授予使用端口号的权利时,该端口打开

防火墙可以设置为丢弃包含第 4 层段的第 3 层数据包,该数据包针对特定第 4 层协议,地址为特定端口。这意味着该端口已过滤或者已阻止在防火墙上。

每个第 4 层协议都有自己的端口,或者甚至可能不使用端口。例如,一个应用程序可以接收 TCP 12345 的流量,而另一个应用程序可以接收 UDP 端口 12345 的流量;它们不是同一个端口,因为端口实际上并不存在。特定第 4 层协议上特定端口号的使用仅限于第 4 层协议授予该端口使用权的应用程序。

答案2

man nmap

Nmap 的输出是扫描目标的列表,每个目标的补充信息取决于所使用的选项。这些信息中的关键是“有趣端口表”。该表列出了端口号和协议、服务名称和状态。状态为打开、过滤、关闭或未过滤。打开。表示目标计算机上的应用程序正在侦听该端口上的连接/数据包。过滤。表示防火墙、过滤器或其他网络障碍物阻塞了端口,因此 Nmap 无法判断它是打开还是关闭。关闭。端口没有应用程序侦听它们,但它们随时可能打开。当端口对 Nmap 的探测有响应,但 Nmap 无法确定它们是打开还是关闭时,端口被归类为未过滤。当 Nmap 无法确定这两个状态中的哪一个描述端口时,它会报告状态组合打开|过滤。和关闭|过滤。当请求版本检测时,端口表还可能包括软件版本详细信息。当请求 IP 协议扫描 (-sO) 时,Nmap 提供有关支持的 IP 协议而不是侦听端口的信息。

相关内容