Pandora: Documentation ja: IPtraf Mon
Contents
1 IPTraf を使ったネットワークモニタリング
1.1 概要
Pandora FMS は、IPTraf によって処理されたネットワークトラフィックの情報をモニタリングすることができます。
IPTraf は、一つもしくはすべてのインタフェースのネットワークのトラフィックを収集し、ログファイルに情報を保存します。
パッシブコレクタ は、ルールにもとづいて情報をフィルタリングし、すべての情報をツリー構造にまとめます。ツリー構造の中に含まれるネットワークトラフィック情報を利用して、検出した IP ごとに XML ファイルを生成します。
XML ファイルが処理されると、検出した IP ごとに 1エージェントとして Pandora FMS に現れます。これらのエージェントは、ネットワークトラフィック情報の複数のモジュールを持っています。
1.2 動作の仕組み
パッシブコレクタ は、passive.pl という名前のスクリプトです。このスクリプトは、情報をパースし、XML ファイルを非同期モードで生成します。そのため、Pandora FMS でトラフィック情報を更新したい間隔でスクリプトを実行する必要があります。
次のように、コマンドを実行するときのパラメータとして、設定ファイルを渡します。
# ./passive.pl /home/usuario/iptraf/passive.collector.conf
スクリプトを実行する手順は次の通りです。
- IPTraf を停止
- passive collector を実行
- ログファイルを削除
- IPTraf を起動
スクリプトで実行される処理は次の通りです。
- ログファイルのパース
- 削除ルールの適用
- 処理ルールの適用
- 全情報をツリー構造で作成
- XML ファイルを生成し、Pandora FMS の data_in フォルダに保存
- 処理終了
1.3 設定
設定ファイル passive.collector.conf には、次のパラメータがあります。
- incomingdir: Pandora の data_in フォルダのフルパス。
- interval: スクリプトの実行間隔(秒単位)。このパラメータは、それぞれの間隔でスクリプトが実行されるという意味ではなく、Pandora FMS におけるモジュールとエージェントの設定に使われます。また、エージェントとモジュールが不明状態になるタイミングを知ることができます。スクリプトの実行タイミングは、外部から制御します。
- iface: ネットワークトラフィックをモニタするインターフェース名。
- min_size: レコードをサイズでフィルタリングします。0 を指定すると無効です。
- log_path: IPTraf のログファイルのフルパス。
- rules: 次の 2種類のルールがあります。
- discard : 最初に実行され、ルールにマッチしたレコードを削除します。
- process : 2番目に実行され、ツリーの中に残すレコードを設定します。
1.4 フィルタリングルール
フィルタリングルールを理解するためには、最初に IPTraf のログファイルの構造を理解する必要があります。
1.4.1 IPTraf のログファイルの構造
ログ出力の例を以下に示します。
Mon Nov 22 15:41:59 2010; TCP; eth0; 52 bytes; from 192.168.50.2:54879 to 91.121.0.208:80; first packet
日時のあとに、プロトコル、インタフェース名、転送バイト数、発信元IPとポート番号、あて先IPとポート番号が記録されています。そのあとに何らかの情報が付与されます。この場合は、この通信の最初のパケットを意味します。
この行で重要なデータは、インタフェース名、転送バイト数、発信元IPとポート番号、あて先IPとポート番号です。
1.4.2 コレクタフィルタリングルール
ルールは次のような構造になっています。
[process/discard] [!][ip_src/ip_dst] ip/mask [!][port_src/port_dst] port [!][protocol] protocol
最初のパラメータには、ルールにマッチしたものを処理したい場合は process、マッチしたものを破棄したい場合は discard を指定します。
2つ目のパラメータは、マッチさせる対象が、発信元IP(ip_src)なのか、あて先IP(ip_dst)なのかを設定します。このパラメータには、(!) を書くことができ、この場合、該当の IP にマッチしないものを意味します。
3つ目のパラメータは、IP とネットマスクです。一つの IP にのみマッチさせたい場合は、ネットマスクなしか、ネットマスクに 32 を指定します。ネットマスクが指定された場合は、それにマッチするアドレス範囲が対象となります。
例えば、192.168.50.0/24 は、192.168.50.1-192.168.50.254 の範囲の IP アドレスになります。192.168.50.23 および 192.168.50.23/32 は、同じで、192.168.50.23 の IP アドレスを意味します。
4つ目のパラメータは、2つ目のものと似ていますが IP アドレスではなく、発信元ポート番号(port_src) または、あて先ポート番号(port_dst) のどちらでフィルタするかを意味します。これも同様に、指定以外を意味する (!) 文字を設定することができます。
5つ目のパラメータは、マッチさせるポート番号を指定します。
次のパラメータを設定することができます。
- 番号で特定のポートを指定。例えば、8080など。
- ハイフンで範囲を指定可能。例えば、21-34 は、21 と 34 を含みその間のポート番号すべてにマッチします。
- カンマ区切りで複数ポートの設定が可能。例えば、21,23,80,8080 など。
- 範囲と複数指定は組み合わせ可能。例えば、21-34,80,8080,43234-43244 など。
6つ目のパラメータは、通信を行うのに使われるプロトコルです。このパラメータは、(!) 文字を書くことにより、そのプロトコルにマッチしないものを指定することができます。
次の指定ができます。
- プロトコルは、例えば TCP などです。
- 複数のプロトコルはカンマで区切ります。例えば、TCP,UDP,FTP など。
- "all" という特別なコマンドがあり、これはすべてのプロトコルにマッチします。
1.4.2.1 例
以下にルールの例を示します。
discard src_ip 192.168.70.222/32 !port_dst 21-23,80,8080 protocol all process src_ip 192.168.70.0/24 !port_src 0 !protocol TCP process src_ip 192.168.80.0/24 !port_dst 80,8080 protocol UDP,TCP
これらのルールは、次の通信を処理します。
- 発信元IP が、192.168.80.X で、あて先ポートが 80 および 8080 以外の TCP または UDP の通信。
- 発信元IP が、192.168.70.X で任意の発信ポート、TCP プロトコル以外のもので、最初のルールで削除されたものを除く通信。最初のルールは、発信元IPが、192.168.70.222 で、あて先ポートが 21,22,23,80,8080 以外の任意の通信を破棄します。
1.5 生成されるデータ
パッシブコレクタにより生成されるデータは、XML ファイルです。XML ファイルは、ルールにマッチし、検出した IP ごとにあります。これらのファイルは、設定ファイルの incomingdir パラメータに設定したパスにコピーされます。パスは、Pandora の data_in フォルダである必要があります。
XML は、該当 IP のネットワークのステータスを持った Pandora FMS のモジュールになります。XML ファイルの例を以下に示します。
<agent_data interval='300' os_name='Network' os_vesion='4.0.2' version='N/A' timestamp='AUTO' address='192.168.70.1' agent_name='IP_192.168.70.1'> <module> <name>Port_67</name> <type>async_data</type> <description>Total bytes of port 67</description> <interval>300</interval> 1312 </module> <module> <name>Port_67_Protocol_UDP</name> <type>async_data</type> <description>Total bytes of port 67 for protocol UDP</description> <interval>300</interval> 1312 </module> <module> <name>IP_192.168.70.141</name> <type>async_data</type> <description>Total bytes of IP 192.168.70.141</description> <interval>300</interval> 1312 </module> <module> <name>IP_192.168.70.141_Port_67</name> <type>async_data</type> <description>Total bytes of IP 192.168.70.141 for port 67</description> <interval>300</interval> 1312 </module> <module> <name>Protocol_UDP</name> <type>async_data</type> <description>Total bytes of Protocol UDP</description> <interval>300</interval> 1312 </module> </agent_data>