239. Snort — 오픈소스 NIDS의 절대 표준

⚠️ 이 문서는 해커가 보낸 패킷을 까보고 수배 전단지(시그니처)와 일치하면 사이렌을 울리는 네트워크 기반 침입 탐지 시스템(NIDS)의 역사에서, **수억 원짜리 상용 보안 장비들을 발라버리고 전 세계 보안 전문가들이 가장 사랑하는 1등 툴로 군림하게 된, 가볍고 빠르며 룰(Rule)을 마치 레고 블록처럼 직관적인 텍스트로 뚝딱 짜 넣을 수 있는 위대한 오픈소스 침입 탐지 엔진인 '스노트(Snort)'**를 다룹니다.

핵심 인사이트 (3줄 요약)

  1. 본질: 네트워크 랜선을 통과하는 0과 1의 패킷 덩어리 냄새(Sniff)를 킁킁 맡고 다니다가, 자기가 가진 텍스트 룰북(규칙)에 일치하는 냄새(해킹 코드)가 나면 왈왈 짖어대는(Log/Alert) 돼지 모양 아이콘의 무료 오픈소스 보안 소프트웨어다.
  2. 가치: 스노트가 만든 룰(Rule) 문법은 곧 지구상 모든 IPS/IDS 장비의 '공통 헌법(De facto Standard)'이 되었다. 수천만 원짜리 팔로알토(Palo Alto)나 시스코(Cisco) 방화벽을 사도, 결국 그 장비에 시그니처를 등록할 땐 이 스노트 문법과 판박이인 코드를 쳐넣어야 한다.
  3. 기술 체계: 단순히 지나가는 패킷을 화면에 찍어주는 스니퍼 모드(Sniffer), 패킷을 캡처해서 하드디스크에 저장하는 패킷 로거 모드(Packet Logger), 마지막으로 룰을 엔진에 얹어 불법 침입을 색출해 내는 네트워크 IDS 모드(NIDS) 라는 3단 기어로 작동한다.

Ⅰ. 스노트(Snort)의 3가지 변신: 단순 스캐너에서 탐지 엔진으로

가장 멍청한 도구부터 가장 강력한 심판관까지, 텍스트 옵션 하나로 변신한다.

  1. 스니퍼 (Sniffer) 모드:
    • 해킹 탐지고 뭐고 아무 생각 없이, 내 컴퓨터 랜선으로 들어오고 나가는 모든 패킷을 모니터 화면에 쭉쭉 뿌려주는(Print) 아주 1차원적인 모드다.
    • 와이어샤크(Wireshark)나 리눅스의 tcpdump가 하는 짓과 100% 똑같다. "아하, 지금 TCP 패킷이 80번 포트로 날아가고 있구나"를 눈으로 볼 수 있다.
  2. 패킷 로거 (Packet Logger) 모드:
    • 모니터에 글씨를 뿌리면 너무 빨라서 인간의 눈으로 읽을 수가 없다.
    • 그래서 날아다니는 패킷을 화면에 뿌리지 않고, **하드디스크(/var/log/snort 폴더)에 조용히 파일로 차곡차곡 녹화(저장)**하는 모드다.
    • 보안 사고가 터진 다음 날 아침, 관리자가 이 녹화 파일을 열어서 어젯밤에 해커가 무슨 패킷을 쏘고 갔는지 VOD(블랙박스)를 돌려보며 디지털 포렌식(수사)을 할 때 쓴다.
  3. 네트워크 IDS (NIDS) 모드 $\star$:
    • 스노트의 진정한 존재 이유다.
    • 스노트 뱃속에 snort.conf라는 수천 줄의 법전(룰 세트)을 쑤셔 넣고 작동시킨다.
    • 이제 스노트는 패킷을 그냥 구경만 하지 않는다. 지나가는 패킷의 배를 갈라, 그 법전에 적혀있는 "살인마의 몽타주(시그니처 문자열)"가 들어있는지 1:1로 매칭 검색을 미친 듯이 돌린다. 발견되면 즉시 경보(Alert) 사이렌을 울린다.

📢 섹션 요약 비유: 스노트는 다재다능한 보안 카메라입니다. 스니퍼 모드는 경비원이 그냥 실시간 CCTV 화면 멍하니 쳐다보고 있는 겁니다(지나가면 끝). 로거 모드는 CCTV 화면을 하드디스크에 녹화해 둡니다(나중에 수사할 때 꿀템). 대망의 NIDS 모드는 CCTV에 인공지능 안면인식(룰 엔진)을 달아놔서, 지명수배자 전단지(룰 파일)에 있는 얼굴이 화면에 잡히는 순간 카메라가 삐용삐용! 하고 굉음을 내며 경찰에 신고하는 완벽한 실시간 감시 방어 체계입니다.


Ⅱ. 헌법의 해부학: 스노트 룰(Snort Rule) 문법

