나무모에 미러 (일반/밝은 화면)
최근 수정 시각 : 2026-11-09 18:54:46

Suricata

🌐 소프트웨어 관련 정보
{{{#!wiki style="min-height: calc(1.5em + 5px); margin: 0 -10px -5px"
{{{#!folding [ 펼치기ㆍ접기 ]
{{{#!wiki style="margin: -5px -1px -11px"
<colbgcolor=#64C3FA><colcolor=#fff> 기능에 따른 구분 시스템 소프트웨어 · 응용 소프트웨어 · 유틸리티 · 펌웨어
권한에 따른 구분 사유 소프트웨어 · 자유 소프트웨어 · 프리웨어 · 셰어웨어 · 애드웨어 · 오픈 소스
직업 프로그래머(개발자) · 시스템 분석가 · QA · DB Admin · 디자이너
목록 소프트웨어/목록
}}}}}}}}} ||
1. 개요2. 개발 배경
2.1. Snort의 한계와 '차세대 IDS' 구상2.2. 프로토타입과 OISF 설립2.3. 첫 공개
3. 역사
3.1. 연표3.2. 주요 버전별 변화
4. 주요 기능
4.1. 침입 탐지(IDS)와 침입 방지(IPS)4.2. 네트워크 보안 모니터링(NSM)4.3. 자동 프로토콜 탐지4.4. 파일 추출과 식별4.5. PCAP 기록4.6. EVE JSON 출력4.7. 룰셋4.8. 고성능 패킷 수집
5. 개발 체계와 품질 관리6. 커뮤니티7. Snort와의 비교8. 활용9. 외부 링크

1. 개요

Suricata(수리카타)는 미국의 비영리 재단 OISF(Open Information Security Foundation)와 Suricata 커뮤니티가 개발하는 오픈소스 네트워크 위협 탐지 엔진이다. 하나의 엔진으로 침입 탐지 시스템(IDS, Intrusion Detection System), 침입 방지 시스템(IPS, Intrusion Prevention System), 네트워크 보안 모니터링(NSM, Network Security Monitoring) 기능을 모두 수행한다.

GitHub 저장소(OISF/suricata)의 공식 소개는 "Suricata is a network Intrusion Detection System, Intrusion Prevention System and Network Security Monitoring engine developed by the OISF and the Suricata community"이다. 라이선스는 GNU GPL v2이며, 주 개발 언어는 C이고 2017년 무렵부터 메모리 안전성을 위해 Rust 코드 비중을 꾸준히 늘려 왔다. 2026년 11월 기준 GitHub 저장소의 스타는 약 6,800개, 포크는 약 1,800개이며, 최신 안정 버전은 8.0.8(2026년 10월 29일 공개)이다.

이름 'Suricata'는 아프리카에 사는 몽구스과 동물 미어캣의 학명(Suricata suricatta)에서 따왔다. 무리 중 한 마리가 곧게 서서 주변을 감시하다 위험을 알리는 미어캣의 습성이 네트워크를 지켜보다 위협을 경고하는 IDS의 역할과 닮았다는 점에서 붙은 이름이며, 공식 로고도 미어캣을 형상화하고 있다.

Snort와 함께 세계에서 가장 널리 쓰이는 오픈소스 IDS/IPS 엔진으로 꼽히며, 상용 보안 장비, 방화벽 배포판, SIEM·NDR 제품, 보안 관제 플랫폼의 탐지 엔진으로도 폭넓게 탑재된다.

2. 개발 배경

2.1. Snort의 한계와 '차세대 IDS' 구상

2000년대 중반까지 오픈소스 IDS 분야는 1998년 마틴 로시(Martin Roesch)가 만든 Snort가 사실상의 표준이었다. 그러나 Snort는 기본적으로 단일 스레드 구조로 설계되어, 멀티코어 CPU가 보편화되고 네트워크 대역폭이 기가비트·10기가비트급으로 커지면서 성능 확장에 한계가 드러났다. 또한 Snort의 개발 주도권은 마틴 로시가 세운 기업 소스파이어(Sourcefire)에 있었기 때문에, 커뮤니티와 정부 기관 일각에서는 특정 기업에 종속되지 않는 독립적인 오픈소스 엔진이 필요하다는 목소리가 있었다.

