Ntopは強力なネットワークログと分析を可能にする - TechRepublic

Ntopは強力なネットワークログと分析を可能にする - TechRepublic

Ntopは、UNIXとWindowsの両方のプラットフォームで利用できる興味深いアプリケーションです。ネットワークデータを対話型シェル「intop 」で表示します。このシェルは、多くのUNIX管理者が愛用する定番のtopプログラムの動作を模倣しています。また、Ntopは洗練されたWebインターフェースも備えており、ネットワークトラフィックや統計情報を様々な表形式やグラフ形式で提供します。この記事では、Ntopの概要と使用例をいくつか紹介します。

Ntop環境は
独自の小規模なWebサーバーを実行し、HTTPSに対応しているため、グラフィカルインターフェースを利用するためにApacheなどのWebサーバーを実行する必要はありません。さらに、PerlやPHPなどのスクリプト言語とのインターフェースも容易に利用できます。また、永続的なネットワークデータをMySQLなどのデータベースに保存し、後で分析することも可能です。

どこで入手できますか?
様々なUNIXプラットフォーム用のバイナリビルドと、Windows用の限定デモバイナリを入手できます。Ntopの開発者はWindowsプラットフォーム用の開発ツールのライセンス版を購入する必要があるため、完全に機能するWindowsバイナリを入手するには寄付をお願いするか、ソースから自分でビルドしてください。

Ntopはオープンソースであるため、進化を続けています。Ntopのウェブサイトでは、毎日更新されるソーススナップショットが公開されています。Windows版のデモバイナリは別のウェブサイトからダウンロードできます。UNIX版ビルドを詳しく見てみましょう。

動作
UNIX ビルドは、皆さんがよくご存知の通常のconfigure – make – make install手順とは少し異なりますが、 ntop/docs/BUILD-NTOP.txtにプロセスを説明するReadme があります。

1. 必須パッケージ/ツールを入手する

  • · gdbm http://www.gnu.org/
  • · libpcap http://www.tcpdump.org/

2. チャートライブラリを構築する

  • · cd gdchart0.94c/
  • · ./configure
  • · gd-1.8.3/libpng-1.0.8 を CD に追加
  • · cp scripts/makefile.[選択してください] Makefile
  • ・ 作る
  • · cd ../../zlib-1.1.3/
  • · ./configure
  • ・ 作る
  • ・ CD ..
  • ・ 作る

3. ntopをビルドする

  • · cd ntop
  • · ./configure
  • ・ 作る

インストール前にテスト実行を行うには、ビルドディレクトリから実行してください。(プログラムはroot権限で実行する必要があるため、sudoを使用しています。)
bash-2.03$ sudo ./ntop -P /tmp
パスワード:
しばらくお待ちください: ntopが起動します…

画面にかなりの出力が表示されますが、データを表示可能な形式で表示するには、ブラウザで
http://localhost:3000にアクセスしてください。

NtopのWebインターフェースは分かりやすく、上部のタブから様々な画面を選択できます。カテゴリを選択すると、画面左側のフレームでデータをドリルダウンし、様々なグループや形式で表示できます。

図A
Ntopインターフェース

MySQLによるデータ保存デフォルトでは、Ntopは起動時に-P
フラグで指定されたディレクトリ内の標準GNU dbmデータベースファイルにデータを保存します。また、 -bスイッチを使用してMySQLデータベースにデータを保存することもできます。MySQLデータベースを設定するためのサンプルスキーマと、Ntopデータをデータベースに渡すための小さなPerlスクリプトが含まれています。MySQLとの統合手順については、ntop/docs/database/README.mySQLにも記載されています。

  1. · MySQLをインストールして実行する
  2. · mysqladmin create NTOPを実行します。
  3. · mysql NTOP < database/mySQLdefs.txtを実行します。
  4. · perl database/mySQLserver.pl を実行 &
  5. · ntop -w 3000 -i eth0 -b localhost:4000 を実行します。

mySQLserver.plスクリプトはデータを NTOP データベースにロードします。このデータは、mysql シェルまたは GUI インターフェースで読み取り、操作したり、スクリプトを使って取得したりできます。PerlMySQL のインターフェースには、少なくとも DBI モジュールが必要です。ディストリビューションに Perl モジュールが含まれていない場合、CPAN を使って Perl モジュールを入手/インストールするのが最も簡単です。perl
-MCPAN -e shell
cpan> install DBI
cpan> quit

CPANは、必要なモジュールをインストールするように促します。これもroot権限で実行してください。Ntopの出力は以下のようになります。UPDATE
IPtraffic SET TCPSentLocally = 0, TCPSentRemotely = 0, TCPrcvdLocally = 0, TCPrcvdFromRemote = 0, UDPSentLocally = 384, UDPSentRemotely = 0, UDPrcvdLocally = 358, UDPrcvdFromRemote = 0, ICMPsent = 0, ICMPrcvd = 0, OSPFsent = 0, OSPFrcvd = 0, IGMPsent = 0, IGMPrcvd = 0 WHERE IPaddress = '192.168.192.90'

