
تحليل، تصفية، وتصور سجلات Suricata eve.json باستخدام أدوات CLI للتنبيهات، التدفقات، DNS، والحمولات. يتضمن برنامجًا تعليميًا لتعلم Suricata واختبار القواعد.
عندما بدأت في تعلم كيفية استخدام 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 وكذلك كيفية اختبارها.
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.md لمزيد من التفاصيل.
بمجرد تثبيت كل شيء في بيئتك الافتراضية، يجب أن تكون قادرًا على استدعاء النصوص البرمجية
يمكنك معرفة التطبيقات التي تم تثبيتها باستخدام الإكمال التلقائي، بعد تنشيط بيئتك الافتراضية:
eve_[tab][tab]
وإذا قمت بتثبيت امتداد الإكمال التلقائي لـ Bash، ستحصل أيضًا على بعض الاقتراحات للأعلام.
من الأفضل أن تراه بنفسك (تذكر، استخدم --help لمعرفة الخيارات المدعومة)

eve_log --timestamp '2015-01-01 10:41:21.642899' --formats TABLE test/eve.json
(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
ألقِ نظرة على بعض الأمثلة أدناه:

eve_json --nxdomain test/eve.json

eve_json --payload ~/Downloads/eve.json

eve_json --flow test/eve_udp_flow.json

eve_json --netflow 224.0.0.251 test/eve_udp_flow.json

eve_json --useragent test/eve.json

يمكنك تشغيل تطبيقات 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_* الأساسي الذي تريد استدعاءه.
من الممكن أيضًا تشغيل SuricataLog من حاوية Docker. يرجى مراجعة DOCKER.md لمزيد من التفاصيل
إذا كان لديك 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
لقد فهمت الفكرة.
بذلت قصارى جهدي لاتباع 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 |