2022年8月、ホームページを全面リニューアルしました! 情報を分かりやすくお伝えできるサイト作りを目指してまいります。

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の他にパターンマッチでポートを監視したり、多様性が有ると思う。

以上

コメント