개념 사전 · 프로그램

Suricata

수리카타

는 패킷·흐름·응용 을 분석하여 탐지와 자료를 만드는 엔진이다. 은 경보뿐 아니라 HTTP···흐름 등의 서로 다른 이벤트를 담는다.

밑줄 용어에 마우스를 올리거나, 키보드로 선택하거나, 터치하면 설명을 볼 수 있습니다.

로고: OISF / Suricata 공식 자료. 제품 식별을 위해 표시하며 각 상표의 권리는 권리자에게 있습니다.

01무엇이고, 어떤 일을 하나

  • 흐름 기반 재조립과 응용 해석으로 규칙을 평가한다.
  • 동일 흐름의 경보·요청·파일 자료를 연결한다.
  • 캡처 손실·메모리 제한·검사 깊이를 관제 품질과 함께 관찰한다.

02어떤 순서로 동작하나

  1. 캡처 경로로 입력

    NIC와 지원 캡처 기능이 패킷을 사용자 공간 엔진으로 전달한다. Ring·큐·CPU 병목은 이 단계에서 손실을 만들 수 있다.

  2. Decode·Defrag

    헤더와 캡슐화를 읽고 필요한 IP 단편을 재조립한다. IP fragment 처리와 stream 처리는 다르다.

  3. Flow·Stream

    양방향 흐름과 상태·순서·재전송을 관리해 응용 파서에 필요한 바이트를 구성한다.

  4. 응용 파싱

    HTTP method·URI·status 같은 의미 있는 필드와 검사 버퍼를 만든다.

  5. 탐지 평가

    Prefilter와 규칙 평가가 조건을 검사한다. ·depth·누락 패킷은 검사 가능한 범위를 제한한다.

  6. EVE 출력

    활성화한 유형에 따라 alert·http·flow 등을 기록한다. 와 필요한 로 같은 통신의 다른 관찰을 연결한다.

03먼저 알아둘 용어와 구성요소

같은 흐름의 EVE 이벤트를 연결하는 값.
지원되는 응용 프로토콜에서 을 구분하는 값.
경보·흐름·응용 프로토콜 등 여러 이벤트 유형을 구조화된 JSON으로 기록하는 출력 체계.
캡처와 분석 작업을 스레드에 배치하는 실행 모드.
네트워크 장치가 흐름을 여러 수신 큐로 분배하는 기능.
한 작업 스레드가 캡처 이후 여러 분석 단계를 담당하는 실행 방식.
캡처와 흐름 분석 작업을 분리해 분배하는 실행 방식.
특정 내부 자료 구조에 사용할 메모리 한도.
스트림에서 분석할 바이트 범위의 한도.
도구 간 흐름 식별을 돕는 표준화된 해시 식별 방식.
의 응용 프로토콜 분석에서 요청·응답 같은 논리적 교환 단위를 뜻한다. 같은 연결에 여러 이 있을 수 있으며 데이터베이스의 ACID 과 문맥이 다르다.
LEARN THROUGH PRACTICE

Suricata 실행 전에 NIC의 큐·링·드라이버 읽기

채널 수와 수신 링 용량을 구분하고 패킷 손실 진단의 기준선을 만든다.

