
पार्स करें, फ़िल्टर करें, और 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
यदि यूनिट टेस्ट विफल होते हैं, तो यह संभवतः समस्या को ठीक करने का पहला स्थान है।
मैं टेक्स्चुअलाइज़ कंसोल चलाने और कंसोल संदेशों पर नज़र रखने की भी सलाह देता हूँ:
# 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

आप eve_server रैपर का उपयोग करके Suricata Log एप्लिकेशन ब्राउज़र पर चला सकते हैं:
# 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.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' पास करके सभी फ्लैग्स का पता लगा सकते हैं।
आप सभी SuricataLog स्क्रिप्ट्स के लिए Bash ऑटोकम्पलीट इंस्टॉल कर सकते हैं। बस 'eve_autocomplete' चलाएँ और निर्देशों का पालन करें:
eve_autocomplete --help
मैं इस प्रोजेक्ट पर अपने खाली समय में काम करता हूँ और मैं Linux/Python के हर संयोजन का समर्थन नहीं कर सकता। यह मेरा वर्तमान टेस्ट बेड है, और यह बिना किसी सूचना के बदल सकता है