📚 네트워크 · 패킷 분석 › 04. 네트워크 장비 실습 — 194편
이전 글: 193. Snort · 다음 글: 195. Wazuh 네트워크 이벤트

1. 개념

Suricata는 OISF(Open Information Security Foundation)가 개발하는 오픈소스 네트워크 IDS/IPS·보안 모니터링 엔진입니다. 처음부터 멀티 스레드로 설계되었고, Snort 규칙 문법과 대부분 호환되며, 탐지 결과뿐 아니라 프로토콜 메타데이터(HTTP, DNS, TLS, 흐름 등)를 JSON으로 기록하는 EVE 출력이 특징입니다.

Suricata의 탐지 기능과 규칙 문법은 06 영역 289. Suricata란 무엇인가·290. Suricata Rule 기초에서 다루고, 이 글은 설치·설정 파일·로그 구조·서비스 운영을 다룹니다. 내부 처리 구조는 188. IDS 동작 구조, IPS 모드는 189. IPS 동작 구조을 참고합니다.

파일(패키지 기본값)역할
/etc/suricata/suricata.yaml주 설정 (변수, 수집 방식, 출력, 규칙 경로)
/var/lib/suricata/rules/suricata.rulessuricata-update가 만든 병합 규칙 파일
/var/log/suricata/eve.jsonJSON 이벤트 로그 (Alert + 메타데이터)
/var/log/suricata/fast.logAlert 한 줄 요약
/var/log/suricata/stats.log엔진 통계 (수신·드롭 등)
/var/log/suricata/suricata.log엔진 자체 동작·오류 로그

2. 동작 원리

센서 VM 한 대에서 Suricata가 동작하는 전체 그림입니다.

[SPAN/미러 트래픽] → ens33 (모니터링 NIC, IP 없음)
    ↓ af-packet 수집 (suricata.yaml의 af-packet.interface)
[Suricata 프로세스] ← 규칙: /var/lib/suricata/rules/suricata.rules (suricata-update로 갱신)
    ↓ 출력
/var/log/suricata/
    ├─ eve.json   → Filebeat / Wazuh agent 등이 읽어 SIEM으로 전송
    ├─ fast.log   → 사람이 빠르게 확인
    ├─ stats.log  → 수신량·드롭 점검
    └─ suricata.log → 시작·규칙 적재·오류 확인

eve.json은 한 줄에 JSON 객체 하나(JSON Lines) 형식이며, event_type 값으로 이벤트 종류를 구분합니다. 어떤 이벤트를 기록할지는 suricata.yaml의 outputs › eve-log › types에서 정합니다.


3. 주요 특징

주요 EVE 이벤트 유형입니다(버전·설정에 따라 추가·변경됨).

event_type내용
alert규칙 일치 Alert (alert 객체 포함)
flow흐름 종료 시 요약(패킷·바이트 수, 상태)
dns / http / tls해당 프로토콜 트랜잭션 메타데이터
fileinfo추출·관찰된 파일 정보
anomaly디코더·스트림·앱 계층 프로토콜 이상
dropIPS 모드에서 폐기된 패킷 (설정 시)
stats엔진 통계 (설정 시)

Alert 이벤트에서 관제자가 가장 먼저 보는 필드입니다.

필드의미
timestamp이벤트 시각 (타임존 포함)
flow_id같은 흐름의 이벤트를 묶는 식별자
src_ip, src_port, dest_ip, dest_port, proto5-tuple
app_proto식별된 애플리케이션 프로토콜
alert.signature_id, alert.rev, alert.signature규칙 sid, 버전, 메시지
alert.category, alert.severity분류, 심각도(1이 가장 높음)
alert.actionallowed / blocked

flow_id가 같으면 Alert와 그 흐름의 http·dns·flow 이벤트를 연결할 수 있습니다. 이 점이 Suricata 로그가 관제에서 유용한 이유입니다.


4. 예시

실습 예시 — 센서 VM에 Suricata를 설치하고 서비스로 운영하는 흐름입니다. 저장소 이름과 버전 번호는 시점에 따라 다르므로 OISF 공식 설치 문서를 확인합니다. 인터페이스·대역은 예시(값은 환경마다 다름)입니다.

# Ubuntu: OISF 안정판 PPA
sudo add-apt-repository ppa:oisf/suricata-stable
sudo apt update && sudo apt install suricata jq

