カスタムスクリプト
- Last Updated: April 5, 2026
- 8 minute read
- Flowmon Products
- Flowmon Anomaly Detection System
- Documentation
このセクションでは、Flowmon ADSイベントおよびIDSイベント用にカスタムスクリプトを作成しテストする方法に関する詳細情報を提供します。カスタムスクリプトでは、イベントの処理およびエクスポート用に独自の論理を定義できます。
実行可能ファイルは、adminユーザが[設定] → [システム設定] → [カスタムスクリプト]ビューでアップロードできます。イベントはスクリプトの標準入力に指定されます。
追加のパラメータ
カスタムスクリプトの追加のコマンドラインパラメータを定義できます。これらのパラメータは、補足情報を渡すために使用されます。パラメータはオプションで、スクリプトでサポートされている必要があります。
パラメータの名前は空にすることはできず、英数字、ダッシュ、またはアンダースコアで構成できます。パラメータは常に同じ順序で渡されます。そのため、位置番号で参照することができます。パラメータは以下の順序でスクリプトに渡されます:
/script_name.sh PARAM_1 ’VAL_1’ PARAM_2 ’VAL_2’ ... PARAM_n ’VAL_n’
デモスクリプト
デモスクリプトは、インストールした後、または設定テンプレートを適用した後に作成されます。このスクリプトは、メールによるイベントレポートの送信に使用されます。スクリプトは、[設定] → [システム設定] → [カスタムスクリプト]ページで手動で生成できます。ダウンロードすることもできます。スクリプトは、ADSイベントとIDSイベントの両方のレポートをサポートしており、Bashで記述されています。スクリプトは、メールアドレス、メールの本文、メールの件名を渡すために3つのパラメータを使用します。これらのパラメータは、標準のgetopt関数を使用して解析されます。メールレポートは、Flowmon PHP CLIによって送信されます。SMTP設定は、アプリケーションの設定から取得されます。
サポートされている形式
カスタムスクリプトは、以下の2つの形式でイベントを処理できます:
- タブ区切り形式: フィールドはタブ文字で区切られます。これは単純なBashスクリプトに最適です。空のフィールドは、1つのスペースに置き換えられます。
- JSON形式: イベントは構造化されたJSONオブジェクトとして提供されます。これは、複雑なスクリプトやPythonなどのプログラミング言語に最適です。
ADSイベント
タブ区切り形式では、以下のフィールドがこの順序で含まれます:
- ID
- イベント検知時間
- 最初のフローのタイムスタンプ
- イベントタイプ
- イベントサブタイプ - 拡張オプションが選択された場合のみ
- MITRE ATT&CK - 拡張オプションが選択された場合のみ
- タイプの説明
- パースペクティブ
- 優先度
- イベント詳細
- ポート番号
- プロトコル
- イベントソース
- キャプチャされたソース名
- イベントターゲット
- データフィード
- ユーザID
JSON形式の例:
{
"id": 123456,
"timestamp": "2025-05-14 15:10:28",
"firstFlow": "2025-05-14 14:58:55",
"type": "HIGHTRANSF",
"typeDesc": "High volume of transferred data",
"subtype": "General",
"mitreAttack": [
{
"tactic": {
"code": "TA0008",
"name": "Lateral Movement",
"techniques": [
{
"code": "T1570",
"name": "Lateral Tool Transfer"
}
]
},
"version": 15
}
],
"perspective": "",
"severity": "",
"detail": "転送済み: 213.93 MiB、上位のピア転送: 179.49 MiB。",
"port": "",
"protocol": "",
"source": "10.10.10.10",
"capturedSource": "",
"targets": "10.20.20.20",
"netFlowSource": "Default",
"userIdentity": ""
}
IDSイベント
カスタムスクリプトは、イベント詳細からのIDSイベントの手動のレポートに使用できます。IDSイベントには、ADSイベントと異なる属性が含まれています。属性は、タブ区切り形式とJSON形式の両方で同じです。属性は以下のとおりです。
- ID
- firstSeen
- lastSeen
- srcIp
- srcPort
- dstIp
- dstPort
- protocol
- signatureId
- signatureName
- logSourceIp
- logSourceInterface
- category
- severity
JSON形式の例:
{
"id": 123456,
"firstSeen": "2025-05-15 06:45:56",
"lastSeen": "2025-05-15 06:45:56",
"srcIp": "10.20.20.20",
"srcPort": 65432,
"dstIp": "10.10.10.10",
"dstPort": 53,
"protocol": "UDP",
"signatureId": 2027865,
"signatureName": "ET INFO Observed DNS Query to .cloud TLD",
"logSourceIp": "10.1.1.1",
"logSourceInterface": "idsp_eth2_out",
"category": "Potentially Bad Traffic",
"severity": "2"
}
ADSイベントおよびIDSイベント用のスクリプトの作成
ADSイベントとIDSイベントの両方を処理するスクリプトを作成するには:
- イベントタイプを検知します:
- JSON形式の場合は、特定の属性を確認します:
- ADSイベントには、
type、perspective、およびseverityなどの属性が含まれています。 - IDSイベントには、
srcIp、dstIp、およびsignatureNameなどの属性が含まれています。
- ADSイベントには、
- タブ区切り形式の場合は、各行のフィールド数を確認します:
- ADSイベントには、IDSイベントよりも多くのフィールドがあります。
- JSON形式の場合は、特定の属性を確認します:
- 検知されたタイプに基づいてADSイベントとIDSイベントを処理するために、別々の論理を実装します。
Bashスクリプトの例
#!/bin/bash
# Read input
while IFS=#39;\t' read -r line; do
# Check the number of fields
field_count=$(echo "$line" | awk -F'\t' '{print NF}')
if [ "$field_count" -eq 16 ]; then
echo "Processing ADS event..."
# Add ADS-specific logic here
else
echo "Processing IDS event..."
# Add IDS-specific logic here
fi
done
カスタムスクリプトのテスト
テストの目的のために、応答を手動で開始できます:
- Flowmon ADSインターフェースの[イベント詳細]ページに移動します。
- [応答の開始] オプションを使用して、サンプルデータを使用してスクリプトを実行します。
- スクリプトの出力と動作を検証します。
追加の注記
- スクリプトが、フローデータ処理での遅延を回避するためのパフォーマンス向けに最適化されていることを確認してください。
- カスタムスクリプトをアップロードおよび管理できるのは、adminユーザだけです。