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