====== SIEM 監視 ======
{{indexmenu_n>10}}
[[ja:documentation:start|Pandora FMS ドキュメント一覧に戻る]]
===== 概要 =====
**SIEM** は Security Information and Event Management の略です。[[https://pandorafms.com/en/it-topics/siem/|SIEM]] は、セキュリティイベントの収集、フィルタリング、正規化、相関分析、可視化といった [[:ja:documentation:pandorafms:cybersecurity:40_security_monitoring|セキュリティ監視]] 機能を表します。SIEM は、セキュリティ情報管理 (**SIM**) とセキュリティイベント管理 (**SEM**) を組み合わせたものです。
SIEM は、通常のログ (Apache ログなど)、特定のセキュリティツールのログ (ファイアウォール、IDS、ハニーポット、EDR などのログ)、または別のツール (別の SIEM) からの強化されたイベントから取得されるセキュリティイベントを管理します。
すべての SIEM PFMS 機能を最大限に活用するには、[[:ja:documentation:pandorafms:monitoring:02_operations|エンドポイント]] に少なくともバージョン 783 をインストールすることを **推奨** します。
===== 動作の仕組み =====
**Pandora FMS SIEM** は、[[:ja:documentation:pandorafms:monitoring:09_log_monitoring|コレクション]] から取得したログエントリを処理し、データを正規化し、これらのエントリに基づいてセキュリティイベントを生成する役割を担います。
ログ収集と同様に、**生成された SIEM** イベントは OpenSearch® に保存されるため、この監視を機能させるための最初の要件は [[:ja:documentation:pandorafms:technical_annexes:38_opensearch_installation|OpenSearch インストール]] です。
Pandora FMS SIEM は、サーバ内の 2 つのコンポーネントを使用してセキュリティイベントを生成するため、イベントも 2 つのステップで生成されます。
* **データ標準化**: すべてのログ収集エントリがデコードされ、新しい正規化されたログエントリが生成され、一時的に保存されます。
* **イベント生成**: 正規化されたログは、一連のルールに準拠しているかどうかがチェックされます。準拠している場合は、すべてのルール情報とイベントを生成した正規化されたログを含む SIEM イベントが生成されます。
したがって、SIEM 監視の完全なフローは次のようになります。
* エージェント、プラグイン、その他の情報ソースは、ログを監視または生成し、「dataserver」または「syslogserver」に送信されます。
* ''dataserver'' と ''syslogserver'' はこれらのログエントリを処理し、ログ収集用に設定された OpenSearch サーバに保存します。
* ''siemserver'' は、ログ収集で取得したすべてのログをデコードし、SIEM 監視用に設定された OpenSearch サーバ上に正規化されたログを生成します。これらの正規化されたログは一時的に保存されます。
* ''siemevents'' は、正規化された各ログを処理し、事前定義された一連のルールを満たす場合、SIEM イベントを生成して、SIEM 監視用に設定された OpenSearch サーバに保存します。
生成されたイベントは、Pandora FMS コンソールから操作を確認できます。
===== コンソール設定 =====
[[:ja:documentation:pandorafms:command_center:01_introduction|コマンドセンター]] が有効になっている場合、Pandora SIEM はノードでのみ使用可能になります。
SIEM イベント監視を使用するには、まずメイン設定から有効化する必要があります。
メニュー **管理(Management) → セッティング(Settings) → システム設定(System Settings) → SIEM → SIEM の有効化(Activate SIEM)** に移動し、フォームをすべて入力して **更新(Update)** をクリックして変更を保存します。
これにより、ログの正規化と SIEM イベント生成用に指定された OpenSearch サーバに必要なテンプレートが作成されます。
また、''siemserver'' および ''siemevents'' が開始された Pandora FMS サーバでもこのタイプの監視が有効になります。
===== サーバ設定 =====
SIEM イベント監視を実行するには、[[:ja:documentation:pandorafms:installation:04_configuration#siemserver|サーバ設定]] で ''siemserver'' および ''siemevents'' サーバを有効にします。
ログ収集エントリをデコードおよび正規化するには、各ケースで必要な情報を取得する方法を確立するデコード XML ファイル(以下、「デコーダー」)が必要です。これらの XML ファイルは、サーバ設定の ''siem_decoders'' パラメータで指定されたパスに配置されます。デフォルトでは以下のパスです。
/usr/share/pandora_server/util/siem/decoders
SIEM イベントを生成するには、正規化されたログから取得した情報に基づいてイベントを生成する条件を設定したルール XML ファイル(以下、「ルール」)が必要です。これらの XML ファイルは、サーバ設定の ''siem_events_rules'' パラメータで指定されたパスに配置されます。デフォルトでは以下の場所にあります。
/usr/share/pandora_server/util/siem/rules
Wazuh® の デコーダー と ルール の XML ファイルは、Pandora FMS SIEM 監視でサポートされています。
===== エージェント設定 =====
ログ収集の大部分は Pandora FMS エンドポイントを通じて行われます。GNU/Linux® と MS Windows® の両方のシステムで動作するこれらのエージェントには、このタスクを実行するための特定の種類のモジュールが搭載されています。
すべての SIEM PFMS 機能を最大限に活用するには、[[:ja:documentation:pandorafms:monitoring:02_operations|エンドポイント]] に少なくともバージョン 783 をインストールすることを **推奨** します。
SIEM 監視は収集されたログの種類に大きく依存するため、その種類を示すにはログ収集モジュールで ''module_source_type'' を指定する必要があります。
タイプは デコーダー と ルール によって使用されるため、各ログに示されるタイプを確認するには、アクティブな デコーダー と ルール をチェックする必要があります。
最も一般的に使用されるログの種類は次のとおりです。
* syslog
* ids
* web-log
* squid
* windows
* host-information
* ossec
==== Linux® エージェント ====
Linux システムにおけるログ収集は、主にログファイルの読み取りによって行われます。これは、以下の最小限の構造を持つモジュール設定を使用することで実現できます。
module_begin
module_name
module_type log
module_regexp
module_pattern
module_source_type
module_end
たとえば、Apache サーバからすべてのアクセスログエントリを収集するには、次のようにします。
module_begin
module_name apache
module_type log
module_regexp /var/log/httpd/access_log
module_pattern .*
module_source_type web-log
module_end
上記のようなログから収集されたエントリは、次のような デコーダー で正規化されます。
* ''web-accesslog''
* ''web-accesslog-ip''
* ''web-accesslog-domain''
このようなログのデコードされたログでは、次のようなイベントが生成されます。
* ''Common web attack''
* ''XSS (Cross Site Scripting) attempt''
* ''SQL injection attempt''
==== MS Windows® エージェント ====
MS Windows® でのログ収集は主にシステムイベントの監視によって行われますが、Linux システムのようにログファイルを読み取ることによっても行うことができます。
Windows イベントシステムを使用すると、これらの 2 つの最小構成のいずれかを含むモジュール設定を使用して、これらのログを収集できます。
イベントが **Application**、**System**、または **Security** のいずれかの場合:
module_begin
module_name
module_type log
module_logchannel
module_source
module_source_type
module_end
または、別のチャネルに属するイベントの場合:
module_begin
module_name
module_type log
module_logchannel
module_source
module_source_type
module_end
たとえば、すべての **Security** および **Windows Defender** イベントエントリを収集するには、次のようにします。
module_begin
module_name Windows_LogEvents_System
module_type log
module_logchannel
module_source Security
module_source_type ossec
module_end
module_begin
module_name Windows_LogchannelEvents_WindowsDefender
module_type log
module_logchannel
module_source Microsoft-Windows-Windows Defender/Operational
module_source_type ossec
module_end
上記のようなイベントから収集された入力は、デコーダー によって ''windows_eventchannel'' として正規化されます。
上記のようなイベントのデコードされたログでは、次のようなイベントが生成されます。
* ''Windows error event''
* ''Short-time multiple Windows Defender warning events''
* ''Multiple Windows Defender error events''
ログファイル監視を使用する場合、設定は Linux システムと同じです。次のような最小限の設定が必要です。
module_begin
module_name
module_type log
module_regexp
module_pattern
module_source_type
module_end
たとえば、X サーバのすべてのログ エントリを収集するには、次のようにします。
module_begin
module_name xserver
module_type log
module_regexp C:\server\logs\xserver.log
module_pattern .*
module_source_type xserver
module_end
===== SIEM イベント =====
SIEM 監視を有効にして設定すると、**操作(Operation) → SIEM → ダッシュボード(Dashboard)** メニューで監視ステータスのプレビューにアクセスできるようになります。
{{ :wiki:siem_dashboard.png }}
生成された SIEM イベントは、メニュー **操作(Operation) → SIEM → イベント(Events)** ですべて表示できます。
{{ :wiki:siem_events.png }}
各 SIEM イベントにはイベントの詳細を示すウィンドウがあり、正規化されたログの情報とイベントを生成したルールが表示されます。
{{ :wiki:siem_event_details.png }}
ログを正規化した デコーダー に応じて、イベントには、役立つログ情報を含む **動的フィールド(Dynamic fields)** タブが表示されます。
{{ :wiki:siem_event_fields.png }}
イベントを生成したルールに応じて、**MITRE ATT&CKS®** および **SIEM グループ(SIEM groups)** タブが表示され、イベントの影響に関する有用な情報が表示されます。
{{ :wiki:siem_mitre_event.png }}
{{ :wiki:siem_event_groups.png }}
一般的なダッシュボードとイベントテーブルの両方に表示される情報は、付属の SIEM ウィジェットを使用して [[:ja:documentation:pandorafms:management_and_operation:09_dashboard|Pandora FMS ダッシュボード]] に含めることができます。
===== デコーダー =====
Pandora FMS には、SIEM 監視用の一連の デコーダー がデフォルトで含まれていますが、管理者は独自のデコーダーを追加できます。
==== 管理 ====
新しい デコーダー を追加するには、まず **Pandora FMS サーバ** の設定パラメータ ''siem_decoders'' に指定されたパスにある XML ファイルを追加または編集します。
デコーダーは、**Pandora FMS マスター** サーバが各サービスの起動時に読み取る XML ファイルを介して環境にロードされます。
デコーダーがロードされると、その設定がデータベースに保存され、各 ''siemserver'' はログ収集を通じて取得されたエントリに対してそれらを処理します。
Pandora FMS コンソールでは、メニュー **操作(Operation) → SIEM → デコーダー(Decoders)** から、ロードされた デコーダー とその完全な設定を表示できます。
このビューから デコーダー を無効にすることもできます。これにより、''siemserver'' はログ エントリを正規化するときにデコーダーを考慮しなくなります。
すべてのデコーダーは、再起動のたびに完全に読み込まれます。つまり、XML ファイルから読み込めなかったデコーダーは(たとえある時点で読み込めていたとしても)使用できなくなります。また、コンソールから無効化されたデコーダーは(存在する場合)再び有効化されます。
==== 書式 ====
デコーダーは、Pandora FMS で XML ファイルを使用して設定およびロードされます。これらのファイルの有効な書式は次のとおりです。
VarValue
DecoderName
REGEXP
EventType
REGEXP
REGEXP
REGEXP
REGEXP
REGEXP
REGEXP
Field1, Field2.Sub1, Field2.Sub2
string|discard
=== var ===
[[#ks7_2|↑書式]]
変数とその値を示すために使用され、後で XML で使用されます (''$VarName'')。
VarValue
=== decoder ===
[[#ks7_2|↑書式]]
これはデコーダー情報とその名前です。XMLファイル自体に複数のデコーダーが含まれる場合があります。
* ''name'': デコーダー の名前です。複数の デコーダー が同じ名前を持つ場合、それらはすべて評価されます。
* ''discard'': ''yes'' または ''no'' の値を指定すると、この値に一致するログを デコーダー の評価から破棄するかどうかを指定します。''discard="yes"'' が指定された デコーダー は、他のものより先に評価されます (親 デコーダー がない限り)。
…
…
…
=== parent ===
[[#ks7_2|↑書式]]
階層構造を生成するために親 デコーダー の名前を指定します。
DecoderName
=== program_name ===
[[#ks7_2|↑書式]]
ログヘッダーまたはログの ''source_id'' で見つかるプログラムの名前。
* ''type'': 正規表現の種類を指定します。指定がない場合は、[[#ks10_1|OS Regex]] が使用されます。
REGEXP
場合によっては、[[#ks10_2|PCRE2]] で次のように指定されます。
REGEXP
=== type ===
[[#ks7_2|↑書式]]
デコーダーが比較するログの種類。ログの ''type'' と一致する必要があります。
EventType
=== prematch ===
[[#ks7_2|↑書式]]
ログの内容がこれに一致する場合、正規化されたログが生成されます。
* ''type'': 正規表現の種類を指定します。指定がない場合は、[[#ks10_1|OS Regex]] が使用されます。
* [[#ks7_2_10|offset]] を参照してください。
REGEXP
REGEXP
REGEXP
=== regex ===
[[#ks7_2|↑書式]]
この正規表現でキャプチャされたグループは、ログの正規化された情報です。
* ''type'': 正規表現の種類を指定します。指定がない場合は、[[#ks10_1|OS Regex]] が使用されます。
* [[#ks7_2_10|offset]] を参照してください。
REGEXP
REGEXP
REGEXP
=== order ===
[[#ks7_2|↑書式]]
[[#ks7_2_7|regex]] によってキャプチャされた値は、キャプチャグループによってソートされてこれらのフィールド名に格納されます。
Field1, Field2.Sub1, Field2.Sub2
=== json_null_field ===
[[#ks7_2|↑書式]]
キャプチャグループの null 値は空の文字列として保存されるか、破棄されます。
string|discard
=== offset ===
[[#ks7_2|↑書式]]
これは、チェックの実行順序を示すために使用され、以下のチェックにおいて正規表現 ''after_parent''、''after_regex''、''after_prematch'' に一致するテキストをログコンテンツから削除します。例:
^\d\d\d\d/\d\d/\d\d \d\d:\d\d:\d\d
(\w):(\d+)
srcip,srcport
ログ内のテキストが正規表現 ''^\d\d\d\d/\d\d/\d\d \d\d:\d\d:\d\d'' に一致するかどうかを確認し、テキストの該当部分を破棄して、''regex'' を評価する際にそれに応じたキャプチャ処理を行います。この例では、キャプチャグループを簡素化するために、評価時にテキストから日付を削除します。
===== ルール =====
Pandora FMS には SIEM 監視用のデフォルトの ルール セットが含まれていますが、管理者は独自のルールを追加できます。
==== ルール管理 ====
新しい ルール を含めるには、まず、設定パラメータ ''siem_rules'' で Pandora FMS サーバに指定されたパスにある XML ファイルを追加または編集します。
ルールは、**Pandora FMS マスター** サーバが各サービスの起動時に読み込む XML ファイルによって環境にロードされます。
ルールがロードされると、その設定がデータベースに保存され、各 ''siemevents'' サーバはそれを SIEM 監視の正規化されたエントリとして処理します。
Pandora FMS コンソールでは、メニュー **操作(Operation) → SIEM → ルール(Rules)** から、読み込まれた ルール とその完全な設定を確認できます。
このビューから ルール を無効にして、正規化されたログを処理するときに ''siemevents'' がそれらを考慮しないようにすることもできます。
すべてのルールは、再起動のたびにすべて読み込まれます。つまり、XMLファイルから読み込めなかったルールは、たとえある時点で読み込めたとしても、利用できなくなります。デコーダーとは異なり、ルールには ID があり、これにより再起動のたびに無効にすることができます。
XMLファイルから読み取れなかったルールは、コンソールで「無効」とマークされ、SIEM イベントの生成時に考慮されません。管理者によって手動で無効化されたルールも考慮されません。したがって、ルールを評価するには、ルールがアクティブかつ有効化されている必要があります。
ルールを有効にし、あるルールが別のルールの評価と結果に依存する必要がある場合、**最初のルールの数値識別子は 2 番目のルールの数値識別子よりも小さくする必要があります** (つまり、数値の昇順で実行されます。[[#ks9_1|対応するケーススタディ]] を参照してください)。
==== ソート ====
//ルール//は、最低レベル(''0'')から最高レベル(''15'')まで、複数のレベルに分類されます。以下の表は各レベルについて説明し、SIEM 監視によって生成される各イベントの重要度に関する情報を提供します。
^レベル ^タイトル ^説明|
|0 |Ignored. |アクションは実行されませんでした。誤検知を回避するために使用されます。これらのルールは、セキュリティとの関連性がないイベントを含む他のすべてのルールよりも先にスキャンされ、セキュリティイベントパネルには表示されません。|
|2 |Notification of low system priority. |システム通知またはステータスメッセージ。セキュリティとの関連性がないため、セキュリティイベントパネルには表示されません。|
|3 |Successful/authorized events. |これには、成功したログイン試行、ファイアウォールによって許可されたイベントなどが含まれます。|
|4 |Low system priority error. |不適切な構成または未使用のデバイス/アプリケーションに関連するエラー。これらはセキュリティとの関連性がなく、通常はデフォルトのインストールまたはソフトウェアテストによって発生します。|
|5 |User-generated error. |これには、パスワードの忘れ、アクションの拒否などが含まれます。これら自体にはセキュリティとの関連性はありません。|
|6 |Low relevance attack. |これらは、システムに影響を与えないワームまたはウイルス(Apacheサーバーのコードレッドなど)を示します。また、頻繁な侵入検知システム(**IDS**)イベントや頻繁なエラーも含まれます。|
|7 |Coincidence of "bad words". |これらには、「bad」「error」などの単語が含まれます。これらのイベントのほとんどは分類されておらず、セキュリティの観点から何らかの関連性がある可能性があります。|
|8 |First time seen. |初めて発生したイベントが含まれます。**IDS**イベントが初めてトリガーされたとき、またはユーザーが初めてログインしたときです。スニファーの起動などのセキュリティ関連のアクションも含まれます。|
|9 |Invalid source error. |未知のユーザーまたは無効なソースからのログイン試行が含まれます。セキュリティに関連する可能性があります(特に繰り返し発生する場合)。これには、「admin」アカウント(root)に関連するエラーも含まれます。|
|10 |Multiple user-generated errors. |複数の間違ったパスワード、複数のログイン失敗などが含まれます。これらは攻撃を示している場合もあれば、ユーザーが認証情報を忘れただけの場合もあります。|
|11 |Integrity check warning. |バイナリの変更やルートキットの存在(Rootcheckによる)に関するメッセージが含まれます。これらは攻撃が成功したことを示している可能性があります。また、無視される**IDS**イベント(繰り返し回数が多い)も含まれます。|
|12 |Event of high importance. |システム、カーネルなどからのエラーまたは警告メッセージが含まれます。特定のアプリケーションに対する攻撃を示している可能性があります。|
|13 |Unusual error (high importance). |ほとんどの場合、一般的な攻撃パターンと一致します。|
|14 |Security event of high importance. |ほとんどの場合、相関関係によってトリガーされ、攻撃を示しています。|
|15 |Severe attack. |誤検知の可能性はありません。早急な対応が必要です。|
これらのレベルに基づいて、イベントには特定の重要度が与えられ、コンソールに表示されます。
* **情報(Informational)**: レベル 0 から 6。
* **正常(Normal)**: レベル 7 から 8。
* **警告(Warning)**: レベル 9 から 11。
* **障害(Critical)**: レベル 12 から 15。
==== 書式 ====
[[#ks8_3_1|詳細書式要素]]
VarValue
N
GROUP
Field1
Field2.Sub1
Field1
Field2.Sub1
TEXT
RREGEXP
RREGEXP
RREGEXP
RREGEXP
DecoderName
EventType
REGEXP
REGEXP
REGEXP
DAYS
PARENT1, PARENT2
GROUP
N
TEXT|LINK|CVE
GROUP1,GROUP2,
MITRE_ID
MITRE_ID
[[#ks9|ケーススタディ]]も参照してください。
=== var ===
[[#ks8_3|↑完全な書式]]
VarValue
変数とその値を示すために使用され、後で XML で使用されます (''$VarName'')。
=== group ===
[[#ks8_3|↑完全な書式]].
…
[[#rule|rule]] によるグループ化が可能です。また、同じルールの条件にも使用されます。
=== rule ===
[[#ks8_3|↑完全な書式]]
…
ルール内の情報は次のとおりです。
- ''id'': ルール識別子。他のルールが上書きされない限り、一意である必要があります。
- ''level'': イベント生成時のレベル(''0''~''15'')。レベルが ''0'' のルールはイベントを生成しません。
- ''frequenity'': イベントを生成するために同時発生する必要がある回数。ルールの頻度は、エージェント自身のログに対してチェックされ、他のログに対してはチェックされません。
- ''timeframe'': 同時発生が許容される時間枠(秒)。
- ''ignore'': このルールは、ここで指定した秒数後に ''frequenity'' カウンターをリスタートします。
- ''overwrite'': ''yes'' または ''no'' の値を指定することで、同じ ID を持つルールの設定を上書きできます。 ''overwrite="yes"'' と同時に ''level="0"'' のルールが設定されている場合、他のルールよりも先に評価され、ログが一致した場合は、そのログの残りのルールの評価は破棄されます。
=== if_matched_sid ===
[[#ks8_3|↑完全な書式]]
N
指定された ID を持つ別の [[#rule|rule]] が ''timeframe'' 時間内に ''frequency'' で指定された回数アラートを発報した場合、ルールは満たされます。
=== if_matched_group ===
[[#ks8_3|↑完全な書式]]
GROUP
''[[#if_matched_sid|if_matched_sid]]'' と似ていますが、グループ用です。
=== same_id ===
[[#ks8_3|↑完全な書式]]
同じ ID による同意を与える必要があります。
=== different_id ===
[[#ks8_3|↑完全な書式]]
異なる ID による一致を指定する必要があります。
=== same_field ===
[[#ks8_3|↑完全な書式]]
Field1
Field2.Sub1
フィールド内が同じ値で一致する必要があります。
=== different_field ===
[[#ks8_3|↑完全な書式]]
Field1
Field2.Sub1
フィールド内の異なる値との一致が行われる必要があります。
=== description ===
[[#ks8_3|↑完全な書式]]
TEXT
生成されるイベントのテキスト。(変数は、説明と ''info'' でカスタムフィールドの値とともに使用できます。例: ''$(Field1)''、''$(Field2.Sub1)''、''$(Field2.Sub2)''))
=== match ===
[[#ks8_3|↑完全な書式]]
RREGEXP
RREGEXP
ログの内容がこれに一致する場合、SIEM イベントが生成されます。
- ''type'': 正規表現の種類を指定できます。指定しない場合は、[[#ks10_1|OS Regex]] が使用されます。
- ''negate'': ''yes'' を指定すると、一致を否定できます。
=== regex ===
[[#ks8_3|↑完全な書式]]
RREGEXP
RREGEXP
"[[#match|match]]" と同じです。
- ''type'': 正規表現の種類を指定できます。指定しない場合は、[[#ks10_1|OS Regex]] が使用されます。
- ''negate'': ''yes'' を指定すると、正規表現を拒否できます。
=== decoded_as ===
[[#ks8_3|↑完全な書式]]
DecoderName
指定された デコーダー によってログがデコードされた場合、ルールは満たされます。
=== category ===
[[#ks8_3|↑完全な書式]]
EventType
デコーダー のタイプが一致する場合、ルールは満たされます。
=== field ===
[[#ks8_3|↑完全な書式]]
REGEXP
REGEXP
指定されたフィールドが値と一致する場合、ルールに準拠します。
- ''negate'': ''yes'' 値を指定すると、フィールドとの一致を拒否できます。
=== program_name ===
[[#ks8_3|↑完全な書式]]
REGEXP
ログのソースが一致する場合、ルールは満たされます。
- ''negate'': ''yes'' の値を指定すると、ソースログとの一致を拒否できます。
=== time ===
[[#ks8_3|↑完全な書式]]
指定された時間範囲内にイベントが生成された場合、ルールは一致します。
=== weekday ===
[[#ks8_3|↑完全な書式]]
DAYS
イベントが生成された場合、ルールが日 (''monday - sunday'', ''weekdays'', ''weekends'') に準拠します。
=== if_sid ===
[[#ks8_3|↑完全な書式]]
PARENT1, PARENT2
親ルールのいずれかが満たされると、ルールは満たされます。
=== if_group ===
[[#ks8_3|↑完全な書式]]
GROUP
ログが指定されたグループ内の他のルールを満たす場合、ルールは満たされます。
=== if_level ===
[[#ks8_3|↑完全な書式]]
N
同じレベルの別のルールが満たされている場合、そのルールは満たされます。
=== info ===
[[#ks8_3|↑完全な書式]]
TEXT|LINK|CVE
生成されたイベントの追加情報。((変数は、説明と ''info'' でカスタムフィールドの値とともに使用できます。例: ''$(Field1)''、''$(Field2.Sub1)''、''$(Field2.Sub2)''。))
=== group ===
[[#ks8_3|↑完全な書式]]
GROUP1,GROUP2,
ルールグループのリスト。
=== mitre ===
[[#ks8_3|↑完全な書式]]
MITRE_ID
MITRE_ID
ルールの MITRE ID のリスト。
===== ケーススタディ =====
以下のコードは、PHP 関連の [[:ja:documentation:pandorafms:cybersecurity:09_selinux_configuration|SELinux]] ログのルールを記述しています。このルールは、Web サーバ上の通常のポート以外のポートへの接続試行に対してイベントを作成します。
setroubleshoot_program
/usr/sbin/php-fpm
^(?!.*\b(9200|3306|80|443)$).*$
^(?!.*(directory|file) (conf|data_in|cron.lock)).*$
SELinux prevented /usr/sbin/php-fpm execution on: $(action) access on the $(object_target)
T1071.002
exec,threat,PHP
したがって、ポート ''9200''、''3306''、''80''、および ''443'' への接続ではイベントは作成されません。**//directory// または //file// タイプのイベントも作成されません**。
SELinux で使用される一般的な [[#ks7|デコーダー]] :
^setroubleshoot$
setroubleshoot
(SELinux is preventing|SELinux está negando a)
(\S+) (?:from|de) (\S+) (?:access on the|el acceso a) (.+?)\. (?:For complete SELinux messages run: sealert -l|Si quiere los mensajes de SELinux completos, ejecute sealert -l) (\S+)$
binary,action,object_target,sealert_id
setroubleshoot
failed to retrieve rpm info for path
failed to retrieve rpm info for path (\S+)
path
==== ルール評価順序 ====
次のケーススタディ (**否定的な結果**) は、ルールが他のルールを「照会」して一致が見つかったかどうかを確認し、一致自体を評価してイベントを生成する場合を示しています。
ハードウェアファイアウォールで失敗したログインを検出し、対応するアラートを作成するために使用される一連のルールがあります。
fortigate-firewall-v6
Fortigate v6 messages grouped.
* ⍐ ルール 81641 はデコードされたログと一致し、データの取得を開始します。
----
81600,81601,81602,81641
Fortigate messages grouped.
* ⍐ ルール ID 81603 は、前の 81641 を含む複数のルールに依存します。後者の 81641 は 81603 より大きいため、**81603 は実行されません**。
----
81603
ssl-login-fail
Fortigate: SSL VPN user failed login attempt.
authentication_failed,
gdpr_IV_32.2,
gdpr_IV_35.7.d,
gpg13_7.1,
hipaa_164.312.b,
invalid_login,
nist_800_53_AC.7,
nist_800_53_AU.14,
pci_dss_10.2.4,
pci_dss_10.2.5,
tsc_CC6.1,
tsc_CC6.8,
tsc_CC7.2,
tsc_CC7.3,
* ⍐ ID 100700 のルールは、ID 81641 のルールとの一致をチェックします。このルールは、ルール ID 81603 に依存します (81614 は 81603 より大きいため、実行されます)。
このケーススタディの問題は、**ID による番号順で 81603 が実行されなかったため**、81614 が 100700 に結果を返さないことです。
===== 正規表現 =====
正規表現はパターンを定義する文字のシーケンスです。
デコーダーと ルールに有効な正規表現には、[[#ks10_1|OS Regex]] と [[#ks10_2|PCRE2]] の 2 種類があります。
==== OS Regex ====
C言語で作成されたライブラリをベースにしたシンプルな正規表現です。シンプルでありながら、最も一般的な正規表現をサポートするように設計されています。
=== 許容される表現 ===
^式^有効な文字|
|''\w'' |A-Z、a-z、0-9、'-'、'@'、'_'|
|''\d'' |0-9|
|''\s'' |スペース " "|
|''\t'' |タブ|
|''\p'' |()*+,-.:;<=>?[]!"'#$%&|{}|
|''\W'' |\w 以外の文字|
|''\D'' |\d 以外の文字|
|''\S'' |\s 以外の文字|
|''\.'' |その他|
=== 修飾子 ===
^式^動作|
|''+'' |1回以上の繰り返しに一致|
|''*'' |0回以上の繰り返しに一致|
=== 特殊文字 ===
^式^動作|
|''^'' |テキストの先頭を指定する|
|''$'' |テキストの末尾を指定する|
|''|'' |複数のパターン間で論理パターン「or」を作成する|
=== エスケープ文字 ===
次の文字を使用するには、''\'' でエスケープする必要があります。
^ $ ^ ( ^ ) ^ \ ^ | ^ < |
|\$ |\( |\) | \| \| |\< |
=== 制限事項 ===
* 修飾子 ''*'' および ''+'' はバックスラッシュ式にのみ適用でき、単一文字には適用できません(例:''\d+'' はサポートされていますが、''0+'' はサポートされていません)。
* 選択はグループ内では使用できません。例:''(foo|bar)'' は許可されていません。
* 複雑なバックトラックはサポートされていません。例:''\p*\d*\s*\w*:'' はコロンのみに一致しません。''\p*'' がコロンを包含するためです。
* ''.'' はピリオドに一致しますが、''\.'' は任意の文字に一致します。
* ''\s'' はASCIIスペース(32)にのみ一致し、タブなどの他の空白には一致しません。
* キャレット、アスタリスク、またはそれ以上のリテラルに一致する構文はありません(ただし、''\p'' は1つ以上のアスタリスクと他のいくつかの文字に一致します)。
==== PCRE2 ====
Perl 互換正規表現 (**PCRE2**) は、再帰パターン、先読みアサーションと後読みアサーション、非キャプチャグループ、非貪欲な量指定子、文字と文字クラスの拡張書式などの機能を提供します。
詳細については、[[https://www.pcre.org/current/doc/html/pcre2syntax.html|PCRE2 書式のドキュメント]] を参照してください。
=== 許容される表現 ===
^式^有効な文字|
|''.'' |改行以外の任意の文字|
|''\d'' |任意の10進数。''[0-9]'' に相当します。|
|''\D'' |10進数以外の任意の文字。''[^0-9]'' に相当します。|
|''\h'' |任意の水平空白文字|
|''\H'' |水平空白以外の任意の文字|
|''\s'' |任意の空白文字。''[\t\r\n\f]'' に相当します。|
|''\S'' |空白以外の任意の文字。''[^\t\r\n\f]'' に相当します。|
|''\w'' |任意の単語文字|
|''\W'' |任意の非単語文字|
=== 修飾子 ===
^式 ^動作|
|''?'' |0 または 1、greedy|
|''?+'' |0 または 1、possessive|
|''??'' |0 または 1、lazy|
|''*'' |0 以上、greedy|
|''*+'' |0 以上、possessive|
|''*?'' |0 以上、lazy|
|''+'' |1 以上、greedy|
|''++'' |1 以上、possessive|
|''+?'' |1 以上、lazy|
|''{n}'' |ちょうど n|
|''{n,m}'' |n 以上、m 以下、greedy|
|''{n,m}+'' |n 以上、m 以下、possessive|
|''{n,m}?'' |n 以上、m 以下、lazy|
|''{n,}'' |n 以上、greedy|
|''{n,}+'' |n 以上、possessive|
|''{n,}?'' |n 以上、lazy|
=== エスケープ文字 ===
^式 ^動作|
|''\f'' |次のページ (16進数 ''0C'')|
|''\n'' |改行 (16進数 ''0A'')|
|''\r'' |キャリッジリターン (16進数 ''0D'')|
|''\t'' |タブ (16進数 ''09'')|
|''\0dd'' |8進コード ''0dd'' の文字 |
|''\o{ddd..}'' |8進コード ''ddd..'' の文字 |
|''\xhh'' |16進コード ''hh'' の文字 |
|''v\x{hhh…}'' |16進コード ''hh..'' の文字 |
===== SIEM アラート =====
トピック[[:ja:documentation:pandorafms:management_and_operation:01_alerts#ks13|SIEM アラートシステム]]を参照してください。
===== SIEM レポート =====
トピック[[:ja:documentation:pandorafms:technical_annexes:22_pfms_report_types#ks18|SIEM イベントレポート]]を参照してください。
[[ja:documentation:start|Pandora FMS ドキュメント一覧に戻る]]