قواعد الكشف هي موطن القواعد التي تستخدمها Elastic Security. يتم استخدام هذا المستودع لتطوير وصيانة واختبار والتحقق من صحة وإصدار قواعد محرك الكشف الخاص بـ Elastic Security.
تم الإعلان عن هذا المستودع لأول مرة في منشور مدونة Elastic، حيث يفتح Elastic Security مستودع قواعد الكشف العام. للحصول على محتوى إضافي، راجع الندوة عبر الويب المصاحبة، Elastic Security: تقديم المستودع العام لقواعد الكشف.
تحتوي قواعد الكشف على أكثر من مجرد ملفات قواعد ثابتة. يحتوي هذا المستودع أيضًا على تعليمات برمجية لاختبار الوحدة في Python والتكامل مع Detection Engine في Kibana.
المجلد | وصف |
---|---|
detection_rules/ | وحدة بايثون لتحليل القواعد والتحقق من صحتها وتعبئتها |
etc/ | ملفات متنوعة، مثل مخططات ECS وBeats |
hunting/ | الدليل الجذر حيث يتم تخزين حزمة البحث عن التهديدات والاستعلامات |
kibana/ | مكتبة Python للتعامل مع مكالمات API إلى Kibana ومحرك الكشف |
kql/ | مكتبة بايثون للتحليل والتحقق من صحة لغة الاستعلام كيبانا |
rta/ | رمز Red Team Automation المستخدم لمحاكاة تقنيات المهاجم، ويستخدم لاختبار القواعد |
rules/ | الدليل الجذر حيث يتم تخزين القواعد |
rules_building_block/ | الدليل الجذر حيث يتم تخزين قواعد الكتلة البرمجية الإنشائية |
tests/ | كود بايثون لقواعد اختبار الوحدة |
على الرغم من أنه يمكن إضافة القواعد عن طريق إنشاء ملفات .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.
نحن نرحب بمساهماتك في قواعد الكشف! قبل المساهمة، يرجى التعرف على هذا المستودع وبنية الدليل الخاصة به وفلسفتنا حول إنشاء القواعد. عندما تكون مستعدًا للمساهمة، اقرأ دليل المساهمة للتعرف على كيفية تحويل أفكار الكشف إلى قواعد إنتاج والتحقق من صحتها من خلال الاختبار.
كل شيء في هذا المستودع — القواعد، التعليمات البرمجية، هيئة الطرق والمواصلات، وما إلى ذلك — مرخص بموجب الترخيص المرن الإصدار 2. تم تصميم هذه القواعد لاستخدامها في سياق Detection Engine ضمن تطبيق Elastic Security. إذا كنت تستخدم خدمة Elastic Cloud المدارة لدينا أو التوزيع الافتراضي لبرنامج Elastic Stack الذي يتضمن المجموعة الكاملة من الميزات المجانية، فستحصل على أحدث القواعد في المرة الأولى التي تنتقل فيها إلى محرك الكشف.
في بعض الأحيان، قد نرغب في استيراد القواعد من مستودع آخر لديه ترخيص بالفعل، مثل MIT أو Apache 2.0. وهذا أمر مرحب به، طالما أن الترخيص يسمح بالترخيص من الباطن بموجب ترخيص Elastic v2. نحتفظ بإشعارات الترخيص هذه في ملف NOTICE.txt
ونرخصها من الباطن باسم Elastic License v2 مع جميع القواعد الأخرى. نطلب أيضًا من المساهمين التوقيع على اتفاقية ترخيص المساهم قبل المساهمة بالكود في أي مستودعات مرنة.