العودة إلى التحديثات
New releaseJul 26, 2026

SuricataLog v1.1.6

تحليل، تصفية، وتصور سجلات Suricata eve.json باستخدام أدوات CLI للتنبيهات، التدفقات، DNS، والحمولات. يتضمن برنامجًا تعليميًا لتعلم Suricata واختبار القواعد.

مشاركة

SuricataLog

Downloads

عندما بدأت تعلّم كيفية استخدام Suricata، سرعان ما وجدت أنني بحاجة إلى أداة لفحص ملف eve.json؛ معظم الدروس والوثائق المنشورة كانت تقترح تثبيت حزمة (stack) لإنجاز المهام التالية:

  1. تخزين السجلات في موقع مركزي
  2. تسوية البيانات وإثراء الأحداث، خاصة التنبيهات
  3. استخدام واجهة أمامية لاستكشاف البيانات

وهو أمر مفيد جداً، لكن ماذا لو كنت بحاجة فقط إلى فحص سريع للأحداث؟

عاجلاً أم آجلاً ستصاب بـالملل الشديد من فعل هذا:

cat eve.json | jq -r -c 'select(.event_type=="alert")|.payload'| base64 --decode

SuricataLog هي مجموعة من الأدوات/النصوص البرمجية لتحليل وعرض ملفات سجل Suricata (مثل /var/log/suricata/eve.json).

لا يُعد تنسيق Eve JSON معقدًا للغاية، لذلك كتبت بعض النصوص البرمجية التي تتضمن الميزات التي اعتقدت أنها ستكون أكثر فائدة لتحليل شبكة منزلي.

وكمكافأة، كتبت تجربة تعلمي على شكل دليل تعليمي يمكنك استخدامه لتتعلم عن Suricata وكذلك كيفية اختباره.

التثبيت من PIP

قبل أن تفعل أي شيء آخر، تأكد من أن بيئتك جاهزة للعمل:

python3 -m venv ~/virtualenv/suricatalog
. ~/virtualenv/suricatalog/bin/activate
python3 -m pip install --upgrade pip setuptools wheel

التثبيت من Pypi.org

pip3 install --upgrade SuricataLog

التثبيت من المصدر

git clone [email protected]:josevnz/SuricataLog.git
cd SuricataLog
python3 -m venv ~/virtualenv/suricatalog
. ~/virtualenv/suricatalog/bin/activate
python3 -m pip install --upgrade build
python3 -m build
pip3 install dist/SuricataLog-X.Y.Z-py3-none-any.whl

تثبيت المطور

هل تريد المساهمة؟ أو وجدت خللاً وتعتقد أنه يمكنك تقديم تصحيح؟ رائع! إليك ما يمكنك فعله للتشغيل في وضع التطوير:

git clone [email protected]:josevnz/SuricataLog.git
cd SuricataLog
python3 -m venv ~/virtualenv/suricatalog
. ~/virtualenv/suricatalog/bin/activate
pip install --upgrade pip
python -m pip install --upgrade build
pip install textual-dev
pip install --editable .

تشغيل اختبارات الوحدة سهل جداً بعد ذلك:

(SuricataLog) [josevnz@dmaf5 SuricataLog]$ python -m unittest test/*.py
.........
----------------------------------------------------------------------
Ran 9 tests in 0.334s

OK

إذا فشلت اختبارات الوحدة، فهذا على الأرجح هو أول مكان لإصلاح المشكلة.

أوصي أيضاً بتشغيل وحدة التحكم النصية (textualize console) ومراقبة رسائل الكونسول:

# 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 لمعرفة الخيارات المدعومة)

تنسيق جدول:

suricatalog-eve_log-table.png

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

suricatalog-eve_json-nxdomain.png

eve_json --nxdomain test/eve.json

PAYLOAD

suricatalog-eve_json-payload.png

eve_json --payload ~/Downloads/eve.json

FLOW

suricatalog_eve_json-flow.png

eve_json --flow test/eve_udp_flow.json

NETFLOW

suricatalog_eve_json-netflow.png

eve_json --netflow 224.0.0.251 test/eve_udp_flow.json

USERAGENT

suricatalog-eve_json-useragent.png

eve_json --useragent test/eve.json

تشغيل تطبيقات eve_* على المتصفح

خادم eve الخاص بـ Suricata، يعرض تطبيقات eve* على المتصفح!

يمكنك تشغيل تطبيقات Suricata Log على المتصفح باستخدام الغلاف eve_server:

# عرض تقرير التدفق على ملف eve.json
eve_server --application eve_json -- --flow ~/eve.json

# عرض تقرير NX domain
eve_server --application eve_json -- --nxdomain ~/eve.json

# فحص سجلات eve.json
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مدعومنظام التشغيلPythonSuricata
<= 0.8لاNA< 3.86.04
0.9+لاfedora 37=> 3.11.46.04
0.9+لاArmbian 23.02.2 Jammy=> 3.10.66.04
0.9+لاUbuntu 20.04.4 LTS (Focal Fossa)=> 3.8.106.04
1.0.3+نعمfedora 40=> 3.11.47.0.6

يمكنك بحرية:

  • تقديم تصحيحات بميزات جديدة وإصلاحات للأخطاء.
  • فتح تقارير الأخطاء. كن دقيقاً قدر الإمكان، وإلا فلن يكون لدي خيار سوى إغلاقها.

الدروس التعليمية

الفئات