모든 공격을 막아내는 한 줄의 마법 주문.

  1. 룰의 구조 (헤더 + 옵션):
    • 스노트 룰은 무식할 정도로 직관적인 영어 한 줄로 되어 있다.
    • [어떻게 할까?] [무슨 프로토콜?] [어디서?] -> [어디로?] (자세한 증거물 조건들;)
  2. 헤더 (Header) - 문지기의 방향 지시:
    • alert tcp any any -> 192.168.1.10 80
    • 해석: "저 멀리 전 세계 어느 놈(any)이 어느 포트(any)에서 출발하든 상관없이, 내 소중한 웹서버 IP(192.168.1.10)의 80번 포트(->)를 향해 날아오는 TCP 패킷이 있다면 일단 경고(alert) 사이렌을 울릴 준비를 해라!"
  3. 옵션 (Options) - 패킷의 속살(Payload) 후벼 파기 $\star$:
    • 룰의 진짜 심장이다. 괄호 ( ) 안에 구체적인 몽타주(문자열) 조건을 건다.
    • (msg:"SQL Injection Detected!"; content:"UNION SELECT"; nocase; sid:100001;)
    • content: "패킷의 내용물(Payload) 텍스트를 까봐서 UNION SELECT라는 미친 글씨가 적혀있으면 멱살을 잡아라!" (이게 어제 배운 시그니처(Signature) 그 자체다.)
    • nocase: "해커가 대소문자를 섞어서 uNioN SeLeCt라고 꼼수를 부려도 다 잡아내라!(대소문자 무시)"
    • sid: "이 룰의 주민등록번호는 100001번이다." (관리용 번호)

📢 섹션 요약 비유: 스노트 룰은 경비원에게 던져주는 완벽한 지시서입니다. **헤더(Header)**는 출입구 지정입니다. "어디서 온 놈이든 상관없이 우리 1층 정문(80번 포트)으로 들어오는 놈을 막아라." **옵션(Options)**은 범인 몽타주입니다. "들어오는 놈의 가방(패킷)을 까봐서, 그 안에 마약(content:"마약")이 들어있으면 묻지도 따지지도 말고 [마약범 체포!]라고 무전기(msg)로 소리쳐라! 마약 글씨가 대문자든 소문자든(nocase) 절대 속지 말고 다 잡아라!" 이 명쾌한 한 줄의 문법이 전 세계 보안 인프라를 지탱하고 있습니다.


Ⅲ. 전설의 귀환과 한계: Suricata와 차세대 IDS로의 계승

너무 늙어버린 돼지를 살리기 위한 후배들의 등장.

  1. 싱글 스레드(Single-Thread)의 비극:
    • 스노트는 1998년에 만들어진 할아버지다. 치명적인 단점이 하나 있는데, 코드가 싱글 스레드로 짜여 있다는 것이다.
    • 즉, CPU 코어가 128개 달린 수천만 원짜리 최신 빵빵한 서버에 스노트를 깔아봤자, 스노트는 코어 1개만 미친 듯이 갈구며 일하고 나머지 127개 코어는 놀고먹는다. 트래픽이 10Gbps로 터지면 1개의 스레드로는 검사를 다 못 끝내고 병목(Bottle-neck)이 터져 뻗어버린다.
  2. 수리카타 (Suricata)의 왕위 찬탈:
    • 이 스노트의 답답함을 참지 못하고 나온 게 바로 '수리카타(Suricata)'다.
    • 수리카타는 **멀티 스레드(Multi-Thread)**를 100% 지원한다. 들어오는 수만 개의 트래픽을 128개 코어에 쫙 뿌려서 갈라치기로 동시 검사해 버린다.
    • 더 소름 돋는 건, 룰북은 기존에 쓰던 '스노트 룰(Snort Rule)' 문법 텍스트를 그대로 복사 붙여넣기 해서 쓸 수 있게 호환성을 맞춰놨다. (기존 스노트 유저를 완벽히 흡수함)
  3. 클라우드 시대와 eBPF (Cilium)의 위협:
    • 최근 쿠버네티스(K8s)와 같은 클라우드 환경에서는 패킷 검사조차 무겁다.
    • 스노트처럼 위에서 룰을 까보는 대신, 리눅스 커널(심장) 밑바닥에 C 코드를 몰래 박아넣고 빛의 속도로 패킷을 낚아채서 찢어버리는 eBPF (Cilium 등) 기술이 차세대 보안 표준으로 급부상하며 스노트 할아버지의 자리를 위협하고 있다.

📢 섹션 요약 비유: 스노트(Snort)는 1990년대에 전 세계에 라면(보안 룰 문법) 레시피의 표준을 세운 위대한 1대 주방장입니다. 그런데 이 주방장은 고집이 세서 가스레인지 불을 1개(싱글 스레드)만 쓰고 요리합니다. 손님이 1만 명 오면 가게가 터집니다. 그래서 가스레인지 불을 100개(멀티 스레드) 켤 수 있는 2대 천재 주방장 '수리카타(Suricata)'가 나타났습니다. 놀라운 건 수리카타도 1대 주방장이 적어놓은 전설의 요리 비법책(Snort Rule)을 그대로 보고 요리한다는 점입니다. 이처럼 스노트는 늙었지만, 그가 남긴 룰의 문법과 철학은 영원히 후배들의 뼈대 속에 살아 숨 쉬고 있습니다.