このトピックでは、ルール ビルダでステートメントを追加して、ルールの基準を定義する方法について説明します。ルール ビルダのステートメントは、ルールの基準を論理的なグループにまとめたものです。ステートメントを追加して、ルールの検出対象を定義することができます。
例
次の図は、ルール ビルダのステートメントの例を示しています。
すべてのステーメントには、キーと値が含まれています。次に、オプションを選択してメタキーと値のペアに対してロジックを作成します。
前提条件
ルール ステートメントを作成するには、メタ キーとメタ値を理解する必要があります。
メタ キーの完全な一覧は構成>[ESAルール]>[設定]>[メタ キー参照]を参照してください。
手順
ルール ステートメントを作成するには、次の手順を実行します。
-
[構成]>[ESAルール]に移動します。
デフォルトで[ルール]タブが表示されます。
-
[ルール ライブラリ]で、
>[ルール ビルダ]をクリックするか、既存のルール ビルダ ルールを編集します。
[ルール ビルダ]ビューが表示されます。
-
[ステートメントのビルド]ダイアログが表示されます。
- ステートメントの[名前]を指定します。分かりやすい名前を指定してください。ステートメントの名前はルール ビルダに表示されます。
-
ドロップダウン リストから、必要な条件を選択します。
- すべての条件を満たす場合
- いずれかの条件を満たす場合
-
ステートメントの基準を設定します。
- [キー]に、メタ キーの名前を入力します。
- [演算子]にメタ キーと値との関係を指定します。
選択肢は、[等しい]、[等しくない]、[NULLでない]、[次より大きい](>)、[次の値以上](>=)、[次より小さい](<)、[次の値以下](<=)、[次の値を含む]、[次の値を含まない]、[次の値で始まる]、[次の値で終わる]です。 - メタ キーの値を入力します。
値には引用符を付けないでください。複数の値は、コンマで区切ります。 - [大文字と小文字を区別しない]フィールドは、文字列と文字列の配列に適用されます。[大文字と小文字を区別しない]フィールドを選択すると、クエリはすべての文字列テキストを小文字の値として扱います。 これにより、Johnsonという名前のユーザを検索するルールは、イベントに「johnson」、「JOHNSON」、または「JoHnSoN」が含まれている場合にトリガーします。
-
[配列]フィールドは、[値]フィールドの内容が1つの値か、複数の値かを示します。
[値]フィールドに複数のコンマ区切りの値を入力した場合は[配列]チェックボックスをオンにします。たとえば、「ec_activity is Logon, Logoff」の場合は、[配列]チェックボックスをオンにする必要があります。
- ステートメントで別のメタ キーを使用するには、
をクリックして、[メタ条件の追加]を選択し、ステップ6を繰り返します。
- ホワイトリストを追加するには、
をクリックし、[ホワイトリスト条件の追加]を選択します。
- ブラックリストを追加するには、
をクリックし、[ブラックリスト条件の追加]を選択します。
- ステートメントを保存するには、[保存]をクリックします。
ホワイトリストの追加
ホワイトリストを使用して、指定されたイベントがルールのトリガー対象から除外されるようにします。 ホワイトリストは、地理的な位置情報またはカスタムのCSV形式のエンリッチメント ソースによって定義できます。たとえば、米国以外のIPアドレスに対してのみトリガーするルールを作成する場合は、米国のIPアドレスのホワイトリストを作成できます。
- メタ条件を追加した後に、
をクリックし、[ホワイトリスト条件の追加]を選択します。
- [リスト名の入力]フィールドでエンリッチメント ソースを選択します。CSVまたはEsperの名前付きウィンドウからロードされた任意のエンリッチメント ソースをホワイトリストのソースとして使用できます。
- ホワイトリストにGeoIPソースを使用した場合、サブ条件としてipv4が自動的に入力されます。対応する[値]フィールドにメタ値を入力します。たとえば、「ipv4 is ip_src」と入力して、GeoIPレコードがip_srcを元にGeoIPデータベースから検出されるようにします。さらに、ホワイトリストにGeoIPソースを使用した場合は、サブ条件を追加してルールの結果から除外する地域を指定します。たとえば、国コードが米国の場合に除外するには、「CountryCode is US」と入力します。
ブラックリストの追加
ブラックリストを使用して、指定されたイベントでルールがトリガーされるようにします。ブラックリストは地理的な位置情報またはカスタムのCSV形式のエンリッチメント ソースによって定義できます。たとえば、ルールにドイツの結果のみが含まれるよう指定できます。
- メタ条件を追加した後に、
をクリックし、[ブラックリスト条件の追加]を選択します。
- [ブラックリスト名の入力]フィールドで、エンリッチメント ソースを選択します。CSVまたはEsperの名前付きウィンドウからロードされた任意のエンリッチメント ソースをブラックリストのソースとして使用できます。
- ブラックリストにGeoIPソースを使用した場合、サブ条件としてipv4が自動的に入力されます。対応する[値]フィールドにメタ値を入力します。たとえば、「ipv4 is ip_src」と入力して、GeoIPレコードがip_srcを元にGeoIP検索データベースから検出されるようにします。さらに、ブラックリストにGeoIPソースを使用した場合は、サブ条件を追加してルールの結果に含める地域を指定します。たとえば、ドイツの結果のみを含むルールを指定するには、「CountryCode is DE」と入力します。
例:ブラックリスト
次のステートメントは、米国以外の国を送信元とする、宛先TCPポート25への実行可能ファイルを含む非SMTPトラフィックを監視するルールのブラックリスト ステートメントを示しています。
例:大文字と小文字を区別しない、厳格なパターン マッチング、「Is Not Null」演算子の使用
次の例では、大文字と小文字を区別せず、null値を除外し、厳格なパターン マッチングにより、予想されるルール結果が返されるようにします。次の条件によりルールが構成されます。
注:各条件については、以下のセクションで詳しく説明します。
条件ごとに、ルール ビルダでステートメントを作成します。次のステートメントはFailures条件を表しています。
次のステートメントはSuccess条件を表しています。
次のステートメントはModifyPassword条件を表しています。
例の結果
上記の例で説明したルールにより発生したアラートは、7つのイベントによってトリガーされ、各イベントに同一のユーザが含まれていることが分かります。イベントが厳密なパターンに従っていることも分かります。つまり5回のログイン失敗イベントの後に、ログインに成功し、その後にアカウントが変更されています。
次の図は、[対応]の[アラート リスト]ビューのアラートを示しています。
次の図は、[応答アラートの詳細]ビューのアラートのイベントを示しています。
いずれかのイベントのソースをクリックして調査モジュールにドリル ダウンすると、各文字列値の大文字小文字が確認できます。[大文字と小文字を区別しない]を使用したため、文字列値が大文字でも小文字でもルールはトリガーされます。
例:ルール結果のグループ化
[Group By]フィールドを使用すると、ルール結果をグループ化してフィルタリングできます。たとえば、Joe、Jane、Johnの3つのユーザ アカウントがある場合は、[Group By]フィールドに、user_dstを指定します。その結果、Joe、Jane、Johnのアカウントでグループ化されたイベントが表示されます。
また複数のキーでグループ化して、ルール結果をさらに絞り込むこともできます。たとえば、ユーザ宛先アカウントとマシンでグループ化し、同じマシンから同じ宛先アカウントに複数回ログインしているユーザがいないかを確認できます。 これを行うには、device_classとuser_dstでグループ化します。
次の例は、device_classとuser_dstでグループ化されたルールを示しています。
例:数値演算子の使用
数値演算子を使用すると、値が特定の値より大きい、小さい、または同等であることを指定するなど、数値に対するルールを作成できます。これは特に、「payload is greater than 7000」のように、数値の閾値を指定する場合に役に立ちます。
次の例では、転送サイズが大きく、ペイロードのサイズが疑わしい範囲にある一般的なポートを使用した特定の宛先へのデータ転送を特定しています。