Las reglas de detección son el hogar de las reglas utilizadas por Elastic Security. Este repositorio se utiliza para el desarrollo, mantenimiento, prueba, validación y publicación de reglas para el motor de detección de Elastic Security.
Este repositorio se anunció por primera vez en la publicación del blog de Elastic, Elastic Security abre un repositorio público de reglas de detección. Para obtener contenido adicional, consulte el seminario web adjunto, Elastic Security: Presentación del repositorio público para reglas de detección.
Las reglas de detección contienen más que solo archivos de reglas estáticas. Este repositorio también contiene código para pruebas unitarias en Python y la integración con el motor de detección en Kibana.
carpeta | descripción |
---|---|
detection_rules/ | Módulo Python para análisis, validación y empaquetado de reglas |
etc/ | Archivos varios, como esquemas ECS y Beats |
hunting/ | Directorio raíz donde se almacenan el paquete de búsqueda de amenazas y las consultas. |
kibana/ | Biblioteca Python para manejar las llamadas API a Kibana y el motor de detección |
kql/ | Biblioteca Python para analizar y validar el lenguaje de consulta Kibana |
rta/ | Código de Red Team Automation utilizado para emular técnicas de atacantes, utilizado para pruebas de reglas |
rules/ | Directorio raíz donde se almacenan las reglas |
rules_building_block/ | Directorio raíz donde se almacenan las reglas de los bloques de construcción |
tests/ | Código Python para reglas de prueba unitaria |
Aunque se pueden agregar reglas creando archivos .toml
manualmente, no lo recomendamos. Este repositorio también consta de un módulo de Python que ayuda a la creación de reglas y pruebas unitarias. Suponiendo que tiene Python 3.12+, ejecute el siguiente comando para instalar las dependencias usando el archivo MAKE:
✗ 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...
...
O instale las dependencias usando el siguiente comando:
$ 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
...
Nota: Los paquetes kibana
y kql
no están disponibles en PyPI y deben instalarse desde el directorio lib
. El paquete hunting
tiene dependencias opcionales que se instalarán con 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
Recuerde, asegúrese de activar su entorno virtual si está utilizando uno. Si se instala mediante make
, el entorno virtual asociado se crea en env/detection-rules-build/
. Si tiene problemas para utilizar un entorno Python 3.12, consulte la sección correspondiente en nuestra guía de solución de problemas.
Para confirmar que todo se instaló correctamente, ejecute con el indicador --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.
Nota:
Scriptspywin32_postinstall.py -install
dependiendo de su versión de Python. La guía de contribución describe cómo utilizar los comandos create-rule
y test
para crear y probar una nueva regla al contribuir a las reglas de detección.
Para un uso más avanzado de la interfaz de línea de comandos (CLI), consulte la guía CLI.
¡Agradecemos sus contribuciones a las reglas de detección! Antes de contribuir, familiarícese con este repositorio, su estructura de directorios y nuestra filosofía sobre la creación de reglas. Cuando esté listo para contribuir, lea la guía de contribución para saber cómo convertimos ideas de detección en reglas de producción y validamos con pruebas.
Todo lo que hay en este repositorio (reglas, código, RTA, etc.) tiene la licencia Elastic License v2. Estas reglas están diseñadas para usarse en el contexto del motor de detección dentro de la aplicación Elastic Security. Si está utilizando nuestro servicio administrado Elastic Cloud o la distribución predeterminada del software Elastic Stack que incluye el conjunto completo de funciones gratuitas, obtendrá las reglas más recientes la primera vez que navegue hasta el motor de detección.
En ocasiones, es posible que queramos importar reglas de otro repositorio que ya tenga licencia, como MIT o Apache 2.0. Esto es bienvenido, siempre y cuando la licencia permita sublicenciar bajo la Licencia Elastic v2. Mantenemos esos avisos de licencia en NOTICE.txt
y sublicenciamos como Licencia Elastic v2 con todas las demás reglas. También exigimos que los contribuyentes firmen un Acuerdo de licencia de colaborador antes de contribuir con código a cualquier repositorio de Elastic.