이런 배경에서 탐지 룰 커뮤니티 Emerging Threats를 이끌던 매트 존크먼(Matt Jonkman)과 네덜란드 개발자 빅터 줄리앙(Victor Julien)이 2007년 새로운 엔진 개발에 착수했다. 목표는 기존 도구를 단순히 대체하거나 흉내 내는 것이 아니라 "새로운 아이디어와 기술을 이 분야에 가져오는 것"이었다. 핵심 설계 방향은 다음과 같았다.

2.2. 프로토타입과 OISF 설립

빅터 줄리앙과 매트 존크먼은 2007년 첫 코드를 작성했고, 곧이어 윌리엄 멧캘프(William Metcalf)가 합류했다. 2008년 초 세 사람은 처음으로 모여 프로토타입 코드를 함께 검토했다.

프로젝트를 안정적으로 운영하기 위해 매트 존크먼은 미국 국토안보부(DHS)의 연구 자금을 확보했고, 이를 바탕으로 비영리 재단 OISF(Open Information Security Foundation)가 설립되었다. 초기 자금은 DHS 외에도 Endace, Everis, NitroSecurity 등 민간 보안 기업 컨소시엄이 함께 지원했다. 이후 OISF는 다양한 보안 기업이 참여하는 컨소시엄 회원사 체계로 운영되며, Suricata의 소유권은 특정 회사가 아닌 재단에 있다.

HTTP 트래픽 분석의 핵심 요소인 HTTP 파서 LibHTP는 웹 방화벽 ModSecurity의 개발자로 알려진 이반 리스틱(Ivan Ristić)이 OISF를 위해 작성했다. LibHTP는 Suricata와 함께 GPLv2로 공개되었으며, 다른 프로그램에서도 독립적으로 쓸 수 있는 라이브러리로 설계되었다.

2.3. 첫 공개

2009년 12월 31일, 매트 존크먼은 OISF 메일링 리스트에 "약 3년의 준비 끝에 드디어 Suricata 엔진의 첫 릴리스를 공개한다"고 알리며 첫 공개 베타 버전을 발표했다. 반응은 즉각적이었고, 약 7개월 뒤인 2010년 7월 첫 정식 버전인 Suricata 1.0이 공개되었다. 당시 언론은 "12년 된 Snort를 대체할 오픈소스 엔진"으로 소개했으며, 1.0에는 전 세계 25명 이상의 개발자가 기여했다. 1.0은 멀티스레딩, 자동 프로토콜 탐지, 네이티브 IP 평판 필터링 등을 특징으로 내세웠다. 당시 Snort 측은 Suricata가 더 우수하다는 주장에 반박하기도 해, 두 엔진의 성능 비교는 이후 오랫동안 보안 업계의 단골 화제가 되었다.

3. 역사

3.1. 연표

연도 내용
2007 빅터 줄리앙과 매트 존크먼이 첫 코드 작성. 윌리엄 멧캘프 합류
2008 세 개발자가 처음 모여 프로토타입 코드 발표
2009.12.31 첫 공개 베타 릴리스
2010 OISF 설립(DHS 자금), 7월 Suricata 1.0 정식 출시
2012 GitHub 저장소(OISF/suricata) 개설
2013 룩셈부르크 Hack.lu에서 첫 공개 대면 교육 개최(25명 참석)
2015 첫 SuriCon(Suricata 커뮤니티 콘퍼런스) 개최. 100명, 50개 기관, 10개 발표
2016 미국 워싱턴 D.C.에서 북미 첫 SuriCon(140명)
2017 SuriCon 프라하(176명, 매진). Rust 코드 도입 시작
2018 OISF 내부 팀이 초기 대비 두 배 이상으로 성장. 10주년 SuriCon 밴쿠버
2019 SuriCon 암스테르담(210명, 24개국). 지원 서비스와 현장 CTF 시작
2020 Suricata 6.0 출시. 첫 온라인 커뮤니티 행사
2021 OISF 내부 팀 14명으로 확대(초기 대비 4배). 하이브리드 SuriCon 보스턴
2022 SuriCon 아테네
2023 Suricata 7.0 출시(DPDK 지원, 신규 룰 키워드, 애플리케이션 프로토콜 확대)
2024 제10회 SuriCon 마드리드
2025.07 Suricata 8.0 출시(방화벽 모드, LibHTP의 Rust 이전 등)
2026.10 8.0.8 공개(최신 안정 버전)

