検出ルールは、Elastic Security で使用されるルールのホームです。このリポジトリは、Elastic Security の検出エンジンのルールの開発、メンテナンス、テスト、検証、リリースに使用されます。
このリポジトリは、Elastic のブログ投稿「Elastic Security がパブリック検出ルール リポジトリをオープン」で初めて発表されました。追加のコンテンツについては、付随するウェビナー「Elastic Security: 検出ルールのパブリック リポジトリの紹介」を参照してください。
検出ルールには、静的なルール ファイル以上のものが含まれています。このリポジトリには、Python での単体テストと Kibana の検出エンジンとの統合のためのコードも含まれています。
フォルダ | 説明 |
---|---|
detection_rules/ | ルールの解析、検証、パッケージ化のための Python モジュール |
etc/ | ECS や Beats スキーマなどのその他のファイル |
hunting/ | 脅威ハンティング パッケージとクエリが保存されるルート ディレクトリ |
kibana/ | Kibana および検出エンジンへの API 呼び出しを処理するための Python ライブラリ |
kql/ | Kibana クエリ言語を解析および検証するための Python ライブラリ |
rta/ | 攻撃者の手法をエミュレートするために使用される Red Team Automation コード、ルールのテストに使用される |
rules/ | ルールが保存されるルート ディレクトリ |
rules_building_block/ | ビルディング ブロック ルールが保存されるルート ディレクトリ |
tests/ | 単体テストルールのPythonコード |
.toml
ファイルを手動で作成してルールを追加することもできますが、お勧めしません。このリポジトリは、ルールの作成と単体テストを支援する Python モジュールでも構成されています。 Python 3.12 以降を使用していると仮定して、メイクファイルを使用して以下のコマンドを実行し、依存関係をインストールします。
✗ make
python3.12 -m pip install --upgrade pip setuptools
Looking in indexes: https://pypi.org/simple
Requirement already satisfied: pip in /opt/homebrew/lib/python3.12/site-packages (24.0)
Requirement already satisfied: setuptools in /opt/homebrew/lib/python3.12/site-packages (69.1.1)
python3.12 -m venv ./env/detection-rules-build
./env/detection-rules-build/bin/pip install --upgrade pip setuptools
Looking in indexes: https://pypi.org/simple
Requirement already satisfied: pip in ./env/detection-rules-build/lib/python3.12/site-packages (24.0)
Collecting setuptools
Using cached setuptools-69.1.1-py3-none-any.whl.metadata (6.2 kB)
Using cached setuptools-69.1.1-py3-none-any.whl (819 kB)
Installing collected packages: setuptools
Successfully installed setuptools-69.1.1
Installing kql and kibana packages...
...
または、次のコマンドを使用して依存関係をインストールします。
$ pip3 install " .[dev] "
Collecting jsl==0.2.4
Downloading jsl-0.2.4.tar.gz (21 kB)
Collecting jsonschema==3.2.0
Downloading jsonschema-3.2.0-py2.py3-none-any.whl (56 kB)
|████████████████████████████████| 56 kB 318 kB/s
Collecting requests==2.22.0
Downloading requests-2.22.0-py2.py3-none-any.whl (57 kB)
|████████████████████████████████| 57 kB 1.2 MB/s
Collecting Click==7.0
Downloading Click-7.0-py2.py3-none-any.whl (81 kB)
|████████████████████████████████| 81 kB 2.6 MB/s
...
注: kibana
およびkql
パッケージは PyPI では使用できないため、 lib
ディレクトリからインストールする必要があります。 hunting
パッケージにはpip3 install ".[hunting]
でインストールされるオプションの依存関係があります。
# Install from the repository
pip3 install git+https://github.com/elastic/detection-rules.git#subdirectory=kibana
pip3 install git+https://github.com/elastic/detection-rules.git#subdirectory=kql
# Or locally for development
pip3 install lib/kibana lib/kql
仮想環境を使用している場合は、必ず仮想環境をアクティブ化してください。 make
経由でインストールした場合、関連する仮想環境がenv/detection-rules-build/
に作成されます。 Python 3.12 環境の使用で問題が発生した場合は、トラブルシューティング ガイドの関連セクションを参照してください。
すべてが正しくインストールされたことを確認するには、 --help
フラグを指定して実行します。
$ python -m detection_rules --help
Usage: detection_rules [OPTIONS] COMMAND [ARGS]...
Commands for detection-rules repository.
Options:
-d, --debug / -n, --no-debug Print full exception stacktrace on errors
-h, --help Show this message and exit.
Commands:
create-rule Create a detection rule.
dev Commands for development and management by internal...
es Commands for integrating with Elasticsearch.
import-rules Import rules from json, toml, or Kibana exported rule...
kibana Commands for integrating with Kibana.
mass-update Update multiple rules based on eql results.
normalize-data Normalize Elasticsearch data timestamps and sort.
rule-search Use KQL or EQL to find matching rules.
test Run unit tests over all of the rules.
toml-lint Cleanup files with some simple toml formatting.
validate-all Check if all rules validates against a schema.
validate-rule Check if a rule staged in rules dir validates against a...
view-rule View an internal rule or specified rule file.
注記:
Scriptspywin32_postinstall.py -install
も実行する必要がある場合があります。コントリビューション ガイドでは、検出ルールにコントリビュートするときに、 create-rule
とtest
コマンドを使用して新しいルールを作成およびテストする方法について説明します。
より高度なコマンド ライン インターフェイス (CLI) の使用方法については、CLI ガイドを参照してください。
検出ルールへの貢献を歓迎します。貢献する前に、このリポジトリ、そのディレクトリ構造、およびルール作成に関する当社の哲学をよく理解してください。貢献する準備ができたら、貢献ガイドを読んで、検出のアイデアを本番ルールに変換し、テストで検証する方法を学びましょう。
このリポジトリ内のすべてのもの (ルール、コード、RTA など) は、Elastic License v2 に基づいてライセンスされています。これらのルールは、Elastic Security アプリケーション内の検出エンジンのコンテキストで使用されるように設計されています。 Elastic Cloud マネージド サービス、または無料機能の完全なセットを含む Elastic Stack ソフトウェアのデフォルトのディストリビューションを使用している場合は、初めて検出エンジンに移動したときに最新のルールを取得します。
場合によっては、MIT や Apache 2.0 など、すでにライセンスを持っている別のリポジトリからルールをインポートしたい場合があります。 Elastic License v2 に基づくサブライセンスがライセンスで許可されている限り、これは歓迎されます。これらのライセンス通知はNOTICE.txt
に保存され、他のすべてのルールとともに Elastic License v2 としてサブライセンスが付与されます。また、Elastic リポジトリにコードを寄稿する前に、寄稿者が寄稿者ライセンス契約に署名することも求められます。