본문으로 바로가기

[ 기업 정보 보호 전문가 양성 과정 시스템 정보 보안 기술 실무 ] 책의 일부를 참고 했습니다. 


- rule 은 크게 헤더와 옵션으로 구성되어 있다.



- 헤더 


- Action ( IPS )

------------------------------------------------------------------------------------

종류 내용

------------------------------------------------------------------------------------

Drop 인라인(In-Line)방식으로 구성되어 있을 경우 IPS 역할이 가능, 

규칙에 매칭되는 패킷을 차단하는 기록

Reject Drop과 같은 액션을 취함

- TCP의 RESET 패킷을 출발지로 전송

- ICMP 패킷은 Unreachable로 반송

Sdrop Drop과 동일하게 패킷을 차단하지만 로그 기록하지 않음

------------------------------------------------------------------------------------


- 옵션


일반 옵션(General Options)

---------------------------------------------------------------------------------------------

옵션 내용

---------------------------------------------------------------------------------------------

(필)msg 경고 이벤트를 보여줄 때 나타나는 메세지(EX: msg:"SQL Injection";)

(필)sid 규칙을 구분하는 식별자(EX: sid:3000001;)

모든 규칙은 식별 번호를 가짐

0 ~ 2999999 : 이미 예약된 식별자

3000000 ~   : 사용 가능한 식별자

(필)rev 해당 규칙에 대한 버전(EX: rev:1;)

수정 할 때 마다 숫자를 1씩 증가

priority 우선 순위를 숫자로 지정(EX: priority:1;)

1(높은) ~ 10(낮음)

classtype 스노트 규칙을 분류하는 옵션(EX: classtype:<분류명>;)

정의파일: /etc/snort/classification.config 

(분류이름:분류설명:우선순위)

reference 취약점의 참고가 되는 정보(URL 등)를 연결

(EX: reference:url,www.example.com/test.html;)

(EX: reference:cve,2012-1823;)

정의 파일: /etc/snort/reference.config

---------------------------------------------------------------------------------------------

(필) 필수적으로 적어야 한다. 


페이로드(Payload)

---------------------------------------------------------------------------------------------

옵션 내용

---------------------------------------------------------------------------------------------

Content 탐지할 패턴을 설정하느 옵션(EX: Content:"abc";) (EX:Content:"|61 62 63|";)

Nocase 패턴 매칭시 대소문자 구별하지 않고 매칭(EX: Content:"abc";nocase;)

Offset 해당 옵션에서 지정한 바이트만큼 떨어진 위치부터 탐색 시작(EX: offset:5;)

Depth 패킷 데이터에서 찾을 내용의 범위를 지정하는 옵션

예를 들어 5로 지정하면 처음부터 5바이트까지 문자열 탐색(EX: depth:5;) 

distance 이전 content 설정 값 매칭 탐색할 위치를 지정

예를 들어 abc가 매칭된 위치에서 10바이트 떨어진 위치부터 test 문자열을 탐색 

시작하고 싶다.(EX: Content:"abc";nocase;content:"test";distance:32;)

within 이전 content 설정 값 매칭 후 매칭을 끝낼 상대 위치를 지정

예를 들어 abc가 매칭된 위치에서 10바이트 이내에 test 문자열 존재하는지 탐색

(Content:"abc";nocase;content:"test";within:10;)

pcre 스노트 규칙에서 사용가능한 정규 표현식

특정 문자열의 집합을 표현할 때 효과적으로 사용 가능

(EX: pcre:"/select\b.*FROM/Ui";)

---------------------------------------------------------------------------------------------


EX)

content:"USER root";nocase;

> USER root  대 소문자 구별 안 함


content:"GET";depth:3;

> 처음부터 3byte 까지 GET 문자가 있는지 확인한다. 

> depth를 안쓰면 전체 다 확인 -> 속도 저하 


content:"cgi-bin/phf";offset:4;depth:20;

> 첫 4 byte 이후부터 20 byte 까지 cgi-bin/phf 문자가 있는지 확인한다. 


content:"ABC";content:"DEF";distance:1;

> ABC 와 DEF  사이 거리가 1byte 만큼 떨어져 있는지 확인한다. 


content:"GET";depth;3;content:"downloads";distance:10;within9;

> 처음에서 3byte가 GET인지 확인하고 10byte 떨어진 곳에 download가 9byte 이내에 있는지 확인한다.




HTTP 관련 옵션(content 부분에 영향을 주는 옵션이다.)

---------------------------------------------------------------------------------------------

옵션 내용

---------------------------------------------------------------------------------------------

http_method 페이로드 앞부분의 HTTP 메소드 부분의 패턴을 매칭

메소드: GET, POST, PUT, HEAD, DELETE, TRACE ...

http_uri 페이로드에서 HTTP URI 값을 패턴 매칭

http_cookie 페이로드에서 HTTP 쿠키 값을 패턴 매칭

http_header HTTP 요청/응답 헤더 값에서 패턴 매칭 시도

http_client_body HTTP 요청/응답 바디 값에서 패턴 매칭 시도

http_stat_code HTTP 응답 메세지의 상태코드에서 매칭 시도.

http_stat_message HTTP 응답 메시지의 상태 메세지 부분에서 매칭 시도

---------------------------------------------------------------------------------------------


스노트 전체 규칙 옵션 

 [반드시 참고] 옵션이 너무 많기 때문에 찾아보면서 작성/ 해석 한다. 

 > http://manual-snort-org.s3-website-us-east-1.amazonaws.com/