Tcpdumpの例をできるだけ多く収集したい!
例:eth0でFTPパスワードをフィルタリングする方法。 OR HTTP404エラーなどをフィルタリングする方法。
フィルタリングは行いませんが、この例では、便利な連続パケットスニファを作成します。
tcpdump -n -C 128 -W 100 -z /home/user/compress_logs.pl -i br0 -w /home/user/packetlogs/packetlog.pcap &
-n
IPの逆引きを行わない、ポート番号をテキストの説明に変換しない、MACアドレスを名前に変換しないなど。-C 128
128,000,000バイトごとにキャプチャファイルをローテーションする-W 100
ローテーションされるキャプチャファイルの数を制限します(-C
を参照)。-z /home/user/compress_logs.pl
スクリプトを実行compress_logs.pl
回転されたキャプチャファイルごとに-i br0
インターフェースでのキャプチャbr0
-w /home/user/packetlogs/packetlog.pcap
ファイル名を使用/home/user/packetlogs/packetlog.pcap
&
これはbashによって解析されます。コマンドをバックグラウンドで(非同期に)実行する必要があることを示しますそれを/etc/rc.localに入れて、ブート時に実行します。インターフェイスbr0
上のすべてのパケットをキャプチャします。これは、タップとしてインラインで2つのインターフェイス、またはパッシブタップにフックされた2つのインターフェイス、またはミラーリングされたスイッチポートにフックされた1つのインターフェイスです(実際には3つすべてを使用しました)。 )
最大128MBのファイルを書き込み、最大100個まで自動的にローテーションします。 128MBのデータをキャプチャすると、ファイルを閉じて新しいファイルを開き、古いファイル名を引数として指定されたコマンドをフォークします。この場合、IDSからすばやく転送するために前のキャプチャファイルを圧縮する小さなPerlスクリプトです。サーバ。
これは、接続を長時間(1日か2日など)監視する必要があり、戻って特定の時間に発生したイベントを見つける必要がある場合に使用します。小さなファイルは、1つの大きなpcapファイルよりもWiresharkで処理する方がはるかに簡単です。
HTTPのみをキャプチャPOSTデータ:
tcpdump tcp[2:2] = 80 and \(tcp[20:4] = 1347375956
or tcp[24:4] = 1347375956
or tcp[28:4] = 1347375956
or tcp[32:4] = 1347375956
or tcp[36:4] = 1347375956
or tcp[40:4] = 1347375956
or tcp[44:4] = 1347375956
or tcp[48:4] = 1347375956
or tcp[52:4] = 1347375956
or tcp[56:4] = 1347375956
or tcp[60:4] = 1347375956\)
少し手に負えないが確かに便利。 tcp[2:2]
キャプチャ、TCPヘッダーの位置2から開始、2バイト(ポート、ポート80はHTTPトラフィック用)。
次に、TCPデータの最初の4バイトを 'POST'と比較します。TCPヘッダーは最小20(10進数)バイトですが、= TCPオプションは0から40バイトまでの可変長(32ビット境界に埋め込まれ、から始まる)で、20から60(10進数)まで4バイトごとにテストする必要があります。最後に1347375956
は、ASCII text'POST 'のbase10ビッグエンディアンバイナリ表現です。他のHTTPタイプには、以下の値を使用してください。
1195725856
(4バイトと比較しているために必要な「GET」の後のスペースを含む)1347375956
1347769376
(スペースを含む)1145392197
(実際には「DELE」だけ)他のタイプの場合は、4 ASCII文字を16進数に変換し(正確に4文字を使用する必要があります)、16進数を1つの数値として扱い、10進数に変換します。たとえば、POSTは50 4f 53 54
。 504f5354
10進数に変換されるのは1347375956
。
すべてをファイルにキャプチャします(後でWiresharkなどで分析できるようにします)。
Sudo tcpdump -i en0 -s0 -w ~/capture.pcap
-i en0
インターフェースでのキャプチャen0
-s0
パケット全体を使用します(切り捨てないでください--snarf 0)-w ~/capture.pcap
パケットキャプチャファイルへの書き込み~/capture.pcap
OpenWRTルーターでクライアントのDNS要求を監視する場合:
tcpdump -n -i br-lan dst port 53
-n
IPの逆引き参照を実行したり、ポート番号をテキストの説明に変換したり、MACアドレスを名前に変換したりしないでください。-i br-lan
インターフェースでのキャプチャbr-lan
dst port 53
フィルター宛先ポート53、DNSサービスのポート