- Snort
- 1998년 SourceFire사의 CTO Martin Roesch에 의해 발표된 오픈 소스 침입탐지시스템(IDS)
- 침입탐지시스템 중 가장 널리 사용된다.
기능[edit | edit source]
- Packet Sniffer: 네트워크 상의 패킷을 sniffing하여 보여주는 기능
- Packet Logger: 모니터링한 패킷을 저장하고 로그에 남기는 기능
- IDS/IPS: 네트워크 트래픽을 분석해 공격을 탐지/차단하는 기능
시그니처[edit | edit source]
[액션] [송신 IP] [송신 port] [방향] [수신 IP] [수신 port] ([룰 옵션])
- 룰 헤더와 룰 옵션으로 구성된다.
- 룰 옵션은 선택사항이지만 일반적으로 룰 옵션이 훨씬 더 많이 사용된다.
- (HTML에서 태그의 attribute보다 style이 훨씬 사용량이 더 많은 것과 흡사)
Rule Header[edit | edit source]
- 액션
- alert: 경고를 발생시킨다.
- log: 로그를 기록한다.
- pass: 패킷을 무시한다.
- active: alert를 발생시키고 대응하는 dynamic을 유효화 한다.
- dynamic: active에 의해 유효화된 경우 한쪽의 패킷을 기록한다.
- 송수신 IP, port
- 211.11.22.33 80
- 211.11.22.0/24 443
- any 80 또는 211.11.22.33 any 또는 any any 와 같이 사용 가능하다.
- '$HOME_NET' 와 같이 snort.conf에서 지정한 변수를 참조할 수도 있다.
- 방향
- -> 또는 <>
Rule Option[edit | edit source]
세미콜론(;)을 이용하여 옵션과 옵션을 구분한다.
- msg: 지정한 메시지가 이벤트 명으로 사용된다.
- dsize: dzise:<바이트, dsize:바이트<>바이트 와 같이 상한선, 하한선, 범위를 지정할 수 있다.
- content: 문자, 바이너리로 패턴을 탐지한다.
- content:"문자"
- content:| 00 01 0A AA |
- content: "| 90 90 90 | /bin/sh"
- offset: 검색을 시작할 byte수를 지정한다.
- depth: offset부터 시작하여 검색할 byte수를 지정한다.
- nocase: 대소문자를 구별하지 않는다.
- flags: TCP 제어 플래그를 지정한다. F, S, FA, FSA 등으로 지정 가능하다.
- pcre: 정규식을 사용한다.
- threshold: 패킷의 발생량을 기반으로 탐지한다.
- 아직까지 흔히 사용 되고 있지만 공식적으론 사용을 권장하지 않는다.
- 비슷한 기능을 하진 detection_filter 사용이 권장된다.
패턴 매칭[edit | edit source]
- 바이너리(Binary) 비교 방법
- 텍스트(Text) 비교 방법
- 바이너리 비교 방법에 비해 속도가 느리지만 유연한 매칭이 가능하다.