② HOME_NET / EXTERNAL_NET
보호 대상과 외부 네트워크 정의
alert tcp $EXTERNAL_NET any -> $HOME_NET 80 (
msg:"HTTP Access";
sid:2000001;
rev:1;
)
$HOME_NET보호하려는 내부망, 서버망 또는 DMZ 대역입니다.
$EXTERNAL_NET외부 인터넷 또는 HOME_NET을 제외한 네트워크입니다.
Snort 3 설정
/usr/local/snort/etc/snort/snort.lua
HOME_NET = '6.10.64.0/24'
EXTERNAL_NET = 'any'
include 'snort_defaults.lua'
Security Onion / Snort 2 설정
/etc/nsm/[센서명-인터페이스]/snort.conf
ipvar HOME_NET 6.10.64.0/24
ipvar EXTERNAL_NET !$HOME_NET
ipvar HTTP_SERVERS 6.10.64.30
핵심: EXTERNAL_NET any는 내부 통신도 포함할 수 있습니다. 외부만 의미하게 하려면 !$HOME_NET 구성이 더 명확합니다.
③ Content
현재 검사 버퍼에서 문자열 검색
alert tcp $EXTERNAL_NET any -> $HOME_NET 80 (
msg:"POST String Detected";
content:"POST";
sid:2000002;
rev:1;
)
content는 현재 선택된 버퍼에서 문자열 또는 16진수 패턴을 찾습니다. 별도 Sticky Buffer를 선택하지 않으면 일반 패킷 데이터가 기준입니다.
16진수content:"|50 4F 53 54|";
혼합 표현content:"Location|3A 20|";
content:"POST";와 content:"|50 4F 53 54|";는 같은 바이트를 탐지합니다.
⑤ Flow
세션 상태와 통신 방향 제한
alert http $EXTERNAL_NET any -> $HOME_NET any (
msg:"HTTP Request";
flow:established,to_server;
sid:2000004;
rev:1;
)
established연결이 성립된 TCP 세션에 속한 패킷만 검사합니다.
to_server클라이언트에서 서버로 가는 요청 방향입니다.
to_client서버에서 클라이언트로 가는 응답 방향입니다.
Client Server
SYN ------------------------->
<-------------------- SYN/ACK
ACK ------------------------->
HTTP Request = to_server
HTTP Response = to_client
Snort의 TCP 세션 추적기는 SYN, SYN/ACK, ACK와 양방향 패킷을 바탕으로 세션 상태와 클라이언트·서버 방향을 관리합니다.
SPAN에서 한쪽 방향만 수집하거나 세션 중간부터 보기 시작하면 established 판단이 제한될 수 있습니다.