3.2. 주요 버전별 변화

Suricata는 대략 2년 주기로 메이저 버전을 내며, 이전 메이저 버전도 일정 기간 보안 패치를 병행 지원한다(예: 8.x와 7.x 동시 유지보수).

4. 주요 기능

4.1. 침입 탐지(IDS)와 침입 방지(IPS)

IDS 모드에서는 미러링(SPAN/TAP)된 트래픽을 수동적으로 분석해 룰(시그니처)에 맞는 트래픽을 발견하면 경보를 생성한다. IPS 모드에서는 트래픽 경로 중간(인라인)에 위치해 악성 패킷을 실제로 차단·폐기하는 방화벽에 가까운 역할을 한다. 포트 스캔, 서비스 거부(DoS), Pass-the-Hash, 무차별 대입(브루트포스) 공격 등 일반적인 공격 벡터를 탐지할 수 있다. 8.0부터는 정책 기반의 방화벽 모드도 제공한다.

4.2. 네트워크 보안 모니터링(NSM)

경보뿐 아니라 HTTP, DNS, TLS, SMB, SMTP, SSH 등 다양한 네트워크 트랜잭션을 상세히 기록한다. 예를 들어 HTTP 요청의 호스트·URL·User-Agent·응답 코드, DNS 질의와 응답, TLS 인증서 정보와 JA3/JA4 지문 등을 로그로 남겨, 사고 발생 후 "무슨 일이 있었는지"를 재구성하는 포렌식 자료로 활용할 수 있다.

4.3. 자동 프로토콜 탐지

포트 번호에 의존하지 않고 트래픽 내용만으로 프로토콜을 식별한다. 예를 들어 비표준 포트에서 돌아가는 HTTP 서버나 443 포트가 아닌 곳의 TLS 통신, 표준 포트를 악용하는 악성 통신도 정확히 해석해 해당 프로토콜용 룰을 적용할 수 있다.

4.4. 파일 추출과 식별

HTTP, FTP, SMTP, SMB 등으로 전송되는 파일을 트래픽에서 추출해 디스크에 저장할 수 있다. 디스크에 저장하지 않고 파일 형식(magic) 식별이나 MD5·SHA-1·SHA-256 해시 계산만 수행해 악성 파일 해시 목록과 대조하는 것도 가능하다.

4.5. PCAP 기록

트래픽을 PCAP 형식으로 저장해 Wireshark 같은 도구로 나중에 분석할 수 있다. 룰에 걸린 흐름의 트래픽만 선택적으로 기록하는 조건부 PCAP 기록도 지원한다.

4.6. EVE JSON 출력

경보와 프로토콜 메타데이터, 파일 정보, 흐름(flow) 통계 등을 EVE라는 통합 JSON 형식으로 출력한다. 표준 JSON이므로 Elasticsearch·Logstash·Kibana(ELK), Splunk, Graylog 등 SIEM이나 로그 분석 플랫폼과 손쉽게 연동된다.

4.7. 룰셋

Suricata는 룰셋으로 탐지를 수행한다. 룰셋은 어떤 네트워크 행위가 경보를 일으켜야 하는지 정의한 시그니처의 모음으로, 알려진 취약점(CVE) 공격을 탐지하는 고위험 룰부터 조사에 참고할 만한 흥미로운 이벤트(소프트웨어 업데이트 등)를 표시하는 정보성 룰까지 다양한 심각도로 구성된다. 룰 문법은 Snort 룰과 높은 호환성을 가지면서도 Suricata 고유의 키워드가 추가되어 있다. 대표적인 무료 룰셋으로 Proofpoint의 ET Open(Emerging Threats Open)이 있으며, 룰 관리 도구 `suricata-update`로 여러 룰 소스를 손쉽게 내려받고 갱신할 수 있다. Lua 스크립트로 복잡한 탐지 로직을 작성하는 기능도 지원한다.

