Aturan Deteksi adalah rumah bagi aturan yang digunakan oleh Elastic Security. Repositori ini digunakan untuk pengembangan, pemeliharaan, pengujian, validasi, dan pelepasan aturan untuk Mesin Deteksi Keamanan Elastis.
Repositori ini pertama kali diumumkan pada postingan blog Elastic, Elastic Security membuka repo aturan deteksi publik. Untuk konten tambahan, lihat webinar yang menyertainya, Keamanan Elastis: Memperkenalkan repositori publik untuk aturan deteksi.
Aturan Deteksi berisi lebih dari sekadar file aturan statis. Repositori ini juga berisi kode untuk pengujian unit dengan Python dan diintegrasikan dengan Mesin Deteksi di Kibana.
map | keterangan |
---|---|
detection_rules/ | Modul Python untuk penguraian aturan, validasi, dan pengemasan |
etc/ | File lain-lain, seperti skema ECS dan Beats |
hunting/ | Direktori root tempat paket dan kueri perburuan ancaman disimpan |
kibana/ | Pustaka Python untuk menangani panggilan API ke Kibana dan Mesin Deteksi |
kql/ | Pustaka Python untuk parsing dan validasi Bahasa Kueri Kibana |
rta/ | Kode Otomatisasi Tim Merah digunakan untuk meniru teknik penyerang, digunakan untuk pengujian aturan |
rules/ | Direktori root tempat aturan disimpan |
rules_building_block/ | Direktori root tempat aturan blok penyusun disimpan |
tests/ | Kode Python untuk aturan pengujian unit |
Meskipun aturan dapat ditambahkan dengan membuat file .toml
secara manual, kami tidak menyarankannya. Repositori ini juga terdiri dari modul python yang membantu pembuatan aturan dan pengujian unit. Dengan asumsi Anda memiliki Python 3.12+, jalankan perintah di bawah ini untuk menginstal dependensi menggunakan 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...
...
Atau instal dependensi menggunakan perintah berikut:
$ 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
...
Catatan: Paket kibana
dan kql
tidak tersedia di PyPI dan harus diinstal dari direktori lib
. Paket hunting
memiliki dependensi opsional untuk diinstal dengan 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
Ingat, pastikan untuk mengaktifkan lingkungan virtual Anda jika Anda menggunakannya. Jika diinstal melalui make
, lingkungan virtual terkait dibuat di env/detection-rules-build/
. Jika Anda mengalami masalah dalam menggunakan lingkungan Python 3.12, silakan lihat bagian yang relevan di panduan pemecahan masalah kami.
Untuk mengonfirmasi bahwa semuanya telah terinstal dengan benar, jalankan dengan tanda --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.
Catatan:
Scriptspywin32_postinstall.py -install
tergantung pada versi python Anda. Panduan kontribusi menjelaskan cara menggunakan perintah create-rule
dan test
untuk membuat dan menguji aturan baru saat berkontribusi pada Aturan Deteksi.
Untuk penggunaan antarmuka baris perintah (CLI) lebih lanjut, lihat panduan CLI.
Kami menyambut kontribusi Anda pada Aturan Deteksi! Sebelum berkontribusi, harap pahami repositori ini, struktur direktorinya, dan filosofi kami tentang pembuatan aturan. Saat Anda siap berkontribusi, baca panduan kontribusi untuk mempelajari cara kami mengubah ide deteksi menjadi aturan produksi dan memvalidasi dengan pengujian.
Segala sesuatu di repositori ini — aturan, kode, RTA, dll. — dilisensikan di bawah Elastic License v2. Aturan ini dirancang untuk digunakan dalam konteks Mesin Deteksi dalam aplikasi Keamanan Elastis. Jika Anda menggunakan layanan terkelola Elastic Cloud kami atau distribusi default perangkat lunak Elastic Stack yang menyertakan serangkaian fitur gratis lengkap, Anda akan mendapatkan aturan terbaru saat pertama kali menavigasi ke mesin pendeteksi.
Terkadang, kita mungkin ingin mengimpor aturan dari repositori lain yang sudah memiliki lisensi, seperti MIT atau Apache 2.0. Hal ini diperbolehkan, selama lisensi mengizinkan sublisensi berdasarkan Elastic License v2. Kami menyimpan pemberitahuan lisensi tersebut di NOTICE.txt
dan mensublisensikan sebagai Lisensi Elastis v2 dengan semua aturan lainnya. Kami juga mewajibkan kontributor untuk menandatangani Perjanjian Lisensi Kontributor sebelum menyumbangkan kode ke repositori Elastic mana pun.