Les règles de détection hébergent les règles utilisées par Elastic Security. Ce référentiel est utilisé pour le développement, la maintenance, les tests, la validation et la publication de règles pour le moteur de détection d'Elastic Security.
Ce référentiel a été annoncé pour la première fois sur le blog d'Elastic, Elastic Security ouvre un dépôt public de règles de détection. Pour obtenir du contenu supplémentaire, consultez le webinaire ci-joint, Elastic Security : Présentation du référentiel public pour les règles de détection.
Les règles de détection contiennent bien plus que de simples fichiers de règles statiques. Ce référentiel contient également du code pour les tests unitaires en Python et l'intégration avec le moteur de détection dans Kibana.
dossier | description |
---|---|
detection_rules/ | Module Python pour l'analyse, la validation et le packaging des règles |
etc/ | Fichiers divers, tels que les schémas ECS et Beats |
hunting/ | Répertoire racine où sont stockés le package de recherche de menaces et les requêtes |
kibana/ | Bibliothèque Python pour gérer les appels d'API vers Kibana et le moteur de détection |
kql/ | Bibliothèque Python pour analyser et valider le langage de requête Kibana |
rta/ | Code Red Team Automation utilisé pour émuler les techniques des attaquants, utilisé pour les tests de règles |
rules/ | Répertoire racine où sont stockées les règles |
rules_building_block/ | Répertoire racine où sont stockées les règles des blocs de construction |
tests/ | Code Python pour les règles de tests unitaires |
Bien que des règles puissent être ajoutées en créant manuellement des fichiers .toml
, nous ne le recommandons pas. Ce référentiel comprend également un module Python qui facilite la création de règles et les tests unitaires. En supposant que vous disposez de Python 3.12+, exécutez la commande ci-dessous pour installer les dépendances à l'aide du 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...
...
Ou installez les dépendances à l'aide de la commande suivante :
$ 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
...
Remarque : Les packages kibana
et kql
ne sont pas disponibles sur PyPI et doivent être installés à partir du répertoire lib
. Le package hunting
a des dépendances facultatives à installer avec 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
N'oubliez pas, assurez-vous d'activer votre environnement virtuel si vous en utilisez un. S'il est installé via make
, l'environnement virtuel associé est créé dans env/detection-rules-build/
. Si vous rencontrez des difficultés pour utiliser un environnement Python 3.12, veuillez consulter la section correspondante de notre guide de dépannage.
Pour confirmer que tout a été correctement installé, exécutez avec l'indicateur --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.
Note:
Scriptspywin32_postinstall.py -install
en fonction de votre version de Python. Le guide de contribution décrit comment utiliser les commandes create-rule
et test
pour créer et tester une nouvelle règle lors de la contribution aux règles de détection.
Pour une utilisation plus avancée de l’interface de ligne de commande (CLI), reportez-vous au guide CLI.
Nous apprécions vos contributions aux règles de détection ! Avant de contribuer, veuillez vous familiariser avec ce référentiel, sa structure de répertoires et notre philosophie sur la création de règles. Lorsque vous êtes prêt à contribuer, lisez le guide de contribution pour découvrir comment nous transformons les idées de détection en règles de production et validons par des tests.
Tout ce qui se trouve dans ce référentiel (règles, code, RTA, etc.) est sous licence Elastic License v2. Ces règles sont conçues pour être utilisées dans le contexte du moteur de détection au sein de l'application Elastic Security. Si vous utilisez notre service géré Elastic Cloud ou la distribution par défaut du logiciel Elastic Stack qui inclut l'ensemble des fonctionnalités gratuites, vous obtiendrez les dernières règles la première fois que vous accéderez au moteur de détection.
Parfois, nous pouvons vouloir importer des règles depuis un autre référentiel disposant déjà d'une licence, tel que MIT ou Apache 2.0. Ceci est le bienvenu, à condition que la licence autorise l'octroi de sous-licences sous la licence Elastic v2. Nous conservons ces avis de licence dans NOTICE.txt
et accordons une sous-licence en tant que licence Elastic v2 avec toutes les autres règles. Nous demandons également aux contributeurs de signer un contrat de licence de contributeur avant de contribuer au code d'un référentiel Elastic.