UPDATE 文は、MySQL データベースのデータがネットワークトラフィック情報で更新されていることを示しています。MySQL データベースはシンプルで、データを保持する 5 つのテーブルで構成されており、その内容は名前から容易に理解できます。bash
-2.03$ mysql -p NTOP
Enter password:
mysql> show tables;
+——————-+
| Tables_in_NTOP |
+——————-+
| Hosts |
| IPtraffic |
| NameMapper |
| NonIPTraffic |
| TCPsessions |
+——————-+
5 rows in set (0.00 sec)

MySQL 内からデータを表示するには、次のような SELECT ステートメントを使用します:
mysql> SELECT * from Hosts;

Ntopシェルだけを使用するには、intopを実行します:
bash-2.03$ sudo intop -i eth0
パスワード:
lt-intop@eth0> top

これにより、図 Bに示すように、ネットワーク トラフィックが表示される点を除けば、おなじみの UNIX topスタイルのリストが表示されます。

図B
Ntop intop —おなじみのUNIXスタイルのリスト

これで完了です。q と入力するとトップリストが終了し、quitと入力すると Ntop シェルが終了します。他にも検討できるオプションはいくつかありますが、ここでは Ntop データを活用するためのスクリプトのコンセプトの適用に焦点を当てます。

Ntopデータの活用cronから実行し、管理者にメールで送信できる
スクリプトを使ってNtopデータのサブセットを収集する方法を見てみましょう。ntop /www/Perl/dumpFlat.plスクリプトは、Perl APIを使って実行中のNtopセッションにアクセスし、1分ごとにデータの区切り文字付きASCIIダンプを実行するシンプルな例です。このプログラムを調べることで、独自の目的に合わせてNtopとインターフェースする方法がよくわかるでしょう。use LWP::Simple; $ntopHost = “localhost”; $ntopPort = 3000; $URL = “http://”.$ntopHost.”:”.$ntopPort.”/dumpData.html?language=perl”;



最初の数行はコードのセットアップで、libwww-perlモジュールを呼び出し、ホストと標準Ntopポート3000の変数を定義しています。libwww -perlがインストールされていない場合は、ディストリビューションまたはCPAN (LWP)からインストールする必要があります。$URL変数はNtopへの呼び出しを定義しており、Ntopは以下の呼び出しを理解できます。http
://<ntop host>:<ntop port>/dumpData.html?language=<perl|php>
http://<ntop host>:<ntop port>/dumpTrafficData.html?language=<perl|php>

これらの通話の内訳は次のとおりです。

  • · language=は PHP または Perl のいずれかです。
  • ·         dumpData は、アクティブなホストに関する情報を含む%hash配列を定義します。
  • ·         dumpTrafficData は、アクティブなネットワーク インターフェイスに関する情報を含む%interfaces配列を定義します。

どちらもデータの配列を返し、それを必要に応じて解析・操作できます。上記のURLにlanguage=オプションを指定せずにアクセスした場合、結果はあまり役に立ちません。例えば、以下の呼び出しを行うと、図Cのような結果が表示されます:
lynx http://localhost:3000/dumpData.html

図C
Ntopデータダンプ

この呼び出しにより、図 Dに示すような結果が返されます:
lynx http://localhost:3000/dumpTrafficData.html

図D
Ntopトラフィックデータ

language=オプションを使用すると、もう少し便利な機能が表示されます。例えば、次の呼び出しは図Eに示す結果を生成します:
lynx http://localhost:3000/dumpData.html?language=perl

図E
Perl による Ntop データダンプ

この呼び出しにより、図 Fに示す結果が生成されます:
lynx http://localhost:3000/dumpTrafficData.html?language=perl

図F
Perl による Ntop トラフィックデータ

この時点で必要なのは、ハッシュ配列を操作して、必要な情報を表示またはログに記録することだけです。簡単な例として、ローカルネットワークのwwwトラフィックを確認したいとします。データを取得し、ハッシュテーブルにデータを入力し、ローカルサブネットのデータをフォーマットして表示します。リストAのサンプルの@flatkeys配列を見ると、ハッシュテーブル内の様々なキーが検索に使用できることがわかります。

このコンセプトを応用すれば、コマンドラインで$mynetと $ protocolを渡すだけで、任意のサブネットまたはプロトコルを表示できます。また、Ntopを毎日再起動して日付別にデータを収集し、マシンごとに日次ログを記録することもできます。

強力なツール
ご覧のとおり、Ntopは強力で柔軟なプログラムです。単体でも多くの機能を備えているだけでなく、データベースストレージとシンプルなスクリプトインターフェースを統合することで、ネットワーク分析を提供するためのさまざまな可能性を広げます。

Tagged: