Archiver:ルールとクエリーのガイドライン

Document created by RSA Information Design and Development on Feb 15, 2017
Version 1Show Document
  • View in full screen mode
  

RSA Security Analytics Coreサービスのすべてのクエリーとルール条件は、次のガイドラインに従う必要があります。 

すべての文字列リテラルとタイム スタンプは引用符で囲む必要があります。数値、MAC、IPアドレスは引用符で囲まないでください。

例:

  • extension = 'torrent'
  • time='2015-jan-01 00:00:00'
  • service=80
  • ip.src = 192.168.0.1

注:演算子の左右のスペースはオプションです。
たとえば、service=80またはservice = 80を使用できます。

ルールの例

次の表に、ルールの条件の例を示します。ルールの条件は、Archiverのログ保存コレクションのほか、Decoder、Log Decoder、Concentratorのアプリケーション ルール、ネットワーク ルール、相関ルールに使用できます。また、すべてのコア データベース クエリーのすべてのWhere句でも使用されます。

Security Analyticsのルールの構文の詳細については、「RSA Security Analytics コア データベース チューニング ガイド」の「クエリー」トピックにある「where句」を参照してください。

                                   
ルール名条件
ComplianceDevicesdevice.group='PCI Devices' || device.group='HIPPA Devices'
HighValueWindowsdevice.group='Windows Compliance'
MediumValueWindowsdevice.type='winevent_nic' && msg.id='security_4624_security'
LowValueWinLogsdevice.type='winevent_nic' && msg.id='security_4648_security'
LowValueProxyLogsdevice.class='proxy' && msg.id='antivirus_license_expired'
GeneralWindowsdevice.type='winevent_nic'

Security Analytics 10.6の厳密モード構成

Security Analyticsではバージョン10.2以降、有効な構文を厳密に定義する最新のParserをルールとクエリーに使用してきました。廃止された構文をコア サービスが検出すると、Security Analyticsログに廃止された構文についての警告が書き込まれます。現在、Security Analyticsは、新しいアプリケーション、ネットワーク、相関ルールに厳密な解析を適用しています。現在は廃止された、前世代のレガシーParserでは、曖昧な構文を使用できましたが、予期しない結果が発生する場合がありました。廃止された構文は、Security Analytics 10.6では引き続きサポートされますが、今後のバージョンではサポートされなくなる予定です。

Security Analytics 10.6に更新した後、廃止された構文を持つルールは、ユーザー インターフェイスでハイライト表示されます。ルール エディタによって追加のツールチップが提供されます。ルールを修正した後は、ハイライト表示が消えます。「DecoderおよびLog Decoder構成ガイド」の「廃止された構文を使用したルールの修正」を参照してください。

10.6で導入された/decoder/config/rules/rule.errors/concentrator/config/rules/rule.errorsの統計情報には、エラーがあるルールの数が含まれています。rule.errorsがゼロ以外の場合、Security Analyticsでは、ルールを修正する必要があることを示すヘルスモニタ アラートが生成されます。

さらに、外部システムからのクエリーの移行パスがあります。以前のバージョンから更新した後、システムは廃止されたモード(/sdk/config/query.parseによって制御される)で動作します。廃止されたモードでは、サービスは、厳密な解析に失敗したすべてのクエリーにレガシーParserを引き続き使用します。エラーが記録され、厳密な解析の失敗を通知するメッセージがクライアントにストリーミングされます。ただし、以前のバージョンと同様にクエリーはそのまま実行され、結果が返されます。廃止された構文で記述されたレポート、ダッシュボード、ルールその他について、ログと外部クライアントを監視し、これらが発生した場合はそれを修正する必要があります。

問題を解決した後は、すべてのコア サービス(Decoder、Log Decoder、Concentrator、Broker、Archivers)を厳密モードに切り替えて、それらの問題を監視できます。厳密モードではレガシーParserは使用せず、解析に違反するとエラーが返されます。今後のリリースでレガシーParserは削除される予定であり、廃止されたモードで動作するオプションも含まれないため、このタスクは10.6以降の主要なアップグレードの前に実行する必要があります。

