
我們有一個跨兩台伺服器的應用程式設定。應用程式失敗是因為防火牆阻止了兩個伺服器之間的通訊。我需要一種方法來找出每個被阻止的端口,以便我可以請求打開這些端口。
我已經在這兩台伺服器上捕獲了 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