กฎการตรวจจับคือบ้านของกฎที่ใช้โดย Elastic Security พื้นที่เก็บข้อมูลนี้ใช้สำหรับการพัฒนา การบำรุงรักษา การทดสอบ การตรวจสอบ และการเผยแพร่กฎสำหรับ Detection Engine ของ Elastic Security
พื้นที่เก็บข้อมูลนี้ได้รับการประกาศครั้งแรกในบล็อกโพสต์ของ Elastic โดย Elastic Security จะเปิด repo กฎการตรวจจับสาธารณะ สำหรับเนื้อหาเพิ่มเติม โปรดดูการสัมมนาผ่านเว็บที่แนบมาด้วย Elastic Security: การแนะนำพื้นที่เก็บข้อมูลสาธารณะสำหรับกฎการตรวจจับ
กฎการตรวจจับมีมากกว่าไฟล์กฎแบบคงที่ พื้นที่เก็บข้อมูลนี้ยังมีโค้ดสำหรับการทดสอบหน่วยใน Python และบูรณาการกับ Detection Engine ใน Kibana
โฟลเดอร์ | คำอธิบาย |
---|---|
detection_rules/ | โมดูล Python สำหรับการแยกวิเคราะห์กฎ การตรวจสอบ และการบรรจุ |
etc/ | ไฟล์เบ็ดเตล็ด เช่น ECS และ Beats schema |
hunting/ | ไดเร็กทอรีรากที่จัดเก็บแพ็คเกจการค้นหาภัยคุกคามและการสืบค้น |
kibana/ | ไลบรารี Python สำหรับจัดการการเรียก API ไปยัง Kibana และ Detection Engine |
kql/ | ไลบรารี Python สำหรับการแยกวิเคราะห์และตรวจสอบภาษา Kibana Query |
rta/ | โค้ด Red Team Automation ใช้เพื่อจำลองเทคนิคของผู้โจมตี ใช้สำหรับการทดสอบกฎ |
rules/ | ไดเร็กทอรีรากที่เก็บกฎ |
rules_building_block/ | ไดเร็กทอรีรากที่เก็บกฎแบบเอกสารสำเร็จรูป |
tests/ | รหัส Python สำหรับกฎการทดสอบหน่วย |
แม้ว่ากฎจะสามารถเพิ่มได้ด้วยการสร้างไฟล์ .toml
ด้วยตนเอง แต่เราไม่แนะนำให้ทำเช่นนั้น พื้นที่เก็บข้อมูลนี้ยังประกอบด้วยโมดูลหลามที่ช่วยในการสร้างกฎและการทดสอบหน่วย สมมติว่าคุณมี Python 3.12+ ให้รันคำสั่งด้านล่างเพื่อติดตั้งการพึ่งพาโดยใช้ 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...
...
หรือติดตั้งการพึ่งพาโดยใช้คำสั่งต่อไปนี้:
$ 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
เรายินดีที่คุณมีส่วนร่วมในกฎการตรวจจับ! ก่อนที่จะมีส่วนร่วม โปรดทำความคุ้นเคยกับพื้นที่เก็บข้อมูลนี้ โครงสร้างไดเรกทอรี และปรัชญาของเราเกี่ยวกับการสร้างกฎ เมื่อคุณพร้อมที่จะมีส่วนร่วม โปรดอ่านคู่มือการสนับสนุนเพื่อเรียนรู้วิธีที่เราเปลี่ยนแนวคิดการตรวจจับให้เป็นกฎการใช้งานจริง และตรวจสอบด้วยการทดสอบ
ทุกอย่างใน Repository นี้ — กฎ, โค้ด, RTA ฯลฯ — ได้รับอนุญาตภายใต้ Elastic License v2 กฎเหล่านี้ได้รับการออกแบบเพื่อใช้ในบริบทของกลไกการตรวจจับภายในแอปพลิเคชัน Elastic Security หากคุณกำลังใช้บริการที่มีการจัดการ Elastic Cloud ของเรา หรือการแจกจ่ายซอฟต์แวร์ Elastic Stack เริ่มต้นที่มีคุณสมบัติฟรีครบชุด คุณจะได้รับกฎล่าสุดในครั้งแรกที่คุณนำทางไปยังกลไกการตรวจจับ
ในบางครั้ง เราอาจต้องการนำเข้ากฎจากพื้นที่เก็บข้อมูลอื่นที่มีใบอนุญาตอยู่แล้ว เช่น MIT หรือ Apache 2.0 ยินดีเป็นอย่างยิ่ง ตราบใดที่ใบอนุญาตอนุญาตให้ใช้สิทธิ์ช่วงภายใต้ Elastic License v2 เราเก็บประกาศใบอนุญาตเหล่านั้นไว้ใน NOTICE.txt
และใบอนุญาตย่อยเป็น Elastic License v2 ร่วมกับกฎอื่นๆ ทั้งหมด นอกจากนี้ เรายังกำหนดให้ผู้มีส่วนร่วมลงนามในข้อตกลงสิทธิ์การใช้งานผู้ร่วมให้ข้อมูลก่อนที่จะบริจาคโค้ดให้กับพื้นที่เก็บข้อมูล Elastic ใดๆ