Snort란,
오픈소스 기반의 네트워크 침입 탐지 시스템 (IDS) 으로, 실시간 트래픽 분석, IP에서의 패킷 로깅 수행, 프로토콜 분석, 내용 검색, 매칭 수행 가능. 패턴 기반의 악성 트래픽 탐지, 차단.
기능
1) 스니퍼 모드 (Sniffer Mode): 네트워크 인터페이스의 패킷을 읽고 스니핑하여 보여줌.
2) 패킷 로거 (Packet Logger): 수집한 패킷에 대한 Log를 저장.
3) 네트워크 침입 탐지 모드: 네트워크 트래픽을 사용자에 의해 정의된 규칙에 의해 탐지되는지 분석.
룰 기본 구조
- Snort Rule은 네트워크 패킷 분석, 특정 패턴의 탐지/차단을 위해 작성되는 규칙
- 룰은 헤더와 옵션으로 구성
[Action][Protocol][Src IP][Src Port] -> [Dst IP][Dst Port] (Options)
↓
Rule Header: Action, Protocol, Src IP/Port -> Dst IP/Port
Rule Option: Option
Action의 종류
- Action 부분은 Snort Rule에서 특정 패킷이 탐지되었을 때 수행할 작업을 지정할 수 있음.
- Alert: 탐지된 패킷을 로그에 기록, 경고 메시지 출력.
- Pass: 탐지된 패킷을 무시 (허용)
- Drop: 패킷을 차단하고 로그에 기록 (IPS 모드에서 사용)
- Log: 패킷을 로깅하지만, 추가 동작을 수행하지 않음.
- Reject: Drop과 동일하게 패킷을 차단하지만, 거부 응답을 전송 (ICMP/TCP RST)
Protocol 종류
Port 설정 방법
- any = 모든 포트
- [포트 번호] = 특정 포트
- [포트 번호1]:[포트 번호2] = 포트 번호1 ~ 포트 번호2
- :[포트 번호] = 포트 번호 이하의 모든 포트
- [포트 번호]: = 포트 번호 이상의 모든 포트
IP 설정 방법
- ! = 부정 연산자. 특정 네트워크 대역 제외
- any = 모든 IP
- [] = 비연속적 IP 지정
- [특정 대역/서브넷 마스크] = 특정 IP 대역 지정
- ![특정 대역/서브넷 마스크] = 전체 IP에서 특정 대역 제외
Rule Option
- 방향 연산자
- ->: 송신지에서 수신지를 향함을 의미
- <>: 송신지와 수신지를 오가는 패킷을 의미
- 옵션
- msg: 로그를 남기거나 경고 이벤트를 보여줄 때 나타나는 메시지
- gid: 비슷한 형태의 시그니처를 그룹화한 것
- sid: 규칙을 구별하는 식별자 (식별 번호). 1~99는 예약된 식별자,
100~1,000,000는 Snort 배포 규칙. 1,000,001부터 사용자
정의 규칙 (ex. sid:1123546)
- rev: 시그니처 버전 (ex. rev:1)
- payload
- distance: 이전 content가 매칭되었을 때, 패턴이 시작할 상대 위치 지정.
- within: 이전 content가 매칭되었을 때, 패턴 매칭을 끝낼 상대 위치 지정.
- isdataat: 페이로드에서 원하는 바이트만큼 이동 후, 콘텐츠 비교.
- pcre: 정규 표현식을 이용한 시그니처 탐지.
- http 관련 옵션
- http_method: 페이로드 앞부분의 http 메소드 부분에서 패턴 매칭
- http_uri / http_raw_uri: 페이로드에서 http uri 값을 패턴 매칭
- http_cookie / http_raw_cookie: 페이로드에서 http 쿠키 값을 패턴 매칭
- http_header / http_raw_header: http header 값을 패턴 매칭에 사용
- http_content_body: http 요청의 본문에서 패턴 매칭
- http_client_body: http_client_body에서 특정 값을 패턴 매칭. body를 사용하지 않는 GET 메소드에서 사용 불가, POST 메소드는 가능.
- http_stat_code: http response 패킷에서 상태 코드 부분에서 패턴 매칭. (1xx, 2xx, 3xx, 4xx, 5xx 등)
- http_stat_msg: http response 패킷에서 상태 메시지 부분에서 패턴 매칭
- http_user_agent: http user agent 이용하여 패턴 매칭