Detection Rules ist die Heimat der von Elastic Security verwendeten Regeln. Dieses Repository wird für die Entwicklung, Wartung, Prüfung, Validierung und Veröffentlichung von Regeln für die Detection Engine von Elastic Security verwendet.
Dieses Repository wurde erstmals im Elastic-Blogbeitrag „Elastic Security öffnet öffentliches Erkennungsregel-Repository“ angekündigt. Weitere Inhalte finden Sie im begleitenden Webinar „Elastic Security: Einführung in das öffentliche Repository für Erkennungsregeln“.
Erkennungsregeln enthalten mehr als nur statische Regeldateien. Dieses Repository enthält auch Code für Unit-Tests in Python und die Integration mit der Detection Engine in Kibana.
Ordner | Beschreibung |
---|---|
detection_rules/ | Python-Modul zum Analysieren, Validieren und Verpacken von Regeln |
etc/ | Verschiedene Dateien, wie ECS- und Beats-Schemata |
hunting/ | Stammverzeichnis, in dem Threat-Hunting-Pakete und -Abfragen gespeichert werden |
kibana/ | Python-Bibliothek zur Verarbeitung der API-Aufrufe an Kibana und die Detection Engine |
kql/ | Python-Bibliothek zum Parsen und Validieren der Kibana Query Language |
rta/ | Red Team Automation-Code zur Emulation von Angreifertechniken, der zum Testen von Regeln verwendet wird |
rules/ | Stammverzeichnis, in dem Regeln gespeichert werden |
rules_building_block/ | Stammverzeichnis, in dem Bausteinregeln gespeichert sind |
tests/ | Python-Code für Unit-Test-Regeln |
Obwohl Regeln durch manuelles Erstellen .toml
Dateien hinzugefügt werden können, empfehlen wir dies nicht. Dieses Repository besteht außerdem aus einem Python-Modul, das die Regelerstellung und Unit-Tests unterstützt. Vorausgesetzt, Sie haben Python 3.12+, führen Sie den folgenden Befehl aus, um die Abhängigkeiten mithilfe des Makefiles zu installieren:
✗ 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...
...
Oder installieren Sie die Abhängigkeiten mit dem folgenden Befehl:
$ 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
...
Hinweis: Die Pakete kibana
und kql
sind auf PyPI nicht verfügbar und müssen aus dem lib
-Verzeichnis installiert werden. Das hunting
-Paket verfügt über optionale Abhängigkeiten, die mit pip3 install ".[hunting]
installiert werden müssen.
# 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
Denken Sie daran, Ihre virtuelle Umgebung zu aktivieren, falls Sie eine verwenden. Bei der Installation über make
wird die zugehörige virtuelle Umgebung in env/detection-rules-build/
erstellt. Wenn Sie Probleme bei der Verwendung einer Python 3.12-Umgebung haben, lesen Sie bitte den entsprechenden Abschnitt in unserem Leitfaden zur Fehlerbehebung.
Um zu bestätigen, dass alles ordnungsgemäß installiert wurde, führen Sie es mit dem Flag --help
aus
$ 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.
Notiz:
Scriptspywin32_postinstall.py -install
ausführen. Im Beitragsleitfaden wird beschrieben, wie Sie mit den Befehlen create-rule
und test
eine neue Regel erstellen und testen, wenn Sie zu Erkennungsregeln beitragen.
Informationen zur erweiterten Verwendung der Befehlszeilenschnittstelle (CLI) finden Sie im CLI-Handbuch.
Wir freuen uns über Ihre Beiträge zu Erkennungsregeln! Bevor Sie einen Beitrag leisten, machen Sie sich bitte mit diesem Repository, seiner Verzeichnisstruktur und unserer Philosophie zur Regelerstellung vertraut. Wenn Sie bereit sind, einen Beitrag zu leisten, lesen Sie den Beitragsleitfaden, um zu erfahren, wie wir Erkennungsideen in Produktionsregeln umwandeln und durch Tests validieren.
Alles in diesem Repository – Regeln, Code, RTA usw. – ist unter der Elastic License v2 lizenziert. Diese Regeln sind für die Verwendung im Kontext der Detection Engine innerhalb der Elastic Security-Anwendung konzipiert. Wenn Sie unseren verwalteten Elastic Cloud-Service oder die Standardverteilung der Elastic Stack-Software verwenden, die alle kostenlosen Funktionen umfasst, erhalten Sie die neuesten Regeln, wenn Sie zum ersten Mal zur Erkennungs-Engine navigieren.
Gelegentlich möchten wir möglicherweise Regeln aus einem anderen Repository importieren, für das bereits eine Lizenz vorhanden ist, z. B. MIT oder Apache 2.0. Dies ist willkommen, sofern die Lizenz eine Unterlizenzierung unter der Elastic License v2 zulässt. Wir behalten diese Lizenzhinweise in NOTICE.txt
und unterlizenzieren sie als Elastic License v2 mit allen anderen Regeln. Wir verlangen außerdem von Mitwirkenden, dass sie eine Mitwirkenden-Lizenzvereinbarung unterzeichnen, bevor sie Code zu Elastic-Repositorys beisteuern.