# Rocky: EPEL + OISF COPR 저장소 (버전 번호는 시점에 따라 다름)
sudo dnf install epel-release dnf-plugins-core
sudo dnf copr enable @oisf/suricata-7.0
sudo dnf install suricata jq

suricata.yaml에서 최소한 확인할 항목입니다.

vars:
  address-groups:
    HOME_NET: "[192.168.10.0/24,10.10.30.0/24]"
af-packet:
  - interface: ens33
default-rule-path: /var/lib/suricata/rules
rule-files:
  - suricata.rules

서비스가 사용할 인터페이스는 배포판 패키지에 따라 /etc/default/suricata(Ubuntu 계열) 또는 /etc/sysconfig/suricata(Rocky 계열)에서도 지정하므로 두 곳이 일치하는지 확인합니다.

sudo suricata-update
sudo suricata -T -c /etc/suricata/suricata.yaml -v
sudo systemctl enable --now suricata
sudo systemctl status suricata

# Alert만 5-tuple과 sid로 요약
sudo jq -c 'select(.event_type=="alert") | [.timestamp, .src_ip, .dest_ip, .dest_port, .alert.signature_id, .alert.signature]' \
  /var/log/suricata/eve.json | tail -5

📷 [실습 화면 삽입 위치] systemctl status suricata 실행 중 화면과, tail -f /var/log/suricata/eve.json 에서 event_type 이 flow·dns·alert 등으로 기록되는 화면


5. 보안 관점

  • EVE 로그에는 DNS 질의, HTTP URL·User-Agent 등 민감할 수 있는 정보가 담깁니다. 로그 파일 권한과 보관 기간을 정책으로 관리합니다.
  • eve.json은 빠르게 커지므로 logrotate 설정이 필요합니다. 디스크가 가득 차면 기록이 멈추고 탐지 공백이 생깁니다. 로그 회전 후에는 Suricata가 새 파일에 쓰도록 신호(HUP 등)를 보내는 구성이 필요할 수 있습니다.
  • HOME_NET이 실제 보호 대역과 다르면 방향 조건 규칙이 제대로 동작하지 않습니다.
  • 센서 관리 인터페이스는 관리망에만 두고, 모니터링 인터페이스에는 IP를 두지 않습니다(156. IDS란 무엇인가).

6. SOC 관점

관제자가 확인할 질문

  • 이 Alert의 flow_id로 같은 흐름의 http·dns·tls·flow 이벤트를 찾아봤는가?
  • alert.action은 allowed인가 blocked인가? 센서가 IDS 모드인지 IPS 모드인지 알고 해석하는가?
  • suricata.log에 규칙 적재 실패나 재시작 기록이 있는가? stats.log의 드롭은 증가하지 않았는가?
Suricata Alert (eve.json)
    ↓ flow_id 로 같은 흐름 이벤트 조회 (http / dns / tls / fileinfo / flow)
    ↓ flow 이벤트의 bytes_toclient 로 응답 크기 확인 → 실제 데이터가 오갔는가
    ↓ 방화벽 로그·서버 로그와 5-tuple·시각으로 연계 (06 영역)

오탐 주의: alert.severity는 규칙 분류에 따른 값이지 해당 환경에서의 실제 위험도가 아닙니다. 대상 자산과 응답 여부를 함께 봐야 합니다. 스캔 탐지 설정은 05 영역 238. Suricata Scan 탐지에서 다룹니다.


7. 핵심 정리

  • Suricata는 멀티 스레드 오픈소스 IDS/IPS 엔진이며, EVE JSON으로 Alert와 프로토콜 메타데이터를 함께 기록합니다.
  • 핵심 파일은 suricata.yaml, suricata.rules, /var/log/suricata/ 아래 eve.json·fast.log·stats.log·suricata.log입니다.
  • event_type으로 이벤트를 구분하고, flow_id로 같은 흐름의 이벤트를 연결합니다.
  • Alert 분석의 기본 필드는 5-tuple, alert.signature_id, alert.signature, alert.severity, alert.action입니다.
  • 설치 후에는 HOME_NET, 인터페이스 설정, 로그 회전, 드롭 여부를 운영 점검 항목으로 관리합니다.
profile
코드에 숨겨진 위협을 읽고 AI로 보안의 미래를 설계합니다. 프론트엔드 개발 경험을 자산 삼아 더 견고하고 지능적인 보안 운영 시스템을 구축해 나가는 과정을 기록합니다

0개의 댓글