
تحليل، تصفية، وتصور سجلات Suricata eve.json باستخدام أدوات CLI للتنبيهات، التدفقات، DNS، والحمولات. يتضمن برنامجًا تعليميًا لتعلم Suricata واختبار القواعد.
# SuricataLog [](https://pepy.tech/project/suricatalog) عندما بدأت في تعلم كيفية استخدام [Suricata](https://suricata.io/) سرعان ما اكتشفت أنني بحاجة إلى أداة لفحص ملف eve.json؛ معظم الدروس والوثائق المتاحة اقترحت تثبيت مجموعة من الأدوات للقيام بالمهام التالية: 1. تخزين السجلات في موقع مركزي 2. تطبيع وإثراء الأحداث، وخاصة التنبيهات 3. استخدام واجهة أمامية للتعمق في البيانات وهو أمر مفيد جدًا، ولكن ماذا لو كنت بحاجة فقط إلى إجراء فحص سريع للأحداث؟ عاجلاً أم آجلاً سوف [تمل حتى الموت](https://suricata.readthedocs.io/en/suricata-6.0.0/output/eve/eve-json-examplesjq.html) من القيام بهذا: ```shell cat eve.json | jq -r -c 'select(.event_type=="alert")|.payload'| base64 --decode ``` SuricataLog هي مجموعة من الأدوات/النصوص البرمجية لتحليل وعرض ملفات سجل Suricata (مثل /var/log/suricata/eve.json) [تنسيق Eve JSON](https://suricata.readthedocs.io/en/suricata-6.0.0/output/eve/eve-json-format.html) ليس معقدًا جدًا، لذلك كتبت بعض النصوص البرمجية بالميزات التي اعتقدت أنها ستكون أكثر فائدة لتحليل شبكتي المنزلية. وكمكافأة إضافية، كتبت تجربتي التعليمية كـ [درس تعليمي](https://github.com/josevnz/suricatalog/blob/dependabot/uv/uv-1176edd47e/TUTORIAL.md) يمكنك استخدامه للتعلم عن Suricata وكذلك كيفية اختبارها. ## التثبيت من Pypi ### التثبيت من Pypi.org ```shell uv pip install SuricataLog ``` ### التثبيت من المصدر ```shell git clone [email protected]:josevnz/SuricataLog.git cd SuricataLog uv build uv pip install dist/suricatalog-1.1.6-py3-none-any.whl ``` ### تثبيت المطور إذن تريد المساهمة؟ أو وجدت خطأً وتعتقد أنك تستطيع تقديم تصحيح؟ رائع! إليك ما يمكنك إضافته للتشغيل في وضع التطوير: ```shell git clone [email protected]:josevnz/SuricataLog.git cd SuricataLog uv build uv sync --dev uv pip install --editable . ``` تشغيل اختبارات الوحدة سهل جدًا بعد ذلك: ```shell (SuricataLog) [josevnz@dmaf5 SuricataLog]$ python -m unittest test/*.py ......... ---------------------------------------------------------------------- Ran 9 tests in 0.334s OK ``` إذا فشلت اختبارات الوحدة، فهذا على الأرجح أول مكان لإصلاح المشكلة. أوصي أيضًا بتشغيل وحدة تحكم textualize ومراقبة رسائل وحدة التحكم: ```shell # textual console textual console --exclude SYSTEM --exclude EVENT ``` ثم في طرفية أخرى: ```shell textual run --dev --command eve_log --timestamp '2015-01-01 10:41:21.642899' test/eve.json ``` سيؤدي ذلك إلى طباعة رسائل التصحيح حتى على وحدة التحكم (يمكنك استبعادها إذا أعدت تشغيل وحدة التحكم باستخدام '--exclude DEBUG') ### إنشاء صورة Docker يرجى مراجعة [DOCKER.md](https://github.com/josevnz/suricatalog/blob/dependabot/uv/uv-1176edd47e/DOCKER.md) لمزيد من التفاصيل. ## تشغيل النصوص البرمجية بمجرد تثبيت كل شيء في بيئتك الافتراضية، يجب أن تكون قادرًا على استدعاء النصوص البرمجية يمكنك معرفة التطبيقات التي تم تثبيتها باستخدام الإكمال التلقائي، بعد تنشيط بيئتك الافتراضية: ```shell eve_[tab][tab] ``` وإذا قمت بتثبيت امتداد الإكمال التلقائي لـ Bash، ستحصل أيضًا على بعض الاقتراحات للأعلام. ### محلل سجل EVE البسيط من الأفضل أن تراه بنفسك (تذكر، استخدم --help لمعرفة الخيارات المدعومة) #### تنسيق الجدول:  ````shell eve_log --timestamp '2015-01-01 10:41:21.642899' --formats TABLE test/eve.json ```` ### تقارير جاهزة مع eve_json.py ```shell (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  ```shell eve_json --nxdomain test/eve.json ``` #### PAYLOAD  ```shell eve_json --payload ~/Downloads/eve.json ``` #### FLOW  ```shell eve_json --flow test/eve_udp_flow.json ``` #### NETFLOW  ```shell eve_json --netflow 224.0.0.251 test/eve_udp_flow.json ``` #### USERAGENT  ```shell eve_json --useragent test/eve.json ``` ### تشغيل تطبيقات eve_* على المتصفح  يمكنك تشغيل تطبيقات Suricata Log على المتصفح باستخدام غلاف `eve_server`: ```shell # 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](https://github.com/josevnz/suricatalog/blob/dependabot/uv/uv-1176edd47e/DOCKER.md) لمزيد من التفاصيل ## التشغيل مع uv إذا كان لديك uv، يمكنك فقط القيام بذلك: ```shell 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](https://www.gnu.org/software/bash/manual/html_node/Programmable-Completion.html#Programmable-Completion) قدمت الإكمال التلقائي للأعلام الأكثر شيوعًا. يمكنك معرفة جميع الأعلام بتمرير '--help' إلى أي من النصوص البرمجية. ### تثبيت أوامر الإكمال التلقائي يمكنك تثبيت الإكمال التلقائي لـ Bash لجميع نصوص SuricataLog البرمجية. فقط قم بتشغيل 'eve_autocomplete' واتبع التعليمات: ```shell 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 | *أنت مرحب بك أكثر من ذلك*: * تقديم تصحيحات بميزات جديدة وإصلاحات للأخطاء. * فتح تقارير الأخطاء. كن مفصلاً قدر الإمكان، وإلا لن يكون لدي خيار سوى إغلاقه. ## الدروس التعليمية * [Suricata, RaspberryPI4 and Python to secure your home network](https://github.com/josevnz/suricatalog/blob/dependabot/uv/uv-1176edd47e/TUTORIAL.md) * [Using SuricataLog to analyze your events](https://github.com/josevnz/suricatalog/blob/dependabot/uv/uv-1176edd47e/Using_SuricataLog_to_analyze_your_events.md)