월간 인기 게시물

게시물 160건
   
Snort Rule Header
글쓴이 : 최고관리자 날짜 : 2010-06-22 (화) 10:51 조회 : 11261
글주소 :
                          

출처 : http://blog.naver.com/white00one/40088337728

  • Rule Header
    • Rule Header는 Snort Signatrue 의 핵심 부분
    • 규칙 검사 후 행동, 프로토콜, 출발지와 목적지의 IP, Port, 네트워크를 포함
      • Rule Action + Protocol + 출발지 정보 + 목적지 정보
    • Snort에서는 세가지의 패틴 매칭 알고리즘을 제공하고 있으며 사용자가 선택 가능
      • Aho-Corasick, Wu-Manber,Boyler-Moore 알고리즘
    • Snort의 규칙 파일은 다른 규칙 파일을 포함할수 있음
      • Include <complete_path_and_filename>

 

  • Rule Action
    • 각 Rule Action은 서로 다른 목적과 결과를 발생시킴
    • 패킷과 규칙이 일치할 경우 탐지 엔진에서 할 일을 정함
    • Rule Action을 정할떄는 Rule의 목적과 중요성을 고려
    • Rule Action 중 'Pass'액션은 기업 네트워크에서 거의 사용할일이 없으나, 특정 네트워크로부터 트래픽을 무시하고 싶을 때 유용하게 사용됨
    • Custom Rule Action
      • Ruletype suspicious

              type log 
              output log_tcpdump:suspicious.log
        }
    • 기본 Rule Action

Rule Action

설명

alert

log 액션과 동일한 방법으로 패킷을 로그로 저장한뒤 사용자가 설정한 방법대로 사용자에게 경고를 보낸다. Alert은 치명적인 공격에 대해서만 사용하는것을 권장한다. 많은 Alert로그는 로그분석에 어려움을 준다

log

패킷에 대한 로그를 저장한다.

pass

pass액션은 패킷을 무시한다. 말 그래돌 악의적인 패킷이 아니라고
판단될 경우 사용하면 된다

activate

Snort 의 기본 액션 중 가장 강력한 규칙으로 alert을 발생시킨후
다른 dynamic 규칙을 활성화한다. 즉, 복잡한 패킷이나 공격의 경우
activate 액션을 적용하면 좀더 효과적인 탐지가 가능하고 하나의
데이터에 대해서 다양한 검사 방법을 적용할수 있다.

dynamic

dynamic액션은 처음에 비활성화 상태로 있다가 activate 액션에 의해
활성화 된다. 활성화 된 이후에는 log액션 규칙과 동일하다.

drop

iptable에 의해 패킷을 거부하고 로그를 남긴다.

reject

iptable에 의해 패킷을 거부하고 로그를 남긴후, 프로토콜이 TCP나
ICMP포트일 경우 TCP를 보낸다.

sdrop

