
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
단위 테스트가 실패하면, 이곳이 문제를 수정할 첫 번째 장소일 가능성이 높습니다.
또한 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 ...]
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 조합을 지원할 수는 없습니다. 이것이 현재 제 테스트 환경이며, 예고 없이 변경될 수 있습니다.
| 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 |
다음을 환영합니다: