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