2022年2月9日(水)に、本ブログ記事のシリーズ【ntopng and nProbeによる高速トラフィック分析入門】がもととなったebookを弊社サイトに公開しました。
本サイトで紹介する以上の内容が盛だくさんで、かつ本ブログ執筆当時ではntopngのバージョンが4系でしたが、こちらのebookは5系を対象に執筆しております。
是非、無料のebook「ntopによる高速トラフィック分析入門(ntopngバージョン5.0.2系)」をご入手ください。ダウンロードはこちらからお願いします。
第10章 ユーザースクリプトによる振る舞い・イベント検知
本章では、ネットワーク管理者自身が開発ができるユーザースクリプトを紹介します。
本機能を使えば、予期しないネットワークの使い方をしているホストの発見や、閾値設定でトラフィック量の監視をすることができます。
文:ジュピターテクノロジー よしひろ
10.1 ユーザースクリプトとは
ntopngのユーザースクリプトは、特定のイベントが発生したときにLua(ルア)スクリプトを実行する仕組みです。
ntopngにはビルトインで直ぐに活用できるユーザースクリプトが用意されています。
また、ネットワーク管理者がLuaスクリプトを開発してntopngにデプロイすることも可能です。ユーザースクリプトは、フローのライフサイクル間に実行されます。
10.1.2 フローhooks
以下のフックが準備されています。
- protocolDetected・・・ アプリケーションを検知したタイミングで呼び出し
- statusChanged・・・ 前回の呼び出しからフローの内部ステータスが変化した場合に呼び出し
- periodicUpdate ・・・長期滞在フローで、5分ごとに実行
- flowEnd・・・フローが終了した場合に呼び出し
- all・・・使用可能なすべてのフックに対して関連するコールバックが呼び出される特別なフック
10.1.3 ライフタイム
10.2 ユーザースクリプト開発の流れ
ntopngのユーザースクリプト開発の流れは以下の通りです。
- プラグインディレクトリの作成
- マニュフェストファイルの作成
- ユーザースクリプト本体の作成
- ステータス、アラートファイルの作成
10.2.1 ユーザースクリプトのデプロイ方法
本書では、営業時間外にローカルホストが、リモートホストに接続した場合にアラート発報するユーザースクリプト”unexpected_time_access”のデプロイ方法をご紹介します。
弊社から入手した”unexpected_time_access.tar.gz”を/homeフォルダ内に展開してください。
ntopngにログインし、「開発者」→「ディレクトリ」をクリックし、プラグインディレクトリ、ステータス、アラートディレクトリを確認後、ファイルをそれぞれ移動してください。
以下がフォルダ構成とファイル一覧となります。
unexpected_time_accessといったフォルダはデフォルトでは存在しないので作成してください。その後、ファイルをコピーします。
10.2.2 ユーザースクリプトの設定
unexpected_time_accessの使い方を説明します。
ntopngにログインし、「開発者」→「プラグイン」をクリックしてください。
unexpected_time_accessが読み込まれていることを確認します。
「設定」→「ユーザースクリプト」→「フロー」をクリックし、デフォルトの編集ボタンをクリックしてください。
“時間外のリモートアクセス”が表示することを確認し、アクション列の編集ボタンをクリックしてください。
テキストボックスに営業の開始時間と終了時間をカンマ区切りで入力します。
有効化、適用ボタンをクリックします。
例: 08,12
営業開始 午前8時、終了 正午
10.2.3 ユーザースクリプトの実行とデバック
ユーザースクリプトのデバック情報を確認する為に、手動でntopngを起動します。
※開発時のテスト/デバックに有効な手段です。
ntopngをsystemctl等で停止し、以下のコマンドを実行してください。
標準出力にデバック情報が表示されます。
最後に実際にアラートが発報されているか確認します。
ntopngのWeb GUI「アラート」→「検出されたアラート」→「フローアラート」をクリックしてください。
”時間外のリモートアクセスの発見”が発報されていることを確認してください。
以上で、unexpected_time_access.luaの配置と動作確認は完了です。
以降の章では、ntopngのビルトインユーザースクリプトのうち有用なものをいくつかご紹介します。
10.3 SYNスキャン
1分間あたり、レスポンスがないSYN送受信の数が閾値を超えた場合にアラートを発報します。
以下の図は、1分間に256SYNを超過したホストががいればアラートを発報するように設定しています。
10.4 トラフィック閾値アラート
1分間あたりの入出力トラフィックを確認し、閾値を超えた場合にアラートを発報します。
以下の図は、1分間に512MBを超過した場合にアラートを発報するように設定しています。
10.5 予期していないDHCP, DNS, NTP, SMTPサーバーの利用
指定したサーバー以外にアクセスしているホストを検知した場合、アラートを発報します。
以下の図は、組織内ネットワーク以外のDNSサーバーにアクセスしたホストを検知した場合、アラートを発報するように設定しています。
以上で説明は終わりです。
如何でしょうか?ユーザースクリプトを使えば、ネットワークで何か想定していない事態が発生した場合にアラートを発報し、素早い処置がとれるといったイメージができたのではないでしょうか?
次章はこちらをご覧ください。
お問い合わせ・製品情報
本記事で扱っているntop社のnProbe, ntopng製品にご興味のある方は、以下のリンクから弊社までお問い合わせください!