
SuricataLog v1.1.6
تحليل، تصفية، وتصور سجلات Suricata eve.json باستخدام أدوات CLI للتنبيهات، التدفقات، DNS، والحمولات. يتضمن برنامجًا تعليميًا لتعلم Suricata واختبار القواعد.
SuricataLog
عندما بدأت في تعلم كيفية استخدام Suricata سرعان ما اكتشفت أنني بحاجة إلى أداة لفحص ملف eve.json؛ معظم الدروس والوثائق المتاحة اقترحت تثبيت مجموعة من الأدوات للقيام بالمهام التالية:
- تخزين السجلات في موقع مركزي
- تطبيع وإثراء الأحداث، وخاصة التنبيهات
- استخدام واجهة أمامية للتعمق في البيانات
وهو أمر مفيد جدًا، ولكن ماذا لو كنت بحاجة فقط إلى إجراء فحص سريع للأحداث؟
عاجلاً أم آجلاً سوف تمل حتى الموت من القيام بهذا:
cat eve.json | jq -r -c 'select(.event_type=="alert")|.payload'| base64 --decode
SuricataLog هي مجموعة من الأدوات/النصوص البرمجية لتحليل وعرض ملفات سجل Suricata (مثل /var/log/suricata/eve.json)
تنسيق Eve JSON ليس معقدًا جدًا، لذلك كتبت بعض النصوص البرمجية بالميزات التي اعتقدت أنها ستكون أكثر فائدة لتحليل شبكتي المنزلية.
وكمكافأة إضافية، كتبت تجربتي التعليمية كـ درس تعليمي يمكنك استخدامه للتعلم عن Suricata وكذلك كيفية اختبارها.
التثبيت من Pypi
التثبيت من Pypi.org
uv pip install SuricataLog
التثبيت من المصدر
git clone [email protected]:josevnz/SuricataLog.git
cd SuricataLog
uv build
uv pip install dist/suricatalog-1.1.6-py3-none-any.whl
تثبيت المطور
إذن تريد المساهمة؟ أو وجدت خطأً وتعتقد أنك تستطيع تقديم تصحيح؟ رائع! إليك ما يمكنك إضافته للتشغيل في وضع التطوير:
git clone [email protected]:josevnz/SuricataLog.git
cd SuricataLog
uv build
uv sync --dev
uv pip install --editable .
تشغيل اختبارات الوحدة سهل جدًا بعد ذلك:
(SuricataLog) [josevnz@dmaf5 SuricataLog]$ python -m unittest test/*.py
.........
----------------------------------------------------------------------
Ran 9 tests in 0.334s
OK
إذا فشلت اختبارات الوحدة، فهذا على الأرجح أول مكان لإصلاح المشكلة.
أوصي أيضًا بتشغيل وحدة تحكم textualize ومراقبة رسائل وحدة التحكم:
# textual console
textual console --exclude SYSTEM --exclude EVENT
ثم في طرفية أخرى:
textual run --dev --command eve_log --timestamp '2015-01-01 10:41:21.642899' test/eve.json
سيؤدي ذلك إلى طباعة رسائل التصحيح حتى على وحدة التحكم (يمكنك استبعادها إذا أعدت تشغيل وحدة التحكم باستخدام '--exclude DEBUG')
إنشاء صورة Docker
يرجى مراجعة DOCKER.md لمزيد من التفاصيل.
تشغيل النصوص البرمجية
بمجرد تثبيت كل شيء في بيئتك الافتراضية، يجب أن تكون قادرًا على استدعاء النصوص البرمجية
يمكنك معرفة التطبيقات التي تم تثبيتها باستخدام الإكمال التلقائي، بعد تنشيط بيئتك الافتراضية:
eve_[tab][tab]
وإذا قمت بتثبيت امتداد الإكمال التلقائي لـ Bash، ستحصل أيضًا على بعض الاقتراحات للأعلام.
محلل سجل EVE البسيط
من الأفضل أن تراه بنفسك (تذكر، استخدم --help لمعرفة الخيارات المدعومة)
تنسيق الجدول:

eve_log --timestamp '2015-01-01 10:41:21.642899' --formats TABLE test/eve.json
تقارير جاهزة مع eve_json.py
(suricatalog) [josevnz@dmaf5 SuricataLog]$ eve_json --help
usage: eve_json [-h] [--nxdomain | --payload | --flow | --netflow NETFLOW | --useragent] eve [eve ...]
This script is inspired by the examples provided on [15.1.3. Eve JSON ‘jq’ Examples](https://suricata.readthedocs.io/en/suricata-6.0.0/output/eve/eve-json-
examplesjq.html) A few things: * The output uses colorized JSON
positional arguments:
eve Path to one or more /var/log/suricata/eve.json file to parse.
optional arguments:
-h, --help show this help message and exit
--nxdomain Show DNS records with NXDOMAIN
--payload Show alerts with a printable payload
--flow Aggregated flow report per protocol and destination port
--netflow NETFLOW Get the netflow for a given IP address
--useragent Top user agent in HTTP traffic
ألقِ نظرة على بعض الأمثلة أدناه:
NXDOMAIN

eve_json --nxdomain test/eve.json
PAYLOAD

eve_json --payload ~/Downloads/eve.json
FLOW

eve_json --flow test/eve_udp_flow.json
NETFLOW

eve_json --netflow 224.0.0.251 test/eve_udp_flow.json
USERAGENT

eve_json --useragent test/eve.json
تشغيل تطبيقات eve_* على المتصفح

يمكنك تشغيل تطبيقات Suricata Log على المتصفح باستخدام غلاف eve_server:
# Show the flow report on a eve.json file
eve_server --application eve_json -- --flow ~/eve.json
# Show NX domain report
eve_server --application eve_json -- --nxdomain ~/eve.json
# Inspect the eve.json records
eve_server --applications eve_log -- ~/eve.json
تحتاج إلى تمرير '--' لإخبار الخادم أن هذه الخيارات تنتمي إلى eve_* الأساسي الذي تريد استدعاءه.
التشغيل من Docker
من الممكن أيضًا تشغيل SuricataLog من حاوية Docker. يرجى مراجعة DOCKER.md لمزيد من التفاصيل
التشغيل مع uv
إذا كان لديك uv، يمكنك فقط القيام بذلك:
uvx --from SuricataLog eve_log /var/log/suricata/eve.json
uvx --from SuricataLog eve_json --useragent /var/log/suricata/eve.json
uvx --from SuricataLog eve_server --application eve_json -- --flow /var/log/suricata/eve.json
لقد فهمت الفكرة.
الإكمال التلقائي لـ Bash
بذلت قصارى جهدي لاتباع 8.6 Programmable Completion
قدمت الإكمال التلقائي للأعلام الأكثر شيوعًا. يمكنك معرفة جميع الأعلام بتمرير '--help' إلى أي من النصوص البرمجية.
تثبيت أوامر الإكمال التلقائي
يمكنك تثبيت الإكمال التلقائي لـ Bash لجميع نصوص SuricataLog البرمجية. فقط قم بتشغيل 'eve_autocomplete' واتبع التعليمات:
eve_autocomplete --help
الإصدارات المدعومة
أعمل على هذا المشروع في وقتي الفراغ ولا يمكنني دعم كل إصدار من Linux/ Python الموجود. هذا هو منصة الاختبار الحالية الخاصة بي، وقد تتغير دون إشعار مسبق
| SuricataLog | Supported | OS | Python | Suricata |
|---|---|---|---|---|
| <= 0.8 | NO | NA | < 3.8 | 6.04 |
| 0.9+ | NO | fedora 37 | => 3.11.4 | 6.04 |
| 0.9+ | NO | Armbian 23.02.2 Jammy | => 3.10.6 | 6.04 |
| 0.9+ | NO | Ubuntu 20.04.4 LTS (Focal Fossa) | => 3.8.10 | 6.04 |
| 1.0.3+ | YES | fedora 40 | => 3.11.4 | 7.0.6 |