
पार्स करें, फ़िल्टर करें, और 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 ``` यदि यूनिट टेस्ट विफल होते हैं, तो यह संभवतः समस्या को ठीक करने का पहला स्थान है। मैं टेक्स्चुअलाइज़ कंसोल चलाने और कंसोल संदेशों पर नज़र रखने की भी सलाह देता हूँ: ```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_* एप्लिकेशन ब्राउज़र पर चलाना  आप `eve_server` रैपर का उपयोग करके Suricata Log एप्लिकेशन ब्राउज़र पर चला सकते हैं: ```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 से चलाना Docker कंटेनर से SuricataLog चलाना भी संभव है। अधिक जानकारी के लिए कृपया [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' पास करके सभी फ्लैग्स का पता लगा सकते हैं। ### ऑटो कम्पलीट कमांड्स की स्थापना आप सभी SuricataLog स्क्रिप्ट्स के लिए Bash ऑटोकम्पलीट इंस्टॉल कर सकते हैं। बस '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)