如何在 WireShark 中检查防火墙丢弃

如何在 WireShark 中检查防火墙丢弃

我们在两台服务器上设置了一个应用程序。由于防火墙阻止了两台服务器之间的通信,因此应用程序出现故障。我需要一种方法来找出每个被阻止的端口,以便我可以请求打开这些端口。

我已经在这两台服务器上捕获了 tcpdump。获取被阻止端口的正确方法是先查找 SYN,然后再查找 RST 吗?

如果是这样,我可以在 WireShark 中创建一个过滤器,以便显示所有被阻止的端口?

答案1

首先,更好的方法是从防火墙服务器获取访问权限来检查日志。

如果您没有这种访问权限,则需要进行一些调查。

Wireshark 可以确认发生了什么,但它不是一个合适的工具。您需要使用更多工具来检查。

假设你有一个场景:

  • 您可以访问服务器,但不能访问防火墙。

在这种情况下,我建议您在 Linux 中运行 nmap 和 nc 工具来探测端口。

░▒▓  │  /mnt/sda1/backup_home ▓▒░ nmap -Pn -v -v 10.1.1.20                                         ░▒▓ ✔ │ at 17:38:37  ▓▒░
Starting Nmap 7.93 ( https://nmap.org ) at 2023-01-24 17:39 -03
Initiating Parallel DNS resolution of 1 host. at 17:39
Completed Parallel DNS resolution of 1 host. at 17:39, 0.08s elapsed
Initiating Connect Scan at 17:39
Scanning 10.1.1.20 [1000 ports]
Discovered open port 8080/tcp on 10.1.1.20
Discovered open port 22/tcp on 10.1.1.20
Discovered open port 111/tcp on 10.1.1.20
Discovered open port 8000/tcp on 10.1.1.20
Discovered open port 9001/tcp on 10.1.1.20
Completed Connect Scan at 17:39, 0.49s elapsed (1000 total ports)
Nmap scan report for 10.1.1.20
Host is up, received user-set (0.047s latency).
Scanned at 2023-01-24 17:39:28 -03 for 1s
Not shown: 995 closed tcp ports (conn-refused)
PORT     STATE SERVICE    REASON
22/tcp   open  ssh        syn-ack
111/tcp  open  rpcbind    syn-ack
8000/tcp open  http-alt   syn-ack
8080/tcp open  http-proxy syn-ack
9001/tcp open  tor-orport syn-ack

Read data files from: /usr/bin/../share/nmap
Nmap done: 1 IP address (1 host up) scanned in 0.59 seconds
nc -vnz 10.1.1.20 22                               ░▒▓ 1 ✘ │ took 10s  │ at 17:38:23  ▓▒░
Ncat: Version 7.93 ( https://nmap.org/ncat )
Ncat: Connected to 10.1.1.20:22.
Ncat: 0 bytes sent, 0 bytes received in 0.05 seconds.

如您所见,我探测了服务器上所有打开的端口,并确认 22 可以开放使用且没有被防火墙阻止。

但它可能存在问题。让我给你演示一下。

░▒▓  │  /mnt/sda1/backup_home ▓▒░ ssh [email protected]                                               ░▒▓ ✔ │ at 17:39:29  ▓▒░
kex_exchange_identification: read: Connection reset by peer
Connection reset by 10.1.1.20 port 22
░▒▓  │  /mnt/sda/backup_home ▓▒░ 

我无法进入该主机。问题是防火墙中的某些规则阻止了 ssh 密钥交换。我该如何确认?我使用 wireshark 来确认。

我选择了“任何“作为我的接口,然后我尝试连接到服务器,发现xxx.244处的防火墙阻止了我的入口。我在wireshark中使用了这个过滤器。

!(http or ssdp)  &&  tcp.flags.reset==1

第一部分是过滤垃圾,第二部分是重置。

[wireshark 过滤器和隐藏防火墙正在路上][1]

第二部分确认了当我对该主机进行 ping 操作时出现问题的原因,并且在同一捕获中我也使用了 tracepath 命令。此跟踪在途中遇到了一些阻塞,正如您在捕获的数据包的第二部分中所看到的那样。

[第一个是 ping,第二个是 tracepath 输出][2]

如您所见,您需要使用更多工具来了解正在发生的事情。您还必须检查您的应用程序是否有一些日志,或者您可能在路径中间有一些反向代理或其他东西。

您可以使用数控在一侧模拟一个简单的服务器,使用您在应用程序中需要使用的每个端口来传输文件。

在客户端中创建一个文件并在里面放入一些垃圾。

:>test.
cat <<EOF> test
asd
asdas
asd
asd
EOF

在此示例中,您的服务器是 10.1.1.20。在此服务器的端口 3333 上运行 netcat,例如:

nc -lv 3333 > test

在客户端运行 netcat 来发送文件到该服务器:

nc -v 10.1.1.20 3333 <test

监控服务器和客户端上的结果。尝试使用所有必要的端口。如果防火墙阻止了某些端口,则无法传输此文件。

祝你好運![1]:https://i.stack.imgur.com/avf0y.png [2]:https://i.stack.imgur.com/p5ylM.png

相关内容