◆tcptrackは、いわゆるsnifferの1つ。
「もしかして Dos 攻撃を食らってる?」という時、みなさんどうされています?
Linux サーバの TCP 通信状況を把握するのに、接続元・接続先の把握であれば、netstat を使うのが一般的。より細かな通信状況であれば tcpdump を使うでしょう。ですが、通信状況だけでなく、”転送量”を知りたい場合や、今どこのホストとの通信がサーバの負担になっているかを把握する事は、そうそう単純ではありません。
そんなとき tcptrack を使うのが便利です。tcptrack は、”top” コマンドのように、秒単位で刻々と通信状況を表示することができます。どのホスト間で、どのような通信状態で、アイドル状態の秒数、転送レートを表示することができます。
◆インストール方法
バイナリまたはソースコードからインストールできます。現行バージョン 1.4.2 をソースから入れるのであれば、次のようにします。
cd /usr/local/src/ wget http://www.rhythm.cx/~steve/devel/tcptrack/release/1.4.2/source/tcptrack-1.4.2.tar.gz tar xfz tcptrack-1.4.2.tar.gz cd tcptrack-1.4.2 ./configure make make test make install
バイナリは公式サイトのダウンロード先から辿れます。
バイナリであれば、インストールは楽でしょう。Red Hat Enterprise Linux 5 (x86_64) であれば、コマンド2つで OK です。
# wget http://pkgs.repoforge.org/tcptrack/tcptrack-1.4.0-1.el5.rf.x86_64.rpm # rpm -ivh tcptrack-1.4.0-1.el5.rf.x86_64.rpm
◆使い方
使い方は非常にシンプルです。sudo または root ユーザ権限で実行する必要があります。
# tcptrack -i eth0
「-i」はネットワーク・インターフェースの指定。最低限これだけ使えればOKです。
画面が表示されると、イカのオプションが使えます。
【 s 】表示結果を転送レート・総バイト数・ソート無しの順で切り替え
【 p 】一時停止・再開
【 q 】終了
コマンドラインで遣うオプションとしては、「-r」が便利です。接続が close した後、指定秒数間、画面に接続記録を表示します。この指定が無い場合は、close した直後に画面から接続情報が削除されます。接続の傾向を把握したい場合は -r 30 等を指定しておくと、妙な接続を繰り返しているホストがないかどうか参照出来ます。
もう1つ、tcpdump 同様、pcap 形式でフィルタすることもできます。例えば、指定ホストとの通信状況を確認したい場合
# tcptrack -i eth0 src or dst 210.239.46.254
このように指定可能です。
HTTP ポート(80) への接続だけを見たい場合は
# tcptrack -i eth0 port http
または
# tcptrack -i eth0 port 80
このように指定可能です。
and や not 等の指定も可能です。
最近自分が使ったのは、携帯キャリア以外からの不正通信把握のために、こんなようなルールを書きました。
/usr/bin/tcptrack -r 10 -i eth0.port 80 \ and not src net 192.168.10.0/24 \ and not src net xxx.xxx.xxx.xxx/24 \ and not src xxx.xxx.xxx.xxx (以下略)
これはポート 80 に対しての接続のうち、信頼出来る自ネットワークや、特定ネットワーク、特定ホストからの条件を除外した通信量の把握が出来ます。
他には、社内の POP3 サーバが重く、どこの環境からの通信が多いのか把握するために遣ったこともあります。
フィルタの組み合わせによっては、かなり強力なツールに化けるでしょう。ネットワークやサーバまわりの管理者であれば、入れておくとイザ!という時に役立つと思います。
詳しくは man tcptrack を参照ください。
◆Reference
tcptrack homepage
http://www.rhythm.cx/~steve/devel/tcptrack/