偵測規則是 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/ | 紅隊自動化程式碼用於模擬攻擊者技術,用於規則測試 |
rules/ | 儲存規則的根目錄 |
rules_building_block/ | 儲存建構塊規則的根目錄 |
tests/ | 單元測試規則的Python程式碼 |
儘管可以透過手動建立.toml
檔案來新增規則,但我們不建議這樣做。該儲存庫還包含一個有助於規則建立和單元測試的 python 模組。假設您有 Python 3.12+,請執行以下命令以使用 makefile 安裝依賴項:
✗ 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
這取決於您的 python 版本。貢獻指南描述了在貢獻檢測規則時如何使用create-rule
和test
命令建立和測試新規則。
有關更進階的命令列介面 (CLI) 使用方法,請參閱 CLI 指南。
我們歡迎您對檢測規則做出貢獻!在貢獻之前,請熟悉此儲存庫、其目錄結構以及我們對規則建立的理念。當您準備好做出貢獻時,請閱讀貢獻指南,以了解我們如何將檢測想法轉化為生產規則並通過測試進行驗證。
此儲存庫中的所有內容(規則、程式碼、RTA 等)均根據 Elastic License v2 授權。這些規則旨在在 Elastic Security 應用程式內的偵測引擎上下文中使用。如果您使用我們的 Elastic Cloud 託管服務或包含全套免費功能的 Elastic Stack 軟體的預設發行版,您將在首次導航至偵測引擎時獲得最新規則。
有時,我們可能會想要從另一個已經擁有授權的儲存庫(例如 MIT 或 Apache 2.0)匯入規則。只要許可證允許在彈性許可證 v2 下進行再許可,這是受歡迎的。我們將這些授權聲明保留在NOTICE.txt
中,並將子授權作為 Elastic License v2 以及所有其他規則。我們還要求貢獻者在向任何 Elastic 儲存庫貢獻程式碼之前簽署貢獻者授權協議。