目次

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

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

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

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

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

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

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

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

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

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 サーバ(netflowコレクタ)へ送信され、情報が保存、処理されます。

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

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

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

Netflow コレクタ

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

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

Netflow プローブ

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

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

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

fprobe のインストール

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

実験的

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

バージョン 769 およびそれ以前:

Version 769 and earlier

バージョン 770 およびそれ以降:

Version 770 and later

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

バージョン 769 およびそれ以前:

Version 769 and earlier

バージョン 770 およびそれ以降:

Version 770 and later

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

バージョン 770 以降

デーモン間隔(Daemon interval) のデフォルト値を変更する必要がある場合は、次の手順を実行する必要があります。

  • コマンドラインまたは DB インターフェイス を使用して、netflow_interval トークンの値を秒単位で変更します。たとえば、300 秒に変更するには、UPDATE tconfig SET value = '300' where token = 'netflow_interval'; です。
  • ターミナル画面を開き、上記の間隔で生成されたデータを rm -i /var/spool/pandora/data_in/netflow で削除します。
  • Pandora FMS サーバを起動します。

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種類あります。

Netflow リアルタイム表示

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

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

ライブビューオプションの設定方法については、レポートフィルタ を参照してください。

情報を取得する方法の場合、発信元IP、宛先IP、送信元ポート、宛先ポートから行います。たとえば、受信先 IP 情報を表示するように選択した場合、受信先へのトラフィックが最も多い IP から最も低い IP の順に表示されます。 宛先ポートを選択して、プロトコルごとにネットワークの利用量を見る場合も同じことが言えます。

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

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

これは、OUM 733 から追加された機能で、この先も改善の予定です。ノード間のトラフィックに基づいて動的なネットワークマップを作成します。異なるアドレス間の関係(接続)および、(データ転送量による)トップ 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 ドキュメント一覧に戻る