
Suricata
수리카타
는 패킷·흐름·응용 을 분석하여 탐지와 자료를 만드는 엔진이다. 은 경보뿐 아니라 HTTP···흐름 등의 서로 다른 이벤트를 담는다.
밑줄 용어에 마우스를 올리거나, 키보드로 선택하거나, 터치하면 설명을 볼 수 있습니다.
로고: OISF / Suricata 공식 자료. 제품 식별을 위해 표시하며 각 상표의 권리는 권리자에게 있습니다.
01무엇이고, 어떤 일을 하나
- 흐름 기반 재조립과 응용 해석으로 규칙을 평가한다.
- 동일 흐름의 경보·요청·파일 자료를 연결한다.
- 캡처 손실·메모리 제한·검사 깊이를 관제 품질과 함께 관찰한다.
02어떤 순서로 동작하나
- 캡처 경로로 입력
NIC와 지원 캡처 기능이 패킷을 사용자 공간 엔진으로 전달한다. Ring·큐·CPU 병목은 이 단계에서 손실을 만들 수 있다.
- Decode·Defrag
헤더와 캡슐화를 읽고 필요한 IP 단편을 재조립한다. IP fragment 처리와 stream 처리는 다르다.
- Flow·Stream
양방향 흐름과 상태·순서·재전송을 관리해 응용 파서에 필요한 바이트를 구성한다.
- 응용 파싱
HTTP method·URI·status 같은 의미 있는 필드와 검사 버퍼를 만든다.
- 탐지 평가
Prefilter와 규칙 평가가 조건을 검사한다. ·depth·누락 패킷은 검사 가능한 범위를 제한한다.
- EVE 출력
활성화한 유형에 따라 alert·http·flow 등을 기록한다. 와 필요한 로 같은 통신의 다른 관찰을 연결한다.
03먼저 알아둘 용어와 구성요소
- 같은 흐름의 EVE 이벤트를 연결하는 값.
- 지원되는 응용 프로토콜에서 을 구분하는 값.
- 경보·흐름·응용 프로토콜 등 여러 이벤트 유형을 구조화된 JSON으로 기록하는 출력 체계.
- 캡처와 분석 작업을 스레드에 배치하는 실행 모드.
- 네트워크 장치가 흐름을 여러 수신 큐로 분배하는 기능.
- 한 작업 스레드가 캡처 이후 여러 분석 단계를 담당하는 실행 방식.
- 캡처와 흐름 분석 작업을 분리해 분배하는 실행 방식.
- 특정 내부 자료 구조에 사용할 메모리 한도.
- 스트림에서 분석할 바이트 범위의 한도.
- 도구 간 흐름 식별을 돕는 표준화된 해시 식별 방식.
- 의 응용 프로토콜 분석에서 요청·응답 같은 논리적 교환 단위를 뜻한다. 같은 연결에 여러 이 있을 수 있으며 데이터베이스의 ACID 과 문맥이 다르다.
Suricata 실행 전에 NIC의 큐·링·드라이버 읽기
채널 수와 수신 링 용량을 구분하고 패킷 손실 진단의 기준선을 만든다.
실습 구성과 전제
- 센서용 격리 의 데이터 NIC를 확인한다.
- 조회 명령만 사용하며 운영 NIC의 채널 수·링 크기를 임의로 변경하지 않는다.
드라이버가 제공하는 기능을 확인한다
- ethtool -i는 드라이버와 기능 정보를 보여 준다. 게스트에서 보이는 가상 NIC의 기능과 물리 호스트 NIC의 기능을 혼동하지 않는다.
- 기능 지원은 실제 활성화 상태나 사용 상태와 별개다.
shellethtool -i ens160 suricata --build-infoNIC와 빌드 기능을 조회한다. 인터페이스 이름은 자신의 센서에 맞춘다.
원본 크기로 보기 ↗- driver는 vmxnet3이며 version·bus-info가 표시된다.
- supports-statistics는 yes지만 EEPROM 접근은 no다. 모든 ethtool 기능이 동일하게 지원되는 것은 아니다.
확인 기준센서 인터페이스 이름과 드라이버를 운영 기록에 남긴다.
채널 수와 링 크기를 나누어 읽는다
- ethtool -l의 Combined는 채널 수이며 ethtool -g의 RX는 링 파라미터다. 숫자 4와 1024를 같은 단위의 처리량으로 비교하지 않는다.
- 여러 큐가 있어도 양방향 연결이 같은 처리 맥락에 배치되는지, 캡처 모드의 분배 방식이 맞는지를 확인해야 한다.
shellethtool -l ens160 ethtool -g ens160 ethtool -S ens160채널·링·통계를 각각 조회한다. 드라이버마다 통계 이름과 지원 항목이 다르다.
원본 크기로 보기 ↗- Combined의 최대값과 현재값이 모두 4로 표시된다.
- RX·TX가 n/a인 것은 분리 채널 항목이 지원되지 않는다는 표시이며 패킷을 수신하지 못한다는 뜻이 아니다.
원본 크기로 보기 ↗- RX의 최대값은 4096, 현재값은 1024로 표시된다.
- TX와 RX Jumbo도 별도의 현재값을 가진다. 최대 가능 값과 현재 설정을 구분해야 한다.
확인 기준변경 전에는 인터페이스 통계·캡처 손실·CPU 병목을 먼저 기록한다.
손실 지점을 센서 파이프라인과 연결한다
- 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상세 노트 · 실습 자료
헤더 구조, 설정 예시, 수치 계산과 수업 캡처는 아래 노트에서 이어집니다.
함께 보는 학습 자료
아래 공식 자료를 본문의 개념·예제와 함께 읽어 보세요. 자료별로 확인할 위치와 관찰할 내용을 적었습니다.
Suricata 8: EVE 이벤트별 JSON 예제
alert·http·anomaly·flow 예제를 나란히 읽어 연결 전체와 개별 응용 을 구분한다.
- event_type마다 다른 필드 구조
- 와 존재하는 의 결합
- alert.action과 흐름 종료·상태 정보의 차이
공식 문서 · 표준
기초 개념과 동작 설명을 대조한 자료입니다. 제품 버전과 실제 설정에 따른 차이는 본문 및 원문에서 확인하세요.