728x90
반응형

개요

  • snort Rule/Signature 크게 Header Body 구성
  • Header는 처리방식, Protocol, IP, Port번호 처리할 Packet 판단 기준 명시
  • Body는 Packet 탐지하기 위한 규칙 명시

 

Header Rule

 

Actions

  • 패킷 탐지 시  처리방식은 8가지

 

Protocols

  • 탐지는 4가지 프로토콜을 지원
  • TCP, UDP, ICMP, IP

 

IP Address

  • Source IP, Destination IP의 Rule 설정 가능
  • IP 및 IP 대역(CIDR 표기), IP List 지정 가능
  • IP List를 지정할 경우 대괄호[ ]로 묶어서 콤마(,)를 구분자로 사용
    ex) 192.168.0.10, 192.168.0.20 
         192.168.1.0/24, 192.168.1.20
  • any는 모든 IP를 의미하며, 일반적으로 Source 정보는 공격자의 IP를 알지 못하는 경우가 대부분이므로 any로 지정
  • ! 를 통해 부정 연산의 설정 가능
    ex) !192.168.0.10 : 해당 IP를 제외한 모든 IP

 

Port Number

  • Source Port, Destination Port의 Rule 설정 가능
  • Port 범위 지정 시 콜론 ":" 을 이용
    ex) 1:1023   -> 1~1023 Port 
           :49151 -> 49151 이하 Port
         1024:     -> 1024 이상 Port
         20:80, 443
     

Direct Operator

  • -> : 단방향 탐지, 왼쪽 Source 정보 -> 오른쪽에 Destination 정보
  • <> : 양방향 탐지, Source와 Destination 사이에 오가는 모든 패킷 
  • "<-" 사용하지 않는 방향지시자로 주의

 

 

Action 유형

Action 설 명
alert alert를 발생시키고, 패킷을 로그에 남김
log 패킷을 로그에 남김
drop 패킷을 차단하고 로그에 남김
reject drop rule과 동일하게 패킷을 차단하고, 로그를 남김
drop과 다르게 TCP 경우 TCP Reset을 전송하고, UDP 경우 ICMP port unreachable 메시지를 전송
pass 패킷을 무시
sdrop 패킷을 차단하고 로그는 남기지 않음
activate alert를 발생시키고, 대응하는 dynamic rule을 활성화
dynamic activate rule에 의해 활성화 되고, log rule과 동일하게 동작

 

 

 

설정 예시

단방향 예시

action protocol source port direction destination port
alert tcp any any -> 192.168.1.0/24 80
  • alert 발생시키고 패킷을 로그에 남김
  • TCP Protocol / ALL Source IP / ALL Source Port 이고 단방향 통신을 탐지하며, Destination IP 192.168.1.0 대역 / Destination Port 80 패킷 탐지

 

양방향 예시

action protocol source port direction destination port
alert tcp $EXTERNAL_NET any <> $HOME_NET 80
  • alert 발생시키고 패킷을 로그에 남김
  • TCP Protocol / 외부 IP /  ALL Port이고 양방향 통신을 탐지하며, 내부 IP / Port 80 송수신 패킷 탐지
  • $EXTERNAL_NET : snort.conf 정의되어 있는 환경변수로 외부 네트워크를 의미하며 보통 any 설정
  • $HOME_NET: snort.conf 정의되어 있는 환경변수로 내부 네트워크를 의미하며, 내부 대역을 설정

 

 

룰 바디(body) 옵션

옵션 설명
msg alert 발생 시 이벤트 이름으로 사용
reference rule과 관련된 취약점 정보 참조 시 사용
sid snort rule id로 사용 범위는 아래와 같다
  • 99이하 : 시스템에 예약된 sid
  • 100 ~ 1,000,000 : snort(www.snort.org)에서 배포하여 사용하는 sid
  • 1,000,001 이상 : 사용자 정의 rule sid
classtype 사용자가 어떤 유형의 공격인지 쉽게 이해하도록 우선순위를 결정할 수 있으며, 공격 유형과 기본 우선순위(위험도)를 정의
우선순위 : 1(높음), 2(중간), 3(낮음)
priority rule의 우선순위(위험도)에 대해 숫자로 표기
rev rule 버전번호로 수정 횟수를 표기, 수정할 때 마다 1씩 증가

 

 

 

룰 바디(body) 설정 : 페이로드(Payload)/범위 관련 옵션

Action 설명
Content 페이로드에서 검사할 문자열

text or binary 형식이 있으며 두개가 복합된 형식도 가능
  • text 형식 : content:"apple", 해당 apple 문자열 검사
  • binary 형식 : content:"|0d 0a|", 파이프 기호 사이에 헥사값 검사
  • !(부정연산자 사용): content:"apple", 해당 apple 문자열이 없는지 검사
  • (;), (\), (")  3가지 특수문자는 escape처리(\)해서 사용 (ex, \;)
uricontent content 문자열을 전체 패킷과 비교하는 대신 HTTP 클라이언트 요청 URI 정보를 검사할 문자열 지정
offset 페이로드에서 content 패턴을 검사할 시작위치

페이로드 첫 번째 Byte 바이트 위치는 0부터 시작
depth offset부터 몇 Byte까지 검사할 것인지 지정
distance 이전의 content패턴에 매치된 경우, 매치된 이후 몇 Byte 부터 몇 Byte 떨어진 위치에서 다음 content를 검사할 것인지 지정
within 이전 content 패턴에 매치된 경우, distance 부터 몇 바이트 범위 내에서 다음 content를 검사 할 것인지를 지정
nocase 페이로드 검사 시 대/소문자를 구분하지 않음 (바이너리 형식도 동일하게 구분하지 않음)
 
  • 범위를 지정해주는 옵션(offset, depth, distance, within)을 사용하는 이유는 페이로드 전체에 대해 패턴 매치를 수행하는 보다 페이로드의 일부분에 대해서 패턴 매치를 수행하여 성능 향상과 오탐을 줄여줄 수 있음
  • 잘못된 범위를 지정하는 경우 미탐(false negative) 발생할 수 있어 주의가 필요
728x90

'*Security > [ Se ] 보안 이론' 카테고리의 다른 글

[Se - 05] SNMP  (0) 2022.01.03
[ Se - 03 ] ARP Protocol  (0) 2021.12.20
[ Se - 02 ] OSI 7 Layer  (0) 2021.12.19
[ Se - 01 ] CVE / CWE  (0) 2019.04.18

+ Recent posts