Kozupon.com    
 
 ngrepでネットワークを監視する!


grepというコマンドが有るだろう。grepは、パターン検索のコマンドだ。これは、正規表現のパターンマッチで検索される。
このことから、ngrepはネットワークgrepとでも言うか、ネットワークに流れるデータのパターンマッチ検索コマンドである。このコマンドを実行して常駐させて、自サーバへインターネット側からアクセスしてくる輩の情報がゲットできる。
ここでは、そのngrepコマンドのインストールから使い方まで紹介したい。無論、ソースインストールだ。


1.準備
ngrepは、tcpdump系列のコマンドであるため、libpcapが必要である。したがって、libpcapをあらかじめインスコする。
libpcapは ここ からゲットする。俺がゲットしたときは(2006年4月)、 libpcap-0.9.4.tar.gz が最新だった。ゆえに、libpcap-0.9.4.tar.gz を使ってコンパイルする。

[VFS-root@michi]# cd /usr/local/src/
[VFS-root@michi src]# wget http://www.tcpdump.org/release/libpcap-0.9.4.tar.gz
[VFS-root@michi src]# tar zxvf libpcap-0.9.4.tar.gz
[VFS-root@michi src]# chown -R root.root libpcap-0.9.4
[VFS-root@michi src]# cd libpcap-0.9.4
[VFS-root@michi libpcap-0.9.4]# ./configure
[VFS-root@michi libpcap-0.9.4]# make
[VFS-root@michi libpcap-0.9.4]# make install

よっし、準備完了。


2.ngrepのゲット
ngrepは、 ここ でゲットする。俺がゲットしたときは(2006年4月)、 ngrep-1.43.tar.bz2 が最新だった。したがって、 ngrep-1.43.tar.bz2 で話を進める。

[VFS-root@michi]# cd /usr/local/src/
[VFS-root@michi src]# wget http://jaist.dl.sourceforge.net/sourceforge/ngrep/ngrep-1.43.tar.bz2


3.コンパイル&ビルドインストール

[VFS-root@michi src]# tar jxvf ngrep-1.43.tar.bz2
[VFS-root@michi src]# chown -R root.root ngrep-1.43
[VFS-root@michi src]# cd ngrep-1.43
[VFS-root@michi ngrep-1.43]# ./configure
[VFS-root@michi ngrep-1.43]# make
[VFS-root@michi ngrep-1.43]# make install

これで、インストールは完了。


4.ちょっと使ってみる
さて、ngrepを実際に使ってみるが、オプションパラメータはtcpdumpとほぼ同じらしい。

ngrep <オプション> <ストリングス>

■ オプションパラメータ
-h
ヘルプ表示

-X マッチ表現を16進法のストリングとみなす。

-V バージョン表示。

-i regex表現のためケースを無視する。

-w 単語とregex表現を合わせる。

-q 静的; パケットヘッダーとペイロード以外、少しも情報出力しない(関連しているなら)。

-p インターフェースをプロミスキャスモードにしない。

-e 空のパケットを表示する。 通常、それらには必要ないペイロードがあるので、空のパケットは捨てられる。
指定されると、空のパケットは指定されたregex表現にかかわらず表示される。

-v マッチを逆にする; 単に合わないパケットを表示する。

-x ASCIIと同様に、16進でパケット内容を表示する。

-l stdout lineをバッファリングする。

-D pcap_ダンプファイルを読むとき、記録された時間の間隔で、それらを再現する。

-t タイムスタンプを YYYY/MM/DD HH:MM:SS.UUUUUU 形式で表示する。

-T パケットマッチの間のデルタを示して、+ S. UUUUUUのフォームでタイムスタンプを表示する。

-R 特権をDROPPRIVS_USERに落とさないようにする。

実際に、仕掛けてみた。ngrepを使ってWebサーバのGETアクセスを捕らえてみることにする。
そしたら、以下のようにアクセスすると表示された。

[VFS-root@michi ngrep-1.43]# ngrep -q GET

T 192.168.255.111:1283 -> 192.168.255.6:80 [AP]
GET / HTTP/1.0..Host: michi..User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; ja;
rv:1.8.0.1) Gecko/20060111 Firefox/1.5.0.1..Accept: text/xml,application/xml,applica
tion/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5..Accept-Language:
ja,en-us;q=0.7,en;q=0.3..Accept-Encoding: gzip,deflate..Accept-Charset: Shift_JIS,ut
f-8;q=0.7,*;q=0.7..Keep-Alive: 300..Via: 1.1 Secure:3128 (squid/2.5.STABLE3)..X-Forwa
rded-For: unknown..Cache-Control: max-age=259200..Connection: keep-alive....

GETの他にパターンマッチでポートを監視したり、多様性が有ると思う。

以上


 
 
 



Copyright 2005 Kozupon.com.