WireShark でファイアウォールのドロップを確認する方法

WireShark でファイアウォールのドロップを確認する方法

2 台のサーバーにまたがるアプリケーションをセットアップしています。ファイアウォールが 2 台のサーバー間の通信をブロックしているため、アプリケーションが失敗します。ブロックされているポートをすべて特定して、それらのポートを開くように要求する方法が必要です。

これら 2 つのサーバーで 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

最初の部分はゴミをフィルタリングし、2 番目の部分はリセットを取得します。

[Wireshark フィルターと隠しファイアウォールの導入][1]

2 番目の部分では、そのホストに ping を実行し、同じキャプチャで tracepath コマンドも使用したときに問題の原因が確認されます。キャプチャされたパケットの 2 番目の部分でわかるように、このトレースは途中でブロックされました。

[1つ目はping、2つ目はトレースパス出力です][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

関連情報