4.8. 고성능 패킷 수집

멀티스레드 구조 위에서 Linux AF_PACKET, PF_RING, Netmap, NFQUEUE(IPS), DPDK, 그리고 Endace·Napatech 같은 전용 캡처 카드를 활용해 수십 기가비트급 트래픽을 처리할 수 있다. Intel Hyperscan을 이용한 고속 다중 패턴 매칭도 지원한다.

5. 개발 체계와 품질 관리

Suricata는 대부분이 신뢰할 수 없는 입력을 다루는 복잡한 소프트웨어다. GitHub README는 입력 처리를 잘못했을 때의 위험을 다음과 같이 설명한다.게다가 많은 경우 IDS/IPS는 공격자가 직접 트래픽을 보낼 수 있는 위치에 있다. 이 때문에 OISF는 매우 엄격한 품질 보증(QA) 절차를 운영하며, 그 결과 기여(풀 리퀘스트)가 병합되기까지 시간이 오래 걸릴 수 있다고 미리 밝히고 있다.

기여 절차는 크게 세 단계다.
  1. 풀 리퀘스트를 올리면 자동으로 실행되는 GitHub CI 검사
  2. OISF 팀과 커뮤니티 개발자의 코드 리뷰
  3. 비공개 QA 환경에서의 검증(테스트 트래픽의 민감성 때문에 비공개로 운영)

비공개 QA는 최소 몇 시간, 보통 밤새 실행되며 다음을 포함한다.
변경 내용에 따라 수 기가비트급 트래픽 재현, 수 테라바이트 규모 PCAP 처리, 며칠에서 몇 주에 걸친 퍼징, 성능 테스트 등이 추가로 수행된다. 병합 이후에는 Coverity Scan 정적 분석이 하루 한 번 돌아가며, Google의 OSS-Fuzz를 통한 지속적 퍼징과 Codecov 커버리지 측정도 이뤄진다. 버그 추적은 OISF Redmine에서, 사용자 지원은 공식 포럼에서 진행된다.

GitHub 기준 저장소 코드는 C가 가장 많고(약 1,480만 바이트) Rust가 그다음(약 520만 바이트)이며, Python, Shell, Lua 등이 보조적으로 쓰인다.

6. 커뮤니티

OISF는 2015년부터 매년 SuriCon이라는 커뮤니티 콘퍼런스를 열고 있다. 교육, 기술 발표, 네트워킹이 어우러지는 행사로, 워싱턴 D.C.(2016), 프라하(2017), 밴쿠버(2018), 암스테르담(2019), 보스턴(2021), 아테네(2022) 등을 거쳐 2024년 마드리드에서 10회째를 맞았다. 2020년에는 코로나19 상황에서 첫 온라인 커뮤니티 행사를 열었고, 이후 대면과 온라인을 병행하는 하이브리드 방식으로 운영하기도 했다. OISF는 공식 교육과 유료 지원 서비스도 제공한다.

7. Snort와의 비교

항목 Suricata Snort
개발 주체 비영리 재단 OISF와 커뮤니티 소스파이어(현 시스코 Talos)
첫 공개 2009년(베타), 2010년(1.0) 1998년
스레드 구조 초기부터 멀티스레드 2.x는 단일 스레드, Snort 3에서 멀티스레드 도입
주 언어 C + Rust C/C++
프로토콜 탐지 포트와 무관한 자동 탐지 Snort 3에서 강화
로그 형식 EVE JSON 기본 제공 unified2 등(Snort 3에서 JSON 지원)
라이선스 GPLv2 GPLv2
두 엔진의 룰 문법은 상당 부분 호환되어, 같은 룰셋을 약간의 차이만으로 함께 쓰는 경우가 많다.

8. 활용

Suricata는 단독으로도 쓰이지만, 많은 보안 제품과 배포판이 탐지 엔진으로 내장하고 있다.

9. 외부 링크