실습 구성과 전제

  • 센서용 격리 의 데이터 NIC를 확인한다.
  • 조회 명령만 사용하며 운영 NIC의 채널 수·링 크기를 임의로 변경하지 않는다.
  1. 드라이버가 제공하는 기능을 확인한다

    • ethtool -i는 드라이버와 기능 정보를 보여 준다. 게스트에서 보이는 가상 NIC의 기능과 물리 호스트 NIC의 기능을 혼동하지 않는다.
    • 기능 지원은 실제 활성화 상태나 사용 상태와 별개다.
    shell
    ethtool -i ens160
    suricata --build-info

    NIC와 빌드 기능을 조회한다. 인터페이스 이름은 자신의 센서에 맞춘다.

    suricata · 실습·개념 참고 화면 2원본 크기로 보기 ↗
    • driver는 vmxnet3이며 version·bus-info가 표시된다.
    • supports-statistics는 yes지만 EEPROM 접근은 no다. 모든 ethtool 기능이 동일하게 지원되는 것은 아니다.
    확인 기준

    센서 인터페이스 이름과 드라이버를 운영 기록에 남긴다.

  2. 채널 수와 링 크기를 나누어 읽는다

    • ethtool -l의 Combined는 채널 수이며 ethtool -g의 RX는 링 파라미터다. 숫자 4와 1024를 같은 단위의 처리량으로 비교하지 않는다.
    • 여러 큐가 있어도 양방향 연결이 같은 처리 맥락에 배치되는지, 캡처 모드의 분배 방식이 맞는지를 확인해야 한다.
    shell
    ethtool -l ens160
    ethtool -g ens160
    ethtool -S ens160

    채널·링·통계를 각각 조회한다. 드라이버마다 통계 이름과 지원 항목이 다르다.

    suricata · 실습·개념 참고 화면 1원본 크기로 보기 ↗
    • Combined의 최대값과 현재값이 모두 4로 표시된다.
    • RX·TX가 n/a인 것은 분리 채널 항목이 지원되지 않는다는 표시이며 패킷을 수신하지 못한다는 뜻이 아니다.
    suricata · 실습·개념 참고 화면 3원본 크기로 보기 ↗
    • RX의 최대값은 4096, 현재값은 1024로 표시된다.
    • TX와 RX Jumbo도 별도의 현재값을 가진다. 최대 가능 값과 현재 설정을 구분해야 한다.
    확인 기준

    변경 전에는 인터페이스 통계·캡처 손실·CPU 병목을 먼저 기록한다.

  3. 손실 지점을 센서 파이프라인과 연결한다

    • NIC 드롭이 늘면 캡처 이전 손실을 의심하고, 캡처·해석 통계와 함께 비교한다. EVE 경보 수가 적다는 것만으로 트래픽이 적거나 안전하다고 판단하지 않는다.
    • ··AF_PACKET 등 실제 실행 조건을 적고 같은 부하에서 한 설정씩 비교한다.
    확인 기준

    한 가지 튜닝 값보다 입력 패킷·수신 손실·처리 지연의 전후 수치를 비교한다.

실습에서 확인한 동작 원리

  • 채널 수·링 용량·스레드 수는 다른 값이다.
  • 경보 품질을 보기 전에 캡처 가시성과 손실부터 확인한다.
관련 개념·전체 실습 화면 이어서 읽기 →
동작·명령 참고 문서

04예제로 따라가기

  • 이벤트 설정: =420인 연결에 =0의 요청 A와 =1의 요청 B가 있다고 가정한다. 경보는 =1에서 발생했다.
  • 넓은 결합: 만으로 경보를 요청 목록에 결합하면 A와 B 둘 다 후보가 된다. 연결이 같다는 사실만 얻은 것이다.
  • 문맥 보강: 와 를 함께 비교하면 B로 좁힐 수 있다. 필드가 실제로 존재하고 같은 파서 문맥인지 확인한다.
  • 시간 대조: 요청·응답·경보 시각과 방향을 비교하여 재시작·ID 재사용·지연 도착을 구분한다.
  • 원문 복귀: 가능하면 해당 패킷·재조립 자료로 돌아가 실제 검사 버퍼를 확인한다. EVE의 요약 필드만으로 모든 본문 바이트를 복원할 수는 없다.

05혼동하기 쉬운 점과 확인 기준

  • 처리 단계: 수신 드롭·디코더 오류·flow/stream 제한·app-layer 파싱 상태를 구분한다. 원인은 모두 같은 종류의 packet loss가 아니다.
  • 설정 범위: EVE에서 활성화한 이벤트 유형과 출력 설정을 확인한다. 파싱은 수행됐지만 해당 유형을 기록하지 않을 수도 있다.
  • 깊이 한도: ··본문 검사 한도에 도달한 자료가 아닌지 통계와 설정을 대조한다. 규칙 불일치와 검사되지 않음을 분리한다.

06상세 노트 · 실습 자료

헤더 구조, 설정 예시, 수치 계산과 수업 캡처는 아래 노트에서 이어집니다.

READ · OBSERVE · CONNECT

함께 보는 학습 자료

아래 공식 자료를 본문의 개념·예제와 함께 읽어 보세요. 자료별로 확인할 위치와 관찰할 내용을 적었습니다.

공식 가이드

Suricata 8: EVE 이벤트별 JSON 예제

alert·http·anomaly·flow 예제를 나란히 읽어 연결 전체와 개별 응용 을 구분한다.

읽으면서 확인할 것
  • event_type마다 다른 필드 구조
  • 와 존재하는 의 결합
  • alert.action과 흐름 종료·상태 정보의 차이

공식 문서 · 표준

기초 개념과 동작 설명을 대조한 자료입니다. 제품 버전과 실제 설정에 따른 차이는 본문 및 원문에서 확인하세요.