2020年4月20日月曜日

ビギナーガイド ntopのツールを理解しよう!

こんにちは! ジュピターテクノロジーでは、ネットワークモニタリング、トラフィックの可視化を実現する製品開発に力をいれてまいりました。
そして、その活動の成果であるntop社の製品をリリースします。
本ブログ記事では、ntop製品を活用したネットワークモニタリングのファーストステップをご案内します。

                                                                  ntopng v4参考画面

本ブログ記事は、ntop社のブログ「Network Monitoring 101: A Beginner’s Guide to Understanding ntop Tools」を意訳してご紹介しております。

実際のモニタリングを開始する前に、以下の問いをご自身の環境をイメージして考えてみてください。
  • ネットワーク全体、もしくは特定セグメントのモニタが必要かどうか
  • ネットワークフローエクスポートの能力があるネットワーク機器を利用しているかどうか(例: NetFlow/sFlowデバイス)
  • ネットワーク機器にポートミラー設定ができるか?もしくはTAPの導入が可能か
  • 対象となるトラフィックを可視化するために、どこにネットワークモニタリングのアプライアンスを設置するか
  • IP/MACアドレスを隠す可能性があるNAT/ルーターを設置しているか?該当のNAT/ルーターの前段にネットワークモニタリングアプライアンスを設置できるか
  • L7アプリケーショントラフィック分析を必要とするか?もしくは、ポートベースの分析で良いか
本記事では、共通のネットワーク分析要件を満たすためにntopng、オプションでnProbeを配置する方法をご紹介します。

nProbeは非常に強力なプローブです。
NetFlow,sflowやIPFIXといった様々な標準フローフォーマットをサポートします。nProbe自身ではGUIは提供しません。ntopngと連携した時に、ntopng GUIでトラフィックをグラフィカル表示することができます。

ntopngは、多機能なネットワークモニタリングツールです。
正確なモニタリングデータにアクセスするのにGUIを提供します。
アクティブホスト、フロー、IPアドレス、MACアドレス、自律システムといった詳細情報を提供します。
ntopngは、スループット、ネットワーク、アプリケーション遅延、RTT、TCP統計(再送、期限切れパケット、パケットロス)や転送されたバイト、パケットをモニタ、レポートするのに利用します。

ntopngで最もよく利用されるケースをレビューしてみましょう。

NetFlow/sflowトラフィックのモニタリング

ネットワーク機器がNetFlow/sflowエクスポートをサポートしている場合、ntopngが稼働するリモートサーバーにフローデータを送信することができます。
この設定は、L7アプリケーション分析やパケットごとのリアルタイム分析をすることは出来ません。

また、フローコレクターとntopng間にnProbeをセットアップする必要があります。
この場合のntopngダッシュボード表示は、nProbeとネットワーク機器のエクスポートタイムアウトがあるためリアルタイムとはなりません。

この例では、NetFlowをサポートするルーターがあります。
ルーターにフローをエクスポートするように設定する必要があります。
次の例では、"2055"ポートにNetFlowを送信する設定をします。

以下の例では、nProbeがNetFlowを受信するように設定しています。
これは、"/etc/nprobe/nprobe-none.conf"に設定をします:

--zmq="tcp://*:5556"
-T="@NTOPNG@"
-i=none
-n=none
--collector-port=2055

ここでは、ntopngにフローを送信するようにnProbeに設定しています。
このステップは、ntopngが直接NetFlowを受信することができないためです。
つまり、nProbeは通訳者のような役割を果たします。

次にntopngを設定しましょう。
ntopngをインストールし、nProbeからフローを受信するように設定します。
"/etc/ntopng/ntopng.conf"を修正しましょう:

-i="tcp://127.0.0.1:5556"
--local-networks="172.16.1.0/24,172.16.2.0/24"

ここでは、ntopngにローカルネットワークのセグメントを設定しています。
この例では、"172.16.1.0/24"と"172.16.2.0/24"となります。
ntopngは、ローカルネットワークとしてネットワークに所属するホストを定義することができます。
そして、それらの統計データをディスク上に保存します。

設定ファイル編集したら、以下のコマンドの通り有効化し、起動してください。

systemctl enable ntopng
systemctl enable nprobe@none
systemctl restart ntopng
systemctl restart nprobe@none

NetFlowを発呼するルーターがたくさんある場合でも、単一のnProbeインスタンスにフローを送信することができます。
ntopngでは、"Dynamic interfaces Disaggregation"を使って、受信するトラフィックをルーターごとに分けて表示することが可能です。

ミラーポート/TAPのモニタリング

SPANポートを利用したパケットミラーが可能なネットワーク機器を持っている前提で進めます。
ミラーポート/TAPを利用する場合、完全なL7パケット分析を実現し、かつトラフィックのリアルタイム分析が可能となります。

この例で必要なのは、SPANポートに接続したNICから受信できるようntopngを設定するだけです。
ここで利用するNICはIPアドレスを設定せずに、ミラーされたトラフィックの受信のみに使われるようにするのが理想的です。

ntopngセットアップは、非常にシンプルです。
 ntopngに"-i"オプションを利用してSPANポートに接続されるインターフェィスを設定するだけです。
ここでは、そのインターフェィスを"eth1"とし、"/etc/ntopng/ntopng.conf"ファイルは次のように設定します:

-i=eth1
--local-networks="192.168.1.0/24"

上記の設定変更をしたら、ntopngを再起動してください。

多拠点のモニタリング

異なるポイントでトラフィックをキャプチャするためには、ネットワーク内で複数のプローブを配置する必要があります。
ここでは、プローブからすべての情報を収集するのに1台のntopngを使います。
異なる2つのホストでそれぞれnProbeインスタンスを起動することを考えてみましょう。1つ目のIPアドレスは、"192.168.10.10"。もう一つは、"192.168.20.20"とします。ntopngは、IPアドレス"1.2.3.4"で異なるホストで実行されているとします。
プローブは、SPANポートからトラフィックを収集し、それぞれのプローブは、"eth0"インターフェィスにつながれているとします。

最初のnprobe設定は、(ホスト"192.168.10.10上の/etc/nprobe/nprobe-eth0.conf)です:
--zmq="tcp://1.2.3.4:5556"
-T="@NTOPNG@"
-i=eth0

2番目のnprobe設定は、(ホスト"192.168.20.20上の/etc/nprobe/nprobe-eth0.conf)です:
--zmq="tcp://1.2.3.4:5557"
-T="@NTOPNG@"
-i=eth0

ntopng設定ファイル"/etc/ntopng/ntopng.conf"は次の通りです:
-i="tcp://*:5556c"
-i="tcp://*:5557c"
--local-networks="192.168.10.0/24,192.168.20.0/24"

"nprobe@eth0"サービスを2つのプローブでenableして、起動します。
それから、ntopngサービスをenableして起動します。
ntopng GUIは、2つのネットワークインターフェィスが表示されます、それぞれが1つのリモートプローブを表示し、関連するトラフィックを表示します。

一般的なフローコレクターは、ある閾値を超えた時にトラフィック情報を送信するといった動作をし、かつxFlowはポート番号の把握しかできず、L7アプリケーション情報は含まれません。
ntop社の製品であれば、リアルタイムかつL7分析が可能といった特長があります。

本記事で扱っているntop社のntopng™という製品ですが、ご興味のある方は以下のリンクから弊社までお問い合わせください!