업데이트로 돌아가기
New releaseJul 26, 2026

SuricataLog v1.1.6

Suricata eve.json 로그를 CLI 도구로 파싱, 필터링, 시각화하여 알림, 흐름, DNS 및 페이로드를 처리합니다. Suricata 학습 및 규칙 테스트를 위한 튜토리얼을 포함합니다.

공유

SuricataLog

Downloads

Suricata 사용법을 배우기 시작했을 때, eve.json 파일을 검사할 도구가 필요하다는 것을 금방 깨달았습니다. 대부분의 튜토리얼과 문서에서는 다음과 같은 작업을 수행하기 위해 스택을 설치할 것을 권장했습니다:

  1. 로그를 중앙 위치에 저장
  2. 이벤트, 특히 알림을 정규화하고 보강
  3. 프런트엔드를 사용하여 데이터 탐색

매우 유용하지만, 이벤트를 빠르게 확인만 하면 되는 경우는 어떨까요?

조만간 여러분은 다음과 같은 작업에 지겨워 죽을 것입니다:

cat eve.json | jq -r -c 'select(.event_type=="alert")|.payload'| base64 --decode

SuricataLog는 Suricata 로그 파일(예: /var/log/suricata/eve.json)을 파싱하고 표시하는 도구/스크립트 모음입니다.

Eve JSON 형식은 그렇게 복잡하지 않아서, 제 홈 네트워크 분석에 가장 유용할 것 같은 기능들을 몇 가지 스크립트로 작성했습니다.

보너스로, 제 학습 경험을 튜토리얼로 작성했으니 Suricata에 대해 배우고 테스트하는 방법을 익히는 데 활용할 수 있습니다.

PIP로 설치하기

시작하기 전에 환경이 준비되었는지 확인하세요:

python3 -m venv ~/virtualenv/suricatalog
. ~/virtualenv/suricatalog/bin/activate
python3 -m pip install --upgrade pip setuptools wheel

Pypi.org에서 설치하기

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 이미지 생성

자세한 내용은 DOCKER.md를 확인하세요.

스크립트 실행

가상 환경에 모든 것이 설치되면 스크립트를 호출할 수 있어야 합니다.

자동 완성을 사용하여 설치된 애플리케이션을 확인할 수 있습니다. 가상 환경을 활성화한 후:

eve_[tab][탭]

Bash 자동 완성 확장을 설치하면 플래그에 대한 제안도 받을 수 있습니다.

간단한 EVE 로그 파서

직접 확인해 보세요(--help를 사용하여 지원되는 옵션을 확인하는 것을 잊지 마세요).

테이블 형식:

suricatalog-eve_log-table.png

eve_log --timestamp '2015-01-01 10:41:21.642899' --formats TABLE test/eve.json

eve_json.py를 사용한 미리 정의된 보고서

(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 트래픽에서 상위 사용자 에이전트

아래 몇 가지 예제를 확인하세요:

NXDOMAIN

suricatalog-eve_json-nxdomain.png

eve_json --nxdomain test/eve.json

PAYLOAD

suricatalog-eve_json-payload.png

eve_json --payload ~/Downloads/eve.json

FLOW

suricatalog_eve_json-flow.png

eve_json --flow test/eve_udp_flow.json

NETFLOW

suricatalog_eve_json-netflow.png

eve_json --netflow 224.0.0.251 test/eve_udp_flow.json

USERAGENT

suricatalog-eve_json-useragent.png

eve_json --useragent test/eve.json

브라우저에서 eve_* 애플리케이션 실행

Suricata eve 서버, 브라우저에서 eve* 애플리케이션 실행!

eve_server 래퍼를 사용하여 브라우저에서 Suricata Log 애플리케이션을 실행할 수 있습니다:

# eve.json 파일에서 플로우 보고서 표시
eve_server --application eve_json -- --flow ~/eve.json

# NX 도메인 보고서 표시
eve_server --application eve_json -- --nxdomain ~/eve.json

# eve.json 레코드 검사
eve_server --applications eve_log -- ~/eve.json

'--'를 전달하여 해당 옵션이 호출하려는 기본 eve_*에 속한다는 것을 서버에 알려야 합니다.

Docker에서 실행

Docker 컨테이너에서 SuricataLog를 실행하는 것도 가능합니다. 자세한 내용은 DOCKER.md를 참조하세요.

uv로 실행

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

원리를 이해하셨을 것입니다.

Bash 자동 완성

8.6 프로그램 가능 완성을 최대한 따르려고 노력했습니다.

가장 일반적인 플래그에 대한 자동 완성을 제공했습니다. 모든 플래그를 확인하려면 스크립트 중 하나에 '--help'를 전달하면 됩니다.

자동 완성 명령 설치

모든 SuricataLog 스크립트에 대해 Bash 자동 완성을 설치할 수 있습니다. 'eve_autocomplete'를 실행하고 지시를 따르세요:

eve_autocomplete --help

지원 버전

이 프로젝트는 개인 시간에 작업하며, 모든 Linux/Python 조합을 지원할 수 없습니다. 다음은 현재 테스트 환경이며, 예고 없이 변경될 수 있습니다.

SuricataLog지원 여부OSPythonSuricata
<= 0.8아니오NA< 3.86.04
0.9+아니오fedora 37=> 3.11.46.04
0.9+아니오Armbian 23.02.2 Jammy=> 3.10.66.04
0.9+아니오Ubuntu 20.04.4 LTS (Focal Fossa)=> 3.8.106.04
1.0.3+fedora 40=> 3.11.47.0.6

다음은 언제든지 환영합니다:

  • 새로운 기능과 버그 수정이 포함된 패치 제출.
  • 버그 보고서 제출. 가능한 한 상세하게 작성해 주세요. 그렇지 않으면 종료할 수밖에 없습니다.

튜토리얼

카테고리