目次

Netflow および sFlow によるネットワークトラフィック監視

Pandora FMS ドキュメント一覧に戻る

リアルタイムネットワーク分析の概要

Pandora FMS はリアルタイムでネットワークを分析するために、Pandora NTA と Netflow の 2つの異なるシステムを使用します。どちらのシステムもイーサネットを連続的に リスニング し、トラフィックを分析して統計を生成するという同じ手法を用います。どちらの場合も、何らかの方法でネットワークトラフィックを “傍受” してそれを分析するプローブに送信し、その結果を Pandora FMS に送信することが必要です。

ネットワークトラフィックを傍受して分析できるようにするには、ネットワークのキャプチャポイントを適切に判断する必要があるため、そのネットワークに物理的に確認するか、少なくともそのトポロジを理解する必要があります。たとえば、ルータまたはローカルAPのネットワークトラフィックをキャプチャすることは、ルータに到達する前のサーバのすべてのネットワークトラフィックをキャプチャするのとは同じではありません。

トラフィックをキャプチャするには、ポートミラーリングを使用して、スイッチのあるポートから別のポートにトラフィックを再送信します。すべてのネットワークデバイスが対応しているわけではありません(中価格帯以上のみ)。いくつかの商用ファイアーウォールでもポートミラーはできます。これはトラフィックを傍受する最も簡単な方法であり、追加のハードウェアを必要としません。すべてのトラフィックを特定のポートに送信するので、そのポートはネットワークアナライザ(netflow probe)を直接接続します。

ハイエンドスイッチやファイアウォールでは監視が容易になります。

それは、これらのデバイスが、個別のプローブを使用せずに、ネットワークフロー統計情報を Pandora FMS の Netflow コレクターに直接送信するためです。

ハードウェアの機能を調べて、Netflow を有効にし、フローを独立したNetflow コレクター(この場合は Pandora FMS Netflow コレクター)に送信できるかどうかを確認する必要があります。

NetFlow ネットワーク監視

Pandora FMS は、NetFlow プロトコルを使用して IP トラフィックを監視できます。

NetFlow® は Cisco Systems® によって開発されたネットワーク プロトコルで、現在 Cisco IOS® および NXOS® に加えて、Juniper®、Enterasys Switches® などのメーカーのデバイスや Linux®、FreeBSD®、NetBSD®、OpenBSD® などのオペレーティングシステムなど、いくつかのプラットフォームでサポートされています。

NetFlow

Netflow に対応したデバイス(netflowプローブ)は、情報の小さなかたまりで構成される netflow レコードを生成します。それは中央デバイスまたは netflow サーバ(netflowコレクタ)へ送信され、情報が保存、処理されます。

データは、UDP または SCTP にて Netflow プロトコルにより送信されます。netflow レコードは小さなパケットで、流れている全通信内容ではなく、接続に関する統計情報のみを含んでいます。

オリジナルの仕様から異なり追加情報を含んだいくつかの Netflow 実装がありますが、ほとんどの場合少なくとも次の情報を含んでいます。 Netflow はさまざまな方法で説明されていますが、Cisco の従来の定義では 7要素キーを使用しています。フローは、次の 7つの値を共有する一方向のパケットシーケンスとして定義されています。

いくつかのベンダでは、異なる名前で似たようなプロトコルを定義していますが、目的は同じです。

Netflow コレクタ

Netflow コレクタは、ルータやスイッチから送られた全ての Netflow 情報を収集するためにネットワーク上に置かれたデバイス(PCやサーバ)です。

Netflow サーバは、データを受け取り保存するために必要です。Pandora FMS は、この目的に nfcapd を利用しています。Pandora FMS が Netflow データを処理できるようにするには、これをインストールする必要があります。Pandora FMS は、必要なときに自動的にこのサーバを起動・停止します。

Netflow プローブ

プローブ (Raspberry など) は通常、NetFlow が有効化され、設定され、情報を NetFlow コレクター (この場合は nfcapd デーモンが有効な Pandora FMS サーバです) に送信するルータです。

インストールと必要要件

Pandora FMS は、全ての netflow 通信を処理するためにオープンソースのツールである nfcapd (nfdump パッケージに含まれています) を利用します。このデーモンは、Pandora FMS サーバにより自動的に起動されます。このシステムは、データを特定の場所のバイナリファイルに保存します。Netflow を使うには、nfcapd をインストールする必要があります。

デーモン nfcapd のデフォルトの待ち受けポートは 9995/UDP です。ファイアーウォールがある場合は、このポートを開ける必要があることに注意してください。

nfcapd のインストール

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

すべて正しく動作していれば、以下のような出力が見られます。

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 プローブのインストール

Netflow に対応したルータが無く、Linux サーバをルータとして利用している場合は、netflow 情報を Netflow サーバへ送信するソフトウエアの Netflow プローブをインストールできます。

fprobe のインストール

fprobe がトラフィックを取得し Netflow サーバへ送信します。インターフェイスを通過するすべてのトラフィックから、Netflow トラフィックを生成できます。

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 192.168.70.185:9995

トラフィックが生成されたら、次のコマンドでトラフィックの状態を見る事ができます。

nfdump -R /var/spool/pandora/data_in/netflow

次のような情報が表示されます。

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 のインストール

実験的

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 の動作

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 を有効化・無効化するオプションがあります。

有効化すると、新たに Netflow 設定オプションが表示されます。

ここでは、nfcapd デーモンが Pandora FMS サーバと同時に起動するように正しく設定する必要があります。

コンソールで NetFlow を設定したら、Pandora FMS サーバを再起動して、nfcapd サーバを起動します。 このサーバは、実行する前に適切にインストールする必要があります。 疑わしい場合はサーバのログを確認してください。

NetFlow データを PFMS サーバ以外のデバイス (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 フィルタには “基本(basic)” または “高度(advanced)” があります。 違いは、前者には固定のフィルタリングフィールド (ソース IP、ターゲット IP、ソースポート、ターゲットポート) があるのに対し、高度なフィルタリングフィールドは pcap 式 (ネットワークトラフィックのフィルタリング式の標準) によって定義され、あらゆる種類を使用することができます。

NetFlow 監視の有効化

バージョン 770 以降

フィルターを作成するときに、Enable NetFlow monitoring トークン を有効にすることでフィルタ監視を有効にできます。

パラメータは次の通りです。

レポート

Netflow レポートは、Pandora FMS のレポート機能に統合されています。

新たにレポートアイテムを作成するには、netflow レポートアイテムの一つを選択します。

そして、設定します。次のオプションがあります。

netflow レポートのアイテムは、3種類あります。

Netflow リアルタイム表示

この表示は、さまざまな検索フィルタに基づいて取得されたデータの履歴を調べるために使用します。フィルタを使用して、さまざまな異なる情報を表示することができます。データの視覚化をするには、表示された情報をグループ化する方法と、この情報を取得する方法があります。

フィルタした情報は、操作(Operation)モニタリング(Monitoring)ネットワーク(Network)Netflow ライブビュー(Netflow Live View) から表示できます。このツールで、フィルタの変更のプレビューおよび、好みの出力結果を保存できます。設定したフィルタをロードし編集することもできます。

情報を取得する方法は、送信元 IP アドレス、宛先 IP アドレス、送信元ポート、または宛先ポートです。 たとえば、宛先 IP アドレス情報を表示することを選択した場合、情報は、宛先へのトラフィックが最も多い IP アドレスによって、最高から最低の順に並べ替えられて表示されます。 宛先ポートを選択して、プロトコルごとのネットワークの消費量を見る場合も同じことが行われます。

可能な表示方法は以下の通りです。

ネットワークトラフィックマップ

これにより、ノード間のトラフィックに基づいて動的なネットワーク マップを作成できます。 異なるアドレス間の関係 (接続) が表示され、最も重要な N 個の接続が (接続間で転送されるデータのサイズごとに) 表示されます。

network_usage_map.jpg

分散設定

コンソールから独立したホスト上に 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

sFlow でのネットワーク監視

バージョン NG 770 以降

Pandora FMS バージョン 770 以降では、sFlow のサポートが含まれています。sFlow は、データネットワークトラフィック用のハードウェアにおける業界標準のネットワークプロトコルです。

Pandora FMS での sFlow の動作は NetFlow で確立しているものと同様 です。 両方のプロトコルが有効な場合、データはグループ化されます。いずれの場合も、左側のサイドバーの 操作(Operation) メニューにアクセスし、ネットワーク(Network) をクリックすると、常に表示されます。

sFlow 設定

バージョン NG 775 以降

操作管理 メニューからアクセスできるように、sFlow を有効化する必要があります。 NetFlow 設定セクションに、sFlow をグローバルに有効または無効にするオプションがあります。

sFlow 専用の新しいタブが有効になります。

Pandora FMS ドキュメント一覧に戻る