如何在 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,第二個是追蹤路徑輸出][2]

正如您所看到的,您需要使用更多工具來了解正在發生的情況。您還必須檢查您的應用程式是否有一些日誌,或者您可能在路徑中間有一些反向代理或其他東西。

您可以使用數控在一側模擬一台簡單的伺服器,使用您需要在應用程式中使用的每個連接埠傳輸檔案。

在客戶端中建立一個文件,然後在其中放入一些垃圾。

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

在本例中,您的伺服器是 10.1.1.20。在此伺服器的連接埠 3333 上執行 netcat,例如:

nc -lv 3333 > test

在 cliente 中執行 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

相關內容