2013-06-07 15:55:48 +0000 2013-06-07 15:55:48 +0000
51
51
Advertisement

特定のポートのTCPトラフィックを監視する

Advertisement

このためにかなり広範囲に検索しましたが、実行例を思いつくことができません。

私の目的は、特定のポートのTCPトラフィックを監視して、入ってくる接続を見て、テキストファイルに書き込むことです。

netstat, nmap, tcptrackはすでに使い果たしていますが、どれもタイムスタンプをサポートしていませんでした。

私はこれで遊んでいました:

netstat -ano|grep 443|grep ESTABLISHED

同様にこれ:

tcptrack -i eth0 port 443

しかし、どちらも私のニーズに合っていない私は接続がでてくる時間を必要としています。

あなたが提案を持っているか、またはそれが非常に感謝されるだろう右の方向に私を指すことができた場合。:)

Advertisement
Advertisement

回答 (7)

73
73
73
2013-06-07 16:03:28 +0000

編集 . 何年も経った今でもこの回答にはアップボイスがついています。この答えのために行かないでください、ここの iptablesを使った答え の方が私の意見でははるかに優れています。

33
33
33
2014-12-05 15:08:24 +0000

**Linux カーネルの iptables サポートを使用することができます。欠点は、設定に root 権限が必要なことです (しかし、ポート 443 について話していることを考えると、おそらくほとんどのソリューションで root 権限が必要になるでしょう)。例えば、入力ルールがある場合、ログエントリは次のようになります:

Dec 5 09:10:56 hostname kernel. 1023963.18533] HTTPS SYN: IN=ifX OUT= MAC=80:80:80:80:80:80:80:80:80:08:00 SRC=A.B.C.DST=W.X.Y. Z LEN=52 TOS=0x00 PREC=0x20 TTL=119 ID=11901 DF PROTO=TCP SPT=37287 DPT=443 WINDOW=8192 RES=0x00 SYN URGP=0

この情報を利用して、一般的なログ監視ツールを使用して何かを行うことができます。もしあなたの syslog 実装がそれをサポートしているならば、これらの情報を別のログファイルに送ることができ、追加のソフトウェアなしで、接続データをタイムスタンプ付きのファイルに秒単位で書き込むという要件を効果的に満たすことができます。これにより、-I INPUT ターゲットはファイアウォールルールのデバッグにも有用です。

ログのフラッディングを避けるために、これと一緒に LOG モジュールを使用することを検討してください。詳細は iptables(8) の man ページを参照してください。

26
Advertisement
26
26
2013-06-07 16:13:36 +0000
Advertisement

デフォルトでは、 tcpdump ユーティリティはマイクロ秒の分解能で時間を報告します。例えば:

$ sudo tcpdump -i any port 443

は、以下のような出力を表示します:

12:08:14.028945 IP localhost.33255 > ¶> localhost.https: Flags [S], seq 1828376761, win 43690, options [mss 65495,sackOK,TS val 108010971 ecr 0,nop,wscale 7], length 0 12:08:14.028959 IP localhost.https ♦♦> localhost.33255.Flags [R.], seq 0, ack 1828376762, win 0. フラグ [R.], seq 0, ack 1828376762, win 0, length 0

tcpdump オプションの完全なリストは tcpdump(8) を、使用できるフィルタの完全な構文は pcap-filter(7) を参照してください。

5
5
5
2013-06-07 16:09:31 +0000

443 は暗号化されたトラフィックです - このポート上のトラフィックの頭や尻尾を作るのは難しいです:

yum install ngrep または apt-get install ngrep

ngrep -W byline -d any port 443 -q
``` を実行してから 

&001 を実行することができます。
2
Advertisement
2
2
2016-06-02 09:48:03 +0000
Advertisement

また、他のマシンからの着信・発信パケットを監視するためにも必要になるかもしれません。

1
1
1
2013-06-07 15:59:57 +0000

tcpdumpかWiresharkを使ってください。

0
Advertisement
0
0
2017-05-26 11:08:35 +0000
Advertisement

もし、興味のあるポートのトラフィックを常に監視する恒久的なソリューションが必要なら、QoS (linuxのtcコマンド)を使うことをお勧めします。tcは少し暗号化されていて文書化されていないので、私はFireQoSを使ってQoSを設定し、それをリアルタイムで監視するためにnetdataを使っています。 https://github.com/firehol/netdata/wiki/You-should-install-QoS-on-all-your-servers

Advertisement

関連する質問

6
10
11
5
8
Advertisement