스노트

From CS Wiki
(Redirected from Snort)
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) 비교 방법
    • 바이너리 비교 방법에 비해 속도가 느리지만 유연한 매칭이 가능하다.