新規インストールは、いずれもデフォルトで厳密モードで動作します。廃止されたモードで動作している既存のインフラストラクチャに、新しいアプライアンスを追加する場合は、[Administration]>[サービス]でサービスを選択し、[アクション]メニューから[表示]>[エクスプローラ]を選択します。スタック全体を厳密モードに移行するまで、この[エクスプローラ]ビューで/sdk/config/query.parseを廃止されたモードに切り替えることができます。

Security Analytics 10.6では、構文の問題が生じるのを防ぐため、すべてのルールの検証は必ず厳密モードで実行されます。

最新のParserを使用した有効な構文

次に、最新のParserを使用した有効な構文のルールを示します。

  • テキスト タイプのリテラル値は、すべて引用符で囲む必要があります。例:username = 'user1'
  • 引用符には一重引用符と二重引用符の両方を使用できますが、開始と終了が対応している必要があります(一重引用符で開始して二重引用符で終了することはできません)。
  • リテラル値に引用符が含まれる場合は、エスケープするか、別の引用符文字で囲みます。次の例はどちらも有効です(エスケープ文字にバックスラッシュを使用)。

    • username = "User’s"
    • username = 'User\'s'
  • リテラル文字列でバックスラッシュを使用するには、\\のようにバックスラッシュを1つ追加してエスケープします。
  • timeで日付を表す場合はすべて、time = 'YYYY-MM-DD HH:MM:SS'の形式で引用符を使用します。
  • timeでエポック(1970年1月1日)からの経過秒数を表す場合は、引用符で囲みません。
    例:time = 1448034064
  • 上記以外の場合はいずれも、引用符をつけません。たとえば、IPアドレス、Ethernetアドレス、数値などです。
    例:service = 80 && ip.src = 192.168.1.1/16

レガシーParserを使用した曖昧な構文の例

次に、廃止されたレガシーParserを使用した曖昧な構文の例を示します。

select * where alias.host = server-xeon

このクエリーは、alias.hostがserver-xeonと等しいすべてのメタを返すことを意図したものと見受けられますが、レガシーParserでは、そのように解釈されません。代わりに、このクエリーはselect * where alias.host = 'server'-'xeon'として解析されるため、引用符で囲まれていないダッシュ(-)が演算子と見なされ、「server」から「xeon」までの範囲の値を返すクエリーに変換されます。これにより、server-xeonと関係がない結果が返され、ユーザーはクエリー エンジンに問題があると考えてしまう可能性があります。10.6の厳密モードでは、次のエラーが返されます。

expecting <quoted_string> here: "server-xeon" 

これにより、クエリーが正しく解析されなかった理由をすぐに理解できます。

次に、廃止されたレガシーParserを使用した曖昧な構文の例をもう1つ示します。

select * where username=lastname,firstname

Security Analytics言語では、コンマ(暗黙的なOR演算子)で区切ることによって複数の値を指定できます。しかし、この例では、クエリー作成者が'lastname,firstname'を意図しているのか、'lastname''firstname'の2つの値を検索することを意図しているのかが明確ではありません。したがって、この構文も曖昧ですが、レガシーParserでは受け入れられてしまいます('lastname' OR 'firstname'と解釈されます)。最新のParserでは、'lastname,firstname''lastname','firstname'のどちらを意図しているかを明確にする必要があります。 

次の例は正しく解析されません。

select * where username = lastname, firstname

一目見ただけでは気付かないかもしれませんが、コンマとfirstnameの間にスペースがあります。引用符がないため正しく解析されませんが、レガシーParserでは解析エラーは返されず、そのまま実行されてしまいます(スペースの問題によりfirstnameは完全に無視されます)。さらに、実行されたクエリーが意図と異なることは、他の何らかの方法で結果セットが不完全であることを確認するまで気付かないという問題もあります。厳密な解析が有効な環境では、この場合も解析エラーが返されます。少なくとも以前のバージョン(および廃止されたモード)では、クエリーの監査ログのすぐ後に次のログ メッセージが表示されます。Rule '<rule name>' in deprecated format. Please make sure all text values are surrounded with quotes.

You are here
Table of Contents > 参考資料 > ルールとクエリーのガイドライン

Attachments

    Outcomes