본문 바로가기

인프라 (Infra)/온프레미스 (On-premise)

스노트 룰과 수리카타 룰의 기본 문법

728x90
반응형

개요

스노트 룰을 쉽게 이해할 수 있다.

예제를 통해 스노트 문법을 이해한다.

 

 

 

Snort와 Suricata에서 룰을 정의하는 문법은 거의 유사하다고 보면 됩니다.

물론 옵션이 다른 경우도 있지만, 유사하다고 이해하는 편이 쉽습니다.

문법은 '헤더 + 옵션' 조합으로 구성되어 있습니다. 

 

 

 

 

Source 와 Destination 개념만 있다면, 어느 정도 직관적으로 이해할 수 있습니다.

 

간단히 분석해 보겠습니다.

 

alert

위 표의 '액션'에 해당합니다. alert는 '해당하는 트래픽이 있다면 경고를 발생시켜라' 라는 의미입니다. 이외에 log는 로깅만 하는 것이고, drop, reject 등은 차단하는 액션입니다.

 

tcp

위 표의 '프로토콜'에 해당합니다. tcp는 'tcp 프로토콜을 탐지하겠다' 라는 의미입니다. 이외에 udp, icmp, any 등을 사용할 수 있습니다.

 

any any -> any 80

차례대로 송신IP, 송신 포트, 방향, 수신 IP, 수신 포트를 의미합니다.

'any any'는 '모든 IP, 모든 포트에 대해서', 즉, '모든 소스에 대해서 탐지하겠다'라는 의미입니다.

'any 80'은 '모든 IP의 80번 포트에 대해서', 즉, '모든 웹 접속(http)에 대해서만 탐지하겠다'라는 의미입니다.

 

방향은 탐지 방향을 지정하는 것으로, " -> " 으로 설정하면 왼쪽은 송신자 정보, 오른쪽은 수신자 정보가 됩니다.

만약 송신자, 수신자를 구별하지 않고 모든 패킷을 탐지하려면 " <> " 로 설정할 수 있습니다.

 

여기까지가 룰 헤더입니다. 괄호 안 부터는 옵션 영역입니다.

 

각 옵션은 세미콜론 (;) 으로 구분합니다.

 

msg:"Test web traffic";

msg 옵션은 alert 발생 시 경고 메시지를 지정하는 옵션입니다. 즉, 'Test web traffic이라는 이름으로 발생시켜라'라는 의미입니다.

 

content: "GET";

content 옵션은 지정한 문자열을 탐지하는 옵션입니다. 즉, '트래픽 중 GET 문자열이 들어올 때 탐지하라'라는 의미입니다. 이 옵션이 없다면, 현재 Rule에서는 80번 포트로 통신하는 모든 http 트래픽이 탐지될 것입니다.

룰을 생성할 때 필수적으로 들어가야 하는 옵션입니다.

728x90
반응형