
पार्स करें, फ़िल्टर करें, और 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 के बारे में जानने और इसका परीक्षण करने के तरीके के लिए कर सकते हैं।
कुछ भी करने से पहले, सुनिश्चित करें कि आपका वातावरण तैयार है:
python3 -m venv ~/virtualenv/suricatalog
. ~/virtualenv/suricatalog/bin/activate
python3 -m pip install --upgrade pip setuptools wheel
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 कंसोल चलाने और कंसोल संदेशों पर नज़र रखने की भी सलाह देता हूँ:
# 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 ...]
यह स्क्रिप्ट [15.1.3. Eve JSON 'jq' उदाहरण](https://suricata.readthedocs.io/en/suricata-6.0.0/output/eve/eve-json-examplesjq.html) पर दिए गए उदाहरणों से प्रेरित है। कुछ बातें: * आउटपुट रंगीन JSON का उपयोग करता है
positional arguments:
eve /var/log/suricata/eve.json फ़ाइल का पथ (एक या अधिक) पार्स करने के लिए।
optional arguments:
-h, --help यह सहायता संदेश दिखाएं और बाहर निकलें
--nxdomain NXDOMAIN वाले DNS रिकॉर्ड दिखाएं
--payload प्रिंट करने योग्य पेलोड वाले अलर्ट दिखाएं
--flow प्रोटोकॉल और गंतव्य पोर्ट के अनुसार एकत्रित फ्लो रिपोर्ट
--netflow NETFLOW दिए गए IP पते के लिए नेटफ्लो प्राप्त करें
--useragent HTTP ट्रैफ़िक में शीर्ष उपयोगकर्ता एजेंट
नीचे कुछ उदाहरण देखें:

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 एप्लिकेशन चला सकते हैं:
# 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.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 प्रोग्रामेबल कम्प्लीशन का पालन करने की पूरी कोशिश की
मैंने सबसे सामान्य फ़्लैग के लिए ऑटो कम्प्लीट प्रदान किया है। आप किसी भी स्क्रिप्ट को '--help' पास करके सभी फ़्लैग का पता लगा सकते हैं।
आप सभी SuricataLog स्क्रिप्ट के लिए Bash ऑटोकम्प्लीट इंस्टॉल कर सकते हैं। बस 'eve_autocomplete' चलाएं और निर्देशों का पालन करें:
eve_autocomplete --help
मैं इस प्रोजेक्ट पर अपने खाली समय में काम करता हूँ और मैं Linux/Python संयोजनों के हर संस्करण का समर्थन नहीं कर सकता। यह मेरा वर्तमान परीक्षण वातावरण है, और यह बिना सूचना के बदल सकता है
आपका स्वागत है:
| SuricataLog | समर्थित | OS | Python | Suricata |
|---|
| <= 0.8 | नहीं | NA | < 3.8 | 6.04 |
| 0.9+ | नहीं | fedora 37 | => 3.11.4 | 6.04 |
| 0.9+ | नहीं | Armbian 23.02.2 Jammy | => 3.10.6 | 6.04 |
| 0.9+ | नहीं | Ubuntu 20.04.4 LTS (Focal Fossa) | => 3.8.10 | 6.04 |
| 1.0.3+ | हाँ | fedora 40 | => 3.11.4 | 7.0.6 |