====== Netflow および sFlow によるネットワーク監視 ======
{{indexmenu_n>18}}
[[ja:documentation:pandorafms:start|Pandora FMS ドキュメント一覧に戻る]]
===== リアルタイムネットワーク分析の概要 =====
Pandora FMSは、NetFlow® と sFlow® というツールを使ってネットワークをリアルタイムで分析します。イーサネットを介して継続的に「//リスニング//」を行い、トラフィックを分析して統計情報を生成するという原理に基づいています。
ネットワークトラフィックを傍受して分析するには、ネットワークキャプチャポイントが最も適切な場所である必要があるため、そのネットワークへの物理的なアクセスが必要です。このようなデータをキャプチャするには、「ポートミラー」を使用して、トラフィックをあるスイッチポートから別のポートにリダイレクトする必要があります。すべてのネットワークデバイスがこれに対応しているわけではありません(中級/高級デバイスのみ)。ポートミラーは、一部の商用ファイアウォールデバイスでも実行できます。これはトラフィックを傍受する最も簡単な方法であり、追加のハードウェアは必要ありません。すべてのトラフィックを1つのポートに送信することで、そのポートはネットワークアナライザ(プローブ)に直接接続されます。
これらの高性能スイッチやファイアウォールを使用することで、監視をより容易に行うことができます。これは、これらのデバイスが独立したプローブを必要とせずに、ネットワークフローの統計情報を Pandora FMS コレクターに直接送信するためです。NetFlow や sFlow を有効にして、フローを独立したコレクター(この場合は Pandora FMS コレクター)に送信できるかどうかは、ハードウェア仕様書を参照してください。
===== NetFlow ネットワーク監視 =====
Pandora FMS は、NetFlow プロトコルを使用して IP トラフィックを監視できます。
NetFlow® は Cisco Systems® によって開発されたネットワーク プロトコルで、現在 Cisco IOS® および NXOS® に加えて、Juniper®、Enterasys Switches® などのメーカーのデバイスや Linux®、FreeBSD®、NetBSD®、OpenBSD® などのオペレーティングシステムなど、いくつかのプラットフォームでサポートされています。
==== NetFlow プロトコル ====
NetFlow 対応デバイスは、この機能が有効になると、小さな情報断片からなる「NetFlow レコード」を生成し、中央デバイス(NetFlow サーバまたはコレクター)に送信します。中央デバイスは、デバイス(NetFlow プローブ)から情報を受け取り、それを保存および処理します。
この情報は、UDP または SCTP に基づく NetFlow プロトコルを使用して送信されます。各 NetFlow レコードは、最小限の情報を含む小さなパケットですが、生のトラフィックデータは一切含まれません。つまり、コレクターを通過するトラフィックのペイロードは送信されず、統計データのみが送信されます。
Cisco の従来の定義では、7要素のキーを使用します。
* 発信元 IP アドレス
* 宛先 IP アドレス
* 発信元 UDP または TCP ポート
* 宛先 UDP または TCP ポート
* IP プロトコル
* インタフェース (SNMP ifIndex)
* サービスのタイプ
時が経つにつれ、他のメーカーもネットワーク機器向けに同様のシステムを設計するようになり、名称は異なるものの、目的はほぼ同じです。
* Juniper Networks® の Jflow または cflowd
* 3Com/H3C|HP® の NetStream
* Huawei® の NetStream
* Alcatel Lucent® の Cflowd
* Ericsson® の Rflow
* AppFlow®
* [[#ks3|sFlow®]]
==== Netflow コレクタ ====
Netflow コレクタは、ルータやスイッチから送られた全ての Netflow 情報を収集するためにネットワーク上に置かれたデバイス(PCやサーバ)です。Netflow サーバは、データを受け取り保存するために必要です。
Pandora FMS は、この目的に **nfcapd** を利用しています。Pandora FMS が Netflow データを処理できるようにするには、これをインストールする必要があります。Pandora FMS は、必要なときに自動的にこのサーバを起動・停止します。
==== Netflow プローブ ====
プローブ ([[:ja:documentation:pandorafms:technical_annexes:15_raspberry_monitoring|Raspberry Pi]] など) は通常、NetFlow が有効化され、設定され、情報を NetFlow コレクター (この場合は nfcapd デーモンが有効な Pandora FMS サーバです) に送信するルータです。
==== インストールと必要要件 ====
Pandora FMS は、全ての netflow 通信を処理するためにオープンソースのツールである **nfcapd** (**nfdump** パッケージに含まれています) を利用します。この//デーモン//は、Pandora FMS サーバにより自動的に起動されます。このシステムは、データを特定の場所のバイナリファイルに保存します。Netflow を使うには、**nfcapd** をインストールする必要があります。
**nfcapd** デーモンのデフォルトの待ち受けポートは ''9995/UDP'' です。ファイアーウォールがある場合は、このポートを開ける必要があることに注意してください。
=== nfcapd のインストール ===
nfcapd は、手動でインストールする必要があります。Pandora FMS 自身は nfcapd をインストールしません。インストール方法の詳細は、[[http://nfdump.sourceforge.net|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 に対応したルーターが利用できない場合でも、そのトラフィックが Linux システムを経由する場合は、プローブとして機能し、NetFlow トラフィック情報をコレクターに送信するソフトウェアをインストールできます。
== fprobe のインストール ==
**fprobe** がトラフィックを取得し Netflow サーバへ送信します。インターフェイスを通過するすべてのトラフィックから、Netflow トラフィックを生成できます。
Ubuntu 22 では、次のようにインストールおよび設定します。
sudo apt install fprobe
インストールでは、デフォルトのインターフェースとして ''eth0'' が設定されますが、有効なネットワークインターフェースで設定する必要があります。最近のディストリビューションでは、イーサネットインターフェースは ''enp1s0''、ワイヤレスネットワーク インターフェースは ''wlp2s0'' という名前になっていますが、**ハードウェアによってはこれらの名前が異なる場合があります**。
次に、データを収集するデバイス (この場合は **PFMS サーバ**) の IP アドレスと待ち受けポート (例: ''192.168.70.185:9995'') を確認します。
インストールが完了したら、操作をテストできます。
sudo systemctl status fprobe
そして、次のような応答が返されます。
{{ wiki:sudo_systemctl_status_fprobe.png }}
システムの起動ごとに有効にするには:
sudo systemctl enable fprobe
完全な **fprobe** ヘルプを読むには:
[[https://manpages.ubuntu.com/manpages/resolute/man8/fprobe.8.html]]
トラフィックが生成されると、次のコマンドを使用して、**PFMS サーバ** の NetFlow コレクターでトラフィック統計を表示できます。
nfdump -R /var/spool/pandora/data_in/netflow
== pmacct のインストール ==
実験的
[[http://www.pmacct.net/|pmacct]] プローブは、IPv4 および IPv6 を介して NetFlow v1/v5/v7/v8/v9、sFlow v2/v4/v5 で動作する機能があります。
ソースコードは以下にあります。
[[https://github.com/pmacct/pmacct]]
依存ファイルの管理者権限でのインストール。
Rocky Linux 8
dnf config-manager --set-enabled powertools
dnf groupinstall 'Development Tools'
dnf install libpcap libpcap-devel
Rocky Linux 9
dnf config-manager --set-enabled crb
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 プローブとして起動します。
* pmacct 設定の作成:
例では、すべての ''eth0'' インターフェイストラフィックが、IP アドレス ''192.168.70.185'' のポート ''9995'' で待ち受けている NetFlow コレクタに送信されます。
cat> ~/pmacctd_probe.conf <
* **pmacctd** の起動:
/usr/local/sbin/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** のフィルタ書式も利用できます。
フィルタが定義されると、データの視覚化方法(グラフ、リストなど)と時間間隔を決定するレポートが定義されます。フィルタとレポートを定義することで、その情報は Pandora FMS レポートと同様に定義されたままになり、必要に応じてオンデマンドで使用できます。NetFlow レポートは、Pandora FMS カスタムレポートセクションに「レポートタイプ」として表示されるため、通常の Pandora FMS レポートに組み込むことができます。
一方、トラフィックを分析し、ルールを直接作成できる「//リアルタイム//」表示コンソールも用意されています。これは、問題の調査や、特定のフィルタに該当しない特定のグラフの確認などに役立ちます。
=== 設定 ===
Netflow データが保存されるハードディスクアクセス速度は、通常、パフォーマンスに関わる重要な要素です。
まず、NetFlow を有効にして、操作メニューと管理メニューからアクセスできるようにする必要があります。設定画面には、NetFlow をグローバルに有効または無効にするオプションがあります。
{{ :wiki:pfms-general_setup-netflow_config-general_network_path-801_version.png }}
有効化すると、新たに Netflow 設定オプションが表示されます。
{{ :wiki:pfms-netflow_config-801_version.png }}
ここでは、**nfcapd** デーモンが Pandora FMS サーバと同時に起動するように正しく設定する必要があります。
* **データ保存パス(Data storage path):** Netflow データが保存されるディレクトリです。ディレクトリ名のみを入力します。デフォルトは ''netflow'' です([[:ja:documentation:pandorafms:management_and_operation:12_console_setup#ks1_9|一般設定]]を参照)
* **デーモンバイナリパス(Daemon binary path):** **nfcapd** バイナリのパスです。
* **Nfdump バイナリパス(Nfdump binary path):** **nfdump** バイナリのパスです。
* **Nfexpire バイナリパス(Nfexpire binary path):** **nfexpire** バイナリのパスです。
* **最大グラフ解像度(Maximum chart resolution):** Netflow グラフを表示するエリアの最大サイズです。解像度を高くするとパフォーマンスが下がります。50 と 100 の間の値をお勧めします。
* **ライブビューカスタムフィルタの無効化(Disable custom live view filters):** 有効にすると、管理者によってあらかじめ作成された Netflow フィルタのみが Netflow ライブビューで利用できます。
* **Netflow 最大保存期間(Netflow max lifespan):** 指定した日数よりも古い Netflow データが削除されます。
* **IP アドレス名前解決の有効化(Enable IP address name resolution):** Netflow デバイスから IP アドレスの名前解決をするようにします。
* **デーモン間隔(Daemon interval):** (//バージョン NG 769 およびそれ以前//) データファイルをローテートする時間間隔(秒)です。3600を推奨します。間隔を大きくすると大きなファイルとなり、I/O のオーバーヘッドは小さくなりますが、特定の時間間隔におけるデータの検索は遅くなります。
コンソールで NetFlow を設定したら、Pandora FMS サーバを再起動して、**nfcapd** サーバを起動します。 このサーバは、実行する前に適切にインストールする必要があります。 疑わしい場合はサーバのログを確認してください。
NetFlow データを **PFMS サーバ以外のデバイス** (([[#ks2_4_1|nfcapd のインストール手順]] および [[#ks2_10|分散設定]] を参照) に保存する場合は、バイナリファイル ''/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 監視の有効化 ===
フィルターを作成するときに、**Enable NetFlow monitoring** //トークン// を有効にすることでフィルタ監視を有効にできます。
* これにより、このフィルタのトラフィック量を監視するエージェントを作成できるようになります。
* このフィルタ内のいずれかの IP アドレスからのトラフィックが特定のしきい値を超えているかどうかを測定するモジュールを作成します。
* このフィルター内の各 IP アドレスのトラフィックレートを含むテキストモジュールが 5 分ごとに作成されます (最もトラフィックが多い 10 個の IP アドレス)。
パラメータは次の通りです。
* **フィルタの最大トラフィック値(Maximum traffic value of the filter)**: フィルタトラフィックの最大レート (バイト/秒) を指定します。 次に、これを使用して、IP アドレスごとの最大トラフィックの割合が計算されます。
* **IP のトラフィックの最大 % の警告しきい値(WARNING threshold for the maximum % of traffic for an IP)**: フィルタ内のいずれかの IP アドレスが設定された割合を超えると、警告状態が生成されます。
* **IP のトラフィックの最大 % の障害しきい値(CRITICAL threshold for the maximum % of traffic for an IP)**: フィルタ内のいずれかの IP アドレスが設定された割合を超えると、障害状態が生成されます。
==== レポート ====
NetFlow レポートは [[:ja:documentation:pandorafms:technical_annexes:22_pfms_report_types#ks12|Pandora FMS レポート]] と統合されています。
新たにレポートアイテムを作成するには、netflow レポートアイテムの一つを選択します。
以下の設定オプションが利用可能です。
* **タイプ(Type)**: 以下に説明するアイテムのタイプです。
* **フィルター(Filter)**: 利用する Netflow フィルタです。
* **間隔(Period)**: データを表示する期間です。
* **解像度(Resolution)**: データは、解像度に指定したサイズで取得されます。もし、間隔/解像度を最大グラフ解像度より大きく設定すると、動的に再調整されます。例えば、間隔が 1日で、解像度が 1時間の場合、24ポイントがグラフに表示されます。
* **最大値(Max. values)**: 集約する要素の最大値です。例えば、HTTP トラフィックのグラフを書く場合、ソースIPアドレスで集約し、最大値が 5 であれば、5つの IP アドレスのみが表示されます。
netflow レポートのアイテムは、3種類あります。
* **NetFlow 塗りつぶしグラフ(NetFlow area chart)**: 集約または未集約の塗りつぶしグラフです。
* **NetFlow データ一覧(NetFlow data table)**: 塗りつぶしグラフをテキストで表したものです。
* **Netflow サマリグラフ(Netflow summary chart)**: 指定した間隔のトラフィックサマリです。グローバル情報を含む表、最も関連性のある IP またはポートを含む円グラフ、分割された円グラフと同じ情報を含む表の 3つの要素があります。
==== リアルタイム表示 ====
この表示は、さまざまな検索フィルタに基づいて取得されたデータの履歴を調べるために使用します。フィルタを使用して、さまざまな異なる情報を表示することができます。データの視覚化をするには、表示された情報をグループ化する方法と、この情報を取得する方法があります。
フィルタした情報は、**操作(Operation)** → **モニタリング(Monitoring)** → **ネットワーク(Network)** → **Netflow ライブビュー(Netflow Live View)** から表示できます。このツールで、フィルタの変更のプレビューおよび、好みの出力結果を保存できます。設定したフィルタをロードし編集することもできます。
情報を取得する方法は、送信元 IP アドレス、宛先 IP アドレス、送信元ポート、または宛先ポートです。 たとえば、宛先 IP アドレス情報を表示することを選択した場合、情報は、宛先へのトラフィックが最も多い IP アドレスによって、最高から最低の順に並べ替えられて表示されます。 宛先ポートを選択して、プロトコルごとのネットワークの消費量を見る場合も同じことが行われます。
可能な表示方法は以下の通りです。
* 塗りつぶしグラフ(Area graph): 積み上げ型のエリアグラフを、時間経過(開始日から終了日まで)に沿って表示し、データの推移を示します。グラフの精度は「解像度」トークンで選択する必要があります。
* 円形メッシュ(Circular mesh): IPアドレスとトラフィック量間の接続ペアを表すインタラクティブな円形メッシュグラフを表示します。
* データテーブル(Data table): 各IPアドレスと、選択した解像度に応じた行数のデータテーブルを表示します。
* ホストトラフィック詳細(Detailed host trafic): IPアドレスごとのトラフィックを表すホストトラフィックの詳細を示す部分マップを表示します。
* 概要(Summary): 全期間のデータを含む概要テーブル、円グラフ、およびテーブルを表示します。
* トップ N 個の接続(Top-N connections): 送信元 IP アドレスと宛先 IP アドレスのペア間のトラフィックに基づいて、それらの IP アドレス間の「上位 N」個の接続を示す表です (表の N 個の要素のパーセンテージの合計は、他の接続ペア src/dst が存在する可能性があるため、必ずしも 100 になるとは限りません)。
==== ネットワークトラフィックマップ ====
これにより、ノード間のトラフィックに基づいて動的なネットワーク マップを作成できます。 異なるアドレス間の関係 (接続) が表示され、最も重要な N 個の接続が (接続間で転送されるデータのサイズごとに) 表示されます。
==== 分散設定 ====
コンソールから独立したホスト上に Netflow データを収集する pandora ノードを配置することも可能です。大量の Netflow データがある環境では、高速ディスクと 2コア以上の高速 CPU を備えたサーバに配置することをお勧めします。 Pandora コンソールがNetflow データを抽出するためには、以下の手順に従ってシステムのデフォルト設定を変更する必要があります。
* Web デーモンを実行するユーザと、コレクターノードで **nfdump** を実行するユーザとの間の自動 SSH 認証を構成します。
その設定には、次の手順を実行する必要があります。
**EL 8 上の Pandora FMS 環境のみ**
* まず、Apache SSH 鍵を保存するフォルダーを作成します。
mkdir /usr/share/httpd/.ssh/
* 作成したフォルダーに対して Apache に権限を付与します。
chown -R apache. /usr/share/httpd/.ssh/
* Apache で BASH ログインします (ターミナルユーザが変わります)。
su apache -s /bin/bash
* 次に、Apache ユーザーで SSH 鍵を生成します。
ssh-keygen
* 鍵をターゲットマシンにコピーします。この手順では、//リモートマシンのユーザ//の資格情報が要求されます。
ssh-copy-id < User >@< IP_Address >
* 最後に、同じユーザでパスワードを入力せずにターゲットマシンへの SSH 接続が成功することを確認します。
ssh < User >@< IP_Address >
Pandora FMS 設定の NetFlow セクションで、**リモート設定(Remote Settings)** セクションに前のデータを入力して、NetFlow リモートデータにアクセスできます。
{{ wiki:pfms-netflow-remote_settings-801_version.png }}
===== sFlow でのネットワーク監視 =====
Pandora FMS バージョン 770 以降では、[[http://sflow.org/about/index.php|sFlow]] のサポートが含まれています。sFlow は、データネットワークトラフィック用のハードウェアにおける業界標準のネットワークプロトコルです。
The operation of sFlow in PFMS is [[#ks2|similar to the one established with NetFlow]]. In case both protocols are active, data will be grouped; in any case, they will always be viewed by accessing the Operation menu in the left sidebar, and then clicking on Views → Network.
Pandora FMS での sFlow の動作は [[#ks2|NetFlow で確立しているものと同様]] です。 両方のプロトコルが有効な場合、**データはグループ化されます**。いずれの場合も、左側のサイドバーの **操作(Operation)** メニューにアクセスし、**ネットワーク(Network)** をクリックすると、常に表示されます。
==== sFlow 設定 ====
**操作** と **管理** メニューからアクセスできるように、sFlow を有効化する必要があります。 [[#ks2_5_1|NetFlow 設定セクション]]に、sFlow をグローバルに有効または無効にするオプションがあります。
{{ :wiki:pfms-general_setup-sflow_config-801_version.png }}
sFlow 専用の新しいタブが有効になります。
{{ :wiki:pfms-sflow_config-801_version.png }}
* **データ保存パス(Data storage path)**: sFlow データファイルが保存されるディレクトリ。([[:ja:documentation:pandorafms:management_and_operation:12_console_setup#ks1_9|一般設定]]を参照)
* **デーモンバイナリパス(Daemon binary path)**: **nfcapd** のバイナリのパス。
* **nfdump バイナリパス(Nfdump binary path)**: **nfdump** のバイナリのパス。
* **nfexpire バイナリパス(Nfexpire binary path)**: **nfexpire** のバイナリのパス。
* **最大グラフ解像度(Maximum chart resolution)**: sFlow グラフが表示するポイントの最大数。解像度が高くなるほどパフォーマンスが低下します。 50 から 100 の間の値をお勧めします。
* **カスタムライブビューフィルタ無効化(Disable custom live view filters)**: sFlow 表示のカスタムフィルターの定義を無効にします (既に作成されているフィルターは引き続き使用できます)。
* **sFlow 最大保存期間(sFlow max lifetime)**: sFlow データを保存する最大日数を示します。
* **IP アドレス名前解決の有効化(Enable IP address name resolution)**: sFlow デバイスのホスト名を取得するための IP アドレス名前解決を有効にします。
[[ja:documentation:pandorafms:start|Pandora FMS ドキュメント一覧に戻る]]