iptable에 의해 패킷을 거부하고 로그를 남기지 않는다.

 

  • Rule Protocol
    • TCP, UDP,IP,ICMP 네 가지의 프로토콜을 지원

      (ARP, ICRP,GRE,OSPF,RIP,IPX등 개발 중)

    • Rule Action 다음에 공백으로 구분하여 원하는 프로토콜 지정
    • 하나의 Rule에는 하나의 프로토콜만이 지정할수 있음
    • 프로토콜 지정의 예
      • log tcp any any -> any any (tcp의 아무 IP, 아무 포트에서 아무 IP 아무 port로 들어가는 패킷에 대한 로그를 남겨라)

 

  • IP Address
    • 프로토콜 다음은 출발지와 목적지에 대한 IP 주소 입력
    • IP 주소는 CIDR를 사용해서 지정하거나 단일 IP,주소를지정할수 있음
      • CIDR방식은 특정 네트워크 세그먼트나 일정한 IP 주소 대역을 지정해 줄수 있음
      • 192.168.100.0/24 : 192.168.100.0 ~ 192.168.100.255
      • 192.168.100.1/32 : 단일 IP 주소를 CIDR로 표현

         

    • Snort 규칙에서 일반도메인 이름을 사용할수 없으므로 CIDR의 표현 방식의 이해가 필요함
    • '!' 부정 연산자로 특정 네트워크 대역을 제외시킬 때 사용
    • '[]' : 단일 IP와 네트워크 대역 등 연속적이지 않은 IP주소를 지정할수 있음
    • 'any' : 모든 주소를 가리키는 와일드 카드로 유니코드 또는 버퍼 오버플로우와 같은 so,외부에서 모두 행해질수 있는 기술적인 취약점을 찾을 때 유용함
    • IP 주소의 재사용성을 위해서 변수를 사용함
    • 다양한 IP 주소 지정의 예
      • alert tcp !192.168.1.0/24 any -> 192.168.1.0/24 111 (tcp 192.168.1.0/24가 아닌 아무 포트에서 192.168.1.0/24 IP에 111 포트로 들어오는 모든 패킷에 대해 alert 을 남겨라)
      • alert tcp ![192.168.1.0./24, 10.1.1.0/24] any -> [192.168.1.0/24, 10.1.1.0/24] 111 ( tcp 192.168.1.0/24와 10.1.1.0/24 IP가 아닌 아무 포트에서 192.168.1.0/24와 10.1.1.0/24IPdml 111번 포트로 들어오는 패킷에 대해 alert을 남겨라

 

  • Port
    • IP 주소 할당에서 사용된 부정 연산자(!)와 와일드 카드(any)문자를 동일하게 사용
    • ':' : 연속된 port 번호를 지정할 경우 사용
    • 포트 번호는 tcp와 udp 규칙에서만 사용되나, snort 탐지 엔진이 정상적으로 동작하기 위해서는 포트 정보가 필요하므로 타 프로토콜에도 'any'를 사용
    • port 번호 지정의 예
      • log udp any any -> 192.168.1.0/24 1:1024 (UDP 모든 주소IP 의 모든 port에서 192.168.1.0/24 IP의 1번부터 1024번포트 로 들어오는 모든 패킷읠 로그를 남긴다)
      • log tcp any :1024 -> 192.168.1.0/24 500: (tcp 모든 주소의 1024번까지의 port에서 192.168.1.0/24 주소에서 500번port 부터 들어오는 모든 패킷에 대해 로그를 남긴다)

 

  • 방향 연산자
    • 방향 연잔자는 패킷의 방향을 표시
    • '->' 연산자는 왼쪽에 있는 내용이 출발지에 대한 정보이며, 오른쪽 내용은 목적지에 대한 정보를 나타냄
    • '<>' 연산자는 출발지와 목적지 사이에서 오가는 모든 패킷을 나타냄
    • '<>'연산자는 '->' 연산자에 비해서 IDS에 많은 부하를 가져옴
      • '<>'연산자는 대량의 트래픽을 발생시키지 않는 네트워크에 적용
    • 방향 연산자의 예
      • log tcp !192.168.1.0/24 any <> 192.168.1.0/24 23 (tcp 192.168.1.0/24의 주소가 아닌 모든 포트에서 192.168.1.0/24주소의 23 포트로 오고가는 모든 패킷에 대해 로그를 남긴다)

 

  • Activate 규칙과 Dynamic 규칙
    • Activate 규칙은 자신이 활성화 될 경우 다른 Dynamic 규칙을 활성화 시킴
    • Activate 규칙은 경고를 발생시키고 연관된 Dynamic 규칙을 활성화 시켜 log를 남길수 있음
    • Activate 규칙에서 'activates'뒤에 오는 값과 Dynamic규칙에서 'activated_by'뒤에 오는 값이 일치하면 Activate 규칙에 의해서 Dynamic 규칙이 활성화 됨
    • 'count'는 dynamic 규칙이 활성화 되는 빈도수 지정
    • Activate 규칙과 Dynamic 규칙의 예
      • activate tcp any any -> !$HOME_NET 23(activates :23; msg: "Telnet Access!";)

        dynamic tcp any any -> !$HOME_NET 23(activated_by: 23; count: 20;)

        [tcp 모든 주소의 모든 포트에서 $HOME_NET이 아닌 23번 포트로 들어오는 패킷이 activates가 23이면 메시지를 띄어라. tcp 모든 주소의 모든 포트에서 $HOME_NET이 아닌 23번 포트로 들어오는 패킷 activates 가 23이면 20번 으로 활성화 되는 빈도수를 지정하라]

      • activate tcp ! $HOME_NET any -> $HOME_NET 143 (flags : PA; content : "|E8C0FFFFFF|/bin"; activates: 1; msg: "IMAP buffer overflow!";)

        dynamic tcp !$HOME_NET any -> $HOME_NET 143 (activated_by:1; count: 50)

        [tcp $HOME_NET이 아닌 모든 포트에서 $HOME_NET 의 143포트로 가는 flags 가 PA이고 content가 "|E8C0FFFFFF|/bin"이고 activates가 1이면 msg를 띄어라. tcp $HOME_NET이아닌 모든 포트에서 $HOME_NET의 143번포트로 들어오는 패킷중 activates가 1이면 50번으로 활성화되는 빈도수를 지정]


이름 패스워드
비밀글 (체크하면 글쓴이만 내용을 확인할 수 있습니다.)
왼쪽의 글자를 입력하세요.
   

 



 
사이트명 : 모지리네 | 대표 : 이경현 | 개인커뮤니티 : 랭키닷컴 운영체제(OS) | 경기도 성남시 분당구 | 전자우편 : mojily골뱅이chonnom.com Copyright ⓒ www.chonnom.com www.kyunghyun.net www.mojily.net. All rights reserved.