Pandora FMS はリアルタイムでネットワークを分析するために、Pandora NTA と Netflow の 2つの異なるシステムを使用します。どちらのシステムもイーサネットを連続的に リスニング し、トラフィックを分析して統計を生成するという同じ手法を用います。どちらの場合も、何らかの方法でネットワークトラフィックを “傍受” してそれを分析するプローブに送信し、その結果を Pandora FMS に送信することが必要です。
ネットワークトラフィックを傍受して分析できるようにするには、ネットワークのキャプチャポイントを適切に判断する必要があるため、そのネットワークに物理的に確認するか、少なくともそのトポロジを理解する必要があります。たとえば、ルータまたはローカルAPのネットワークトラフィックをキャプチャすることは、ルータに到達する前のサーバのすべてのネットワークトラフィックをキャプチャするのとは同じではありません。
トラフィックをキャプチャするには、ポートミラーリングを使用して、スイッチのあるポートから別のポートにトラフィックを再送信します。すべてのネットワークデバイスが対応しているわけではありません(中価格帯以上のみ)。いくつかの商用ファイアーウォールでもポートミラーはできます。これはトラフィックを傍受する最も簡単な方法であり、追加のハードウェアを必要としません。すべてのトラフィックを特定のポートに送信するので、そのポートはネットワークアナライザ(netflow probe)を直接接続します。
ハイエンドスイッチやファイアウォールでは監視が容易になります。
それは、これらのデバイスが、個別のプローブを使用せずに、ネットワークフロー統計情報を Pandora FMS の Netflow コレクターに直接送信するためです。
ハードウェアの機能を調べて、Netflow を有効にし、フローを独立したNetflow コレクター(この場合は Pandora FMS Netflow コレクター)に送信できるかどうかを確認する必要があります。
バージョン 5.0 の Pandora FMS から、NetFlow プロトコルを使って IP 通信をモニターできます。通信のパターンおよび全体のデータを見ることができ、とても便利です。
Netflow は、Cisco Systems により開発された IP 通信の情報を収集するためのネットワークプロトコルです。Netflow はネットワークトラフィックモニタリングの業界標準になっており、現在では Cisco IOS および NXOS、Juniper デバイス、Enterasys Switches、そして Linux, FreeBSD, NetBSD, OpenBSD といった OS など複数のプラットフォームでサポートされています。
Netflow に関する詳細は、我々の blog https://blog.pandorafms.org/what-is-netflow/ を参照してください。
Netflow に対応したデバイス(netflowプローブ)は、情報の小さなかたまりで構成される netflow レコードを生成します。それは中央デバイスまたは netflow サーバ(netflowコレクタ)へ送信され、情報が保存、処理されます。
データは、UDP または SCTP にて Netflow プロトコルにより送信されます。netflow レコードは小さなパケットで、流れている全通信内容ではなく、接続に関する統計情報のみを含んでいます。
オリジナルの仕様から異なり追加情報を含んだいくつかの Netflow 実装がありますが、ほとんどの場合少なくとも次の情報を含んでいます。 Netflow はさまざまな方法で説明されていますが、Cisco の従来の定義では 7要素キーを使用しています。フローは、次の 7つの値を共有する一方向のパケットシーケンスとして定義されています。
いくつかのベンダでは、異なる名前で似たようなプロトコルを定義していますが、目的は同じです。
Netflow コレクタは、ルータやスイッチから送られた全ての Netflow 情報を収集するためにネットワーク上に置かれたデバイス(PCやサーバ)です。
Netflow サーバは、データを受け取り保存するために必要です。Pandora FMS は、この目的に nfcapd を利用しています。Pandora FMS が Netflow データを処理できるようにするには、これをインストールする必要があります。Pandora FMS は、必要なときに自動的にこのサーバを起動・停止します。
プローブは、通常 Netflow に対応したルータで、Netflow データを Netflow コレクタ (我々の場合、nfcapd が動いている Pandora FMS サーバです) に送信するように設定されたものです。
我々の blog に、RaspBerry Pi を使った Netflow プローブの作り方を載せています。 https://pandorafms.com/blog/netflow-probe-using-raspberry/ を参照ください。
Pandora FMS は、全ての netflow 通信を処理するためにオープンソースのツールである nfcapd (nfdump パッケージに含まれています) を利用します。このデーモンは、Pandora FMS サーバにより自動的に起動されます。このシステムは、データを特定の場所のバイナリファイルに保存します。Netflow を使うには、nfcapd をインストールする必要があります。
デーモン nfcapd のデフォルトの待ち受けポートは 9995/UDP
です。ファイアーウォールがある場合は、このポートを開ける必要があることに注意してください。
nfcapd は、手動でインストールする必要があります。Pandora FMS 自身は nfcapd をインストールしません。インストール方法の詳細は、nfcapd プロジェクトの公式ページを参照してください。
Pandora FMS はデフォルトで、Netflow データを保存するのに /var/spool/pandora/data_in/netflow ディレクトリを利用します。Pandora FMS サーバによって起動されるときに、nfcapd にこのディレクトリが指定されます。何を行っているかがわからない場合は、変更しないでください。
Pandora FMS では、Netflow データを処理するのに nfdump バージョン 1.6.8p1 が必要です。
'nfcapd' が正しくインストールできたか確認するには、以下のようにコマンドを実行してプロセスを起動します。
nfcapd -l /var/spool/pandora/data_in/netflow -D
すべて正しく動作していれば、以下のような出力が見られます。
Add extension: 2 byte input/output interface index Add extension: 4 byte input/output interface index Add extension: 2 byte src/dst AS number Add extension: 4 byte src/dst AS number Add extension: 4 byte output bytes Add extension: 8 byte output bytes Add extension: NSEL Common block Add extension: NSEL xlate ports Add extension: NSEL xlate IPv4 addr Add extension: NSEL xlate IPv6 addr Add extension: NSEL ACL ingress/egress acl ID Add extension: NSEL username Add extension: NSEL max username Add extension: NEL Common block Bound to IPv4 host/IP: any, Port: 9995 Startup. Init IPFIX: Max number of IPFIX tags: 62
Pandora FMS コンソール(具体的には、それを実行する Web サーバ)がデータにアクセスできる必要があることに注意してください。 この例では、'/var/spool/pandora/data_in/netflow' です。
Netflow に対応したルータが無く、Linux サーバをルータとして利用している場合は、netflow 情報を Netflow サーバへ送信するソフトウエアの Netflow プローブをインストールできます。
fprobe がトラフィックを取得し Netflow サーバへ送信します。インターフェイスを通過するすべてのトラフィックから、Netflow トラフィックを生成できます。
CentOS 7:
rpm パッケージをダウンロードおよびインストールするには、以下のコマンドを用います。
wget http://repo.iotti.biz/CentOS/7/x86_64/fprobe-1.1-2.el7.lux.x86_64.rpm yum install fprobe-1.1-2.el7.lux.x86_64.rpm
たとえば、このコマンドを実行すると、すべての eth0
インターフェイストラフィックが IP アドレス 192.168.70.185
のポート 9995
で待ち受けている Netflow コレクターに送信されます。
/usr/sbin/fprobe -i eth0 -fip 192.168.70.185:9995
トラフィックが生成されたら、次のコマンドでトラフィックの状態を見る事ができます。
nfdump -R /home/netflow_data/
次のような情報が表示されます。
Aggregated flows 1286 Top 10 flows ordered by packets: Date flow start Duration Proto Src IP Addr:Port Dst IP Addr:Port Packets Bytes Flows 2011-12-22 20:41:35.697 901.035 TCP 192.168.60.181:50935 -> 192.168.50.2:22 2105 167388 4 2011-12-22 20:41:35.702 900.874 TCP 192.168.50.2:22 -> 192.168.60.181:50935 1275 202984 4 2011-12-22 20:48:15.057 1.347 TCP 157.88.36.34:80 -> 192.168.50.15:40044 496 737160 1 2011-12-22 20:48:14.742 1.790 TCP 91.121.124.139:80 -> 192.168.50.15:60101 409 607356 1 2011-12-22 20:46:02.791 76.616 TCP 192.168.50.15:80 -> 192.168.60.181:40500 370 477945 1 2011-12-22 20:48:15.015 1.389 TCP 192.168.50.15:40044 -> 157.88.36.34:80 363 22496 1 2011-12-22 20:46:02.791 76.616 TCP 192.168.60.181:40500 -> 192.168.50.15:80 303 24309 1 2011-12-22 20:48:14.689 1.843 TCP 192.168.50.15:60101 -> 91.121.124.139:80 255 13083 1 2011-12-22 20:48:14.665 1.249 TCP 178.32.239.141:80 -> 192.168.50.15:38476 227 335812 1 2011-12-22 20:48:21.350 0.713 TCP 137.205.124.72:80 -> 192.168.50.15:47551 224 330191 1 Top 10 flows ordered by bytes: Date flow start Duration Proto Src IP Addr:Port Dst IP Addr:Port Packets Bytes Flows 2011-12-22 20:48:15.057 1.347 TCP 157.88.36.34:80 -> 192.168.50.15:40044 496 737160 1 2011-12-22 20:48:14.742 1.790 TCP 91.121.124.139:80 -> 192.168.50.15:60101 409 607356 1 2011-12-22 20:46:02.791 76.616 TCP 192.168.50.15:80 -> 192.168.60.181:40500 370 477945 1 2011-12-22 20:48:14.665 1.249 TCP 178.32.239.141:80 -> 192.168.50.15:38476 227 335812 1 2011-12-22 20:48:21.350 0.713 TCP 137.205.124.72:80 -> 192.168.50.15:47551 224 330191 1 2011-12-22 20:48:15.313 1.603 TCP 89.102.0.150:80 -> 192.168.50.15:52019 212 313432 1 2011-12-22 20:48:14.996 1.433 TCP 212.219.56.138:80 -> 192.168.50.15:36940 191 281104 1 2011-12-22 20:51:12.325 46.928 TCP 192.168.50.15:80 -> 192.168.60.181:40512 201 245118 1 2011-12-22 20:52:05.935 34.781 TCP 192.168.50.15:80 -> 192.168.60.181:40524 167 211608 1 2011-12-22 20:41:35.702 900.874 TCP 192.168.50.2:22 -> 192.168.60.181:50935 1275 202984 4 Summary: total flows: 1458, total bytes: 5.9 M, total packets: 15421, avg bps: 49574, avg pps: 15, avg bpp: 399 Time window: 2011-12-22 20:40:46 - 2011-12-22 20:57:21 Total flows processed: 1458, Records skipped: 0, Bytes read: 75864 Sys: 0.006s flows/second: 208345.2 Wall: 0.006s flows/second: 221177.2
ここまでの動作確認ができたら、次はそれを利用できるようにするための Pandora FMS の設定です。
実験的
pmacct プローブは、IPv4 および IPv6 を介して NetFlow v1/v5/v7/v8/v9、sFlow v2/v4/v5 で動作する機能があります。
ソースコードは以下にあります。
Rocky Linux 8
依存ファイルの管理者権限でのインストール。
<code> dnf config-manager --set-enabled powertools dnf groupinstall 'Development Tools' dnf install libpcap libpcap-devel
pmacct のソースをダウンロード(wget の代わりに curl も使えます)してビルドします。
cd /tmp wget -O pmacct-1.7.7.tar.gz "https://github.com/pmacct/pmacct/releases/download/v1.7.7/pmacct-1.7.7.tar.gz" tar xvzf pmacct-1.7.7.tar.gz cd pmacct-1.7.7 ./autogen.sh ./configure make && make install
デーモンモードで、pmacct を NetFlow プローブとして起動します。
例では、すべての eth0
インターフェイストラフィックが、IP アドレス 192.168.70.185
のポート 9995
で待ち受けている NetFlow コレクタに送信されます。
cat> pmacctd_probe.conf <<EOF daemonize: true pcap_interface: eth0 aggregate: src_host, dst_host, src_port, dst_port, proto, tos plugins: nfprobe nfprobe_receiver: 192.168.70.185:9995 nfprobe_version: 9 EOF
# pmacctd -f pmacctd_probe.conf
Pandora FMS は、補助システムとしての Netflow と連動します。つまり、データベースに NetFlow データを保存しません。 Pandora FMS は、その情報をオンデマンドでレポートとして表示します。
Pandora FMS は、フィルタを使って Netflow データを処理します。フィルタは、通信パターンにマッチするルールのセットです。ルールは、'all the traffic from 192.168.70.0/24 network'(サブネット 192.168.70.0/24 からの通信すべて) といったように簡単です。また、pcap のフィルタ書式も利用できます。
フィルタを作成したら、フィルタにマッチした情報をどのように表示するか(グラフや表)および時間範囲をレポートで定義する必要があります。Netflow レポートは、他の Pandora FMS レポートと同様にオンデマンドでのアクセスです。
Netflow レポートは、“レポートタイプ” として Pandora FMS カスタムレポートに現れます。Pandora FMS の “通常” のレポートへ追加することができます。
また、通信の分析や素ぽーっとでルールを作成したり修正するためのライブ Netflow ビューワがあります。これは、問題を調査したり、保存しない一時的なグラフを表示するのにするのにとても便利です。
Netflow データが保存されるハードディスクアクセス速度は、通常、パフォーマンスに関わる重要な要素です。
まず最初に、Netflow を 操作(Operation) および システム管理(Administration) メニューからアクセスできるようにする必要があります。設定画面(管理メニュー)に、Netflow を有効化・無効化するオプションがあります。
バージョン 769 およびそれ以前:
バージョン 770 およびそれ以降:
有効化すると、新たに Netflow 設定オプションが表示されます。
バージョン 769 およびそれ以前:
バージョン 770 およびそれ以降:
ここでは、nfcapd デーモンが Pandora FMS サーバと同時に起動するように正しく設定する必要があります。
netflow
です。(一般設定を参照)バージョン 770 以降
デーモン間隔(Daemon interval) のデフォルト値を変更する必要がある場合は、次の手順を実行する必要があります。
netflow_interval
トークンの値を秒単位で変更します。たとえば、300 秒に変更するには、UPDATE tconfig SET value = '300' where token = 'netflow_interval';
です。rm -i /var/spool/pandora/data_in/netflow
で削除します。netflow 設定を有効にした場合、nfcapd サーバを起動するために Pandora FMS サーバを再起動する必要があります。このサーバは、システムからアクセスできるパスにインストールされている必要があります。動作に関して疑問点があればサーバログを確認してください。
バージョン 769 およびそれ以前: このサーバは、Pandora FMS サーバではないため、サーバ表示には現れません。バージョン 770 以降では、一覧に表示されます。
Pandora FMS サーバ以外のデバイスに NetFlow データを保存する場合(nfcapd インストール手順 および 分散設定)は、/usr/bin/nfexpire
バイナリを該当デバイスへコピーし、次のエントリを /etc/crontab
に追加する必要があります。
0 * * * * root yes 2>/dev/null | /usr/bin/nfexpire -e "/var/spool/pandora/data_in/netflow" -t X_days d
ここで、x_dias
は、デバイスに残す NetFlow データの最大日数です(Pandora FMS コンソールの設定とは関係ありません)。
リソース(Resources) > NetFlow フィルタ(NetFlow Filters) をクリックすることにより、作成および編集ができます。
ここには、変更または削除できる作成済みのフィルタの一覧が表示されます。
“Netflow ライブビュー” からも直接フィルタを作成でき、アクティブフィルタを新規保存することもできます。 Netflow フィルタには “基本” または “高度” があります。違いは、前者はフィルタリングフィールド(送信元IP、送信先IP、送信元ポート、送信先ポート)を固定し、高度な方は pcap (ネットワークトラフィックのフィルタリングを標準入力にて)および関連ツールを用います。
Netflow フィルターの基本的な編集画面:
この機能における設定可能な NetFlow フィルタは次のとおりです。
基本ウェブ通信フィルタの例:
高度なイントラネット通信フィルタの例:
以下に、他のフィルタ例を示します。
host 192.168.0.1
dst host 192.168.0.1
src net 192.168.0.0/24
(port 80) or (port 443)
port not 53
(port 22) and (dst host 192.168.0.1)
Netflow レポートは、Pandora FMS のレポート機能に統合されています。
新たにレポートアイテムを作成するには、netflow レポートアイテムの一つを選択します。
そして、設定します。次のオプションがあります。
netflow レポートのアイテムは、3種類あります。
この表示は、さまざまな検索フィルタに基づいて取得されたデータの履歴を調べるために使用します。フィルタを使用して、さまざまな異なる情報を表示することができます。データの視覚化をするには、表示された情報をグループ化する方法と、この情報を取得する方法があります。
フィルタした情報は、モニタリング(Monitoring) → ネットワーク(Network) → Netflow ライブビュー(Netflow Live View) から表示できます。このツールで、フィルタの変更のプレビューおよび、好みの出力結果を保存できます。設定したフィルタをロードし編集することもできます。
ライブビューオプションの設定方法については、レポート と フィルタ を参照してください。
情報を取得する方法の場合、発信元IP、宛先IP、送信元ポート、宛先ポートから行います。たとえば、受信先 IP 情報を表示するように選択した場合、受信先へのトラフィックが最も多い IP から最も低い IP の順に表示されます。 宛先ポートを選択して、プロトコルごとにネットワークの利用量を見る場合も同じことが言えます。
可能な表示方法は以下の通りです。
これは、OUM 733 から追加された機能で、この先も改善の予定です。ノード間のトラフィックに基づいて動的なネットワークマップを作成します。異なるアドレス間の関係(接続)および、(データ転送量による)トップ N を表示します。
コンソールから独立したホスト上に Netflow データを収集する pandora ノードを配置することも可能です。大量の Netflow データがある環境では、高速ディスクと 2コア以上の高速 CPU を備えたサーバに配置することをお勧めします。 Pandora コンソールがNetflow データを抽出するためには、以下の手順に従ってシステムのデフォルト設定を変更する必要があります。
その設定には、次の手順を実行する必要があります。
apache ユーザを有効化します。それには、/etc/passwd ファイル内の apache ユーザを次のように編集します。
apache:x:48:48:Apache:/var/www:/bin/bash
/var/www ディレクトリ内に .ssh ディレクトリを作成し、正しいパーミッションを設定します。
#mkdir /var/www/.ssh #chown apache:apache /var/www/.ssh
ssh 鍵を作成し、それを Netflow トラフィックを収集するホストにコピーします。
#su apache bash-4.2$ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/var/www/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /var/www/.ssh/id_rsa. Your public key has been saved in /var/www/.ssh/id_rsa.pub. The key fingerprint is: SHA256:vYvl5V00E4faa14zN08ARzGUQ9IfAQJnMzkaqLAGRHI apache@<server> The key's randomart image is: +---[RSA 2048]----+ |+oE ...*o=B+.| |.o . . .oo+o++ | | . o . o o o+o| | o . o = +| | . S . . oo.| | . +o| | o . o+=| | + + + +*| | . o . o .| +----[SHA256]-----+ bash-4.2$ ssh-copy-id root@<netflow_server>
コピーしたら、パスワード無しで apache ユーザがサーバにアクセスできるかどうかを確認します。
bash-4.2$ ssh usuario@<netflow_server>
#!/bin/bash NFDUMP_PARAMS=$(sed 's/(\(.*\))/\"\(\1\)\"/' <<< "$@"); ssh usuario@<netflow_server> "/usr/bin/nfdump $NFDUMP_PARAMS"
スクリプトに実行パーミッションを与えます。
chmod 755 /usr/bin/nfdump
以下のようにスクリプトを実行してみます。
/usr/bin/nfdump -V
つぎのような応答があります。
nfdump: Version: 1.6.13
バージョン NG 770 以降
Pandora FMS バージョン 770 以降では、sFlow のサポートが含まれています。sFlow は、データネットワークトラフィック用のハードウェアにおける業界標準のネットワークプロトコルです。
Pandora FMS での sFlow の動作は NetFlow で確立しているものと同様 です。 両方のプロトコルが有効な場合、データはグループ化されます。いずれの場合も、左側のサイドバーの 操作(Operation) メニューにアクセスし、ネットワーク(Network) をクリックすると、常に表示されます。
バージョン NG 775 以降
操作 と 管理 メニューからアクセスできるように、sFlow を有効化する必要があります。 NetFlow 設定セクションに、sFlow をグローバルに有効または無効にするオプションがあります。
sFlow 専用の新しいタブが有効になります。