第1回で、iptablesの設定確認方法として「-nL」オプションを紹介しましたが、より詳細な情報を「-nvxL」オプションで知ることができます。この出力結果をグラフ化することで、ルールにマッチしたパケットの流量などを知ることができます。パケット流量を知ることで、DoS攻撃の発生を早期に察知することもできます。
# iptables -nvxL Chain INPUT (policy ACCEPT 3468748 packets, 5112284250 bytes) pkts bytes target prot opt in out source destination Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 2065127 packets, 119014727 bytes) pkts bytes target prot opt in out source destination
グラフ化ツールにはMRTGを使用します。MRTGによって生成させたドキュメントは、Apacheなどを介してWebブラウザで表示します。MRTGのインストールは、「MRTGによるサーバ監視システムの構築」を参考に行ってください。ここでは、MRTGのインストール先を/usr/local/mrtg-2としています。ご自身の環境と異なる場合は、適宜読み替えてください。
まずshスクリプトを用意します。このshスクリプトは「iptables -nvxL」を実行し、INPUTルールに適合したパケットの統計情報を抽出します。ここでは、shスクリプトを/usr/local/mrtg-2/に保存しているという前提で話を進めますが、保存場所は任意のディレクトリで構いません。
参考:MRTG: Monitoring Linux routers and firewalls
http://uk.builder.com/programming/unix/0,39026612,20267095-2,00.htm
#!/bin/bash IPTABLES="/sbin/iptables" $IPTABLES -nvxL | grep INPUT | awk '{ print $7 }' $IPTABLES -nvxL | grep OUTPUT | awk '{ print $7 }'
grepするキーワードに「OUTPUT」を指定したり、「iptables」に「-t nat」オプションを付けてnatテーブルの情報を集計することもできます。このスクリプトに少し手を入れるだけで、さまざまに活用できます。
shスクリプトを作成したら、実行権を付与しておきます。
# chmod +x iptables-in
次に、MRTGが生成するグラフなどのドキュメントを展開するディレクトリを作成します。httpdデーモンのドキュメントルート下に作成するのがいいでしょう。
# mkdir /var/www/html/mrtg
次に、MRTGが使用する設定ファイルを作成します。ここでは/etc/mrtg.cfgとしていますが、任意のディレクトリ/ファイル名で構いません。
WorkDir: /var/www/html/mrtg Target[in_packets]: `/usr/local/mrtg-2/iptables-in` MaxBytes[in_packets]: 13107200 ←インターフェイスの帯域に合わせて修正 Title[in_packets]: Inbound packets PageTop[in_packets]: <h1>Inbound Packet Stats</h1>
「WorkDir:」には、先ほど作成したMRTGドキュメントの展開先を指定します。「Target[in_packets]:」には、冒頭で作成したshスクリプト/usr/local/mrtg-2/iptables-inを絶対パスで指定して「`」で囲み、mrtg.cfgが使用されるたびにスクリプトを実行するようにしています。そのほかの値は、環境に合わせて変更してください。
設定ファイルを準備できたら、初期データを作成します。MRTGを新たなターゲットで初めて作成する場合は、「ファイルが見つからない」などのエラーが表示されますが、気にせず2回同じコマンドを実行します。
# /usr/local/mrtg-2/bin/mrtg /etc/mrtg.cfg # /usr/local/mrtg-2/bin/mrtg /etc/mrtg.cfg
以上の操作で、/var/www/html/mrtg/にMRTGが生成した分析データが作成されます。
# ls /var/www/html/mrtg/ in_packets-day.png in_packets-year.png in_packets.old mrtg-r.png in_packets-month.png in_packets.html mrtg-l.png in_packets-week.png in_packets.log mrtg-m.png
httpdデーモンを起動し、Webブラウザで「http://サーバのIP/mrtg/in_packets.html」にアクセスし、グラフを確認します。
定期的に分析データを作成するため、crontabを設定します。下記の設定は、5分置きに統計を取る場合です。
# crontab -e */5 * * * * /usr/local/mrtg-2/bin/mrtg /etc/mrtg.cfg > /dev/null 2>&1
Copyright © ITmedia, Inc. All Rights Reserved.