Правила обнаружения — это дом для правил, используемых Elastic Security. Этот репозиторий используется для разработки, обслуживания, тестирования, проверки и выпуска правил для механизма обнаружения Elastic Security.
Об этом репозитории впервые было объявлено в блоге Elastic: Elastic Security открывает репозиторий общедоступных правил обнаружения. Дополнительную информацию см. в соответствующем вебинаре «Эластичная безопасность: введение в общедоступный репозиторий для правил обнаружения».
Правила обнаружения содержат больше, чем просто файлы статических правил. Этот репозиторий также содержит код для модульного тестирования на Python и интеграции с механизмом обнаружения в Kibana.
папка | описание |
---|---|
detection_rules/ | Модуль Python для анализа, проверки и упаковки правил. |
etc/ | Разные файлы, такие как схемы ECS и Beats. |
hunting/ | Корневой каталог, в котором хранятся пакеты поиска угроз и запросы. |
kibana/ | Библиотека Python для обработки вызовов API к Kibana и механизму обнаружения. |
kql/ | Библиотека Python для анализа и проверки языка запросов Kibana. |
rta/ | Код Red Team Automation, используемый для эмуляции методов злоумышленника и используемый для тестирования правил. |
rules/ | Корневой каталог, в котором хранятся правила |
rules_building_block/ | Корневой каталог, в котором хранятся правила стандартных блоков. |
tests/ | Код Python для правил модульного тестирования |
Хотя правила можно добавлять, создавая файлы .toml
вручную, мы не рекомендуем это делать. Этот репозиторий также состоит из модуля Python, который помогает создавать правила и модульное тестирование. Предполагая, что у вас Python 3.12+, выполните приведенную ниже команду, чтобы установить зависимости с помощью 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...
...
Или установите зависимости, используя следующую команду:
$ 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. Это приветствуется, если лицензия допускает сублицензирование по Elastic License v2. Мы храним эти уведомления о лицензии в NOTICE.txt
и сублицензируем их как Elastic License v2 со всеми остальными правилами. Мы также требуем, чтобы участники подписали Лицензионное соглашение участника, прежде чем добавлять код в любые репозитории Elastic.