Ⅰ. 스노트(Snort) 란 ?
스노트(Snort)는 오픈 소스 기반의 네트워크 기반 침입 탐지 시스템(IDS)입니다. 실시간 트래픽 분석과 IP에서의 패킷 로깅을 수행할 수 있으며, 프로토콜 분석, 내용 검색 그리고 매칭을 수행합니다.
이 툴은 1998 년도에 Matin Roesch(마틴 로시) 가 만들었으며, 2013년 이후 CISCO 에서 소유 중입니다.
이 프로그램은 또한 조사나 공격을 탐지하는데 사용될 수 있다. 이러한 조사나 공격으로는 공용 TCP/IP 스택 핑거프린팅, 공용 게이트웨이 인터페이스, 버퍼 오버플로, 서버 메시지 블록 조사 그리고 스텔스 포트 스캔 등이 있다
Ⅱ. Snort 기능
1) 스니퍼 모드 (Sniffer Mode) : 네트워크 인터페이스의 패킷을 읽고 스니핑하여 보여줍니다.
2) 패킷 로거(Packet Logger) : 수집한 패킷에 대한 Log를 저장합니다.
3) 네트워크 침입 탐지 모드 : 네트워크 트래픽을 사용자에 의해 정의된 규칙에 의해 탐지 되는지 분석합니다.
Ⅲ. 스노트 룰 만들기
스노트의 룰 헤더부분과 룰 옵션으로 구성됩니다.
A. Action : 탐지 후 행동 설정
alert = 경고를 발생시킨다.
log = 로그를 기록한다.
pass = 패킷을 무시한다.
active = alert를 발생시키고 대응하는 dynamic을 유효화 한다.
dynamic = active에 의해 유효화된 경우 한쪽의 패킷을 기록한다.
drop = 패킷을 차단하고 기록한다.
B. Protocal: 탐지 할 프로토콜 종류 설정
TCP = TCP IP 프로토콜 탐지
UDP = UDP IP 프로토콜 탐지
ICMP = ICMP IP 프로토콜 탐지
IP = IP 프로토콜 탐지
C. Source IP & Port / Destinaion IP & Port : 출발지와 목적지의 IP 와 프로토콜 설정
Port 설정방법
[any] = 모든 포트
[포트번호] = 특정 포트
[포트번호] = 포트번호 : 포트번호 ~ 포트번호
:[포트번호] = 포트번호 이하 모든 포트
[포트번호] = 포트번호 이상 모든 포트
ex) [Source IP] [Source Port] 형식으로 씁니다.
ㄱ. 192.168.0.15 443
ㄴ. 192.168.0/24 80
ㄷ. any 443
ㄹ. 192.168.0/24 any
ㅁ. any any
ㅂ. * '$HOME_NET' 와 같이 snort.conf에서 지정한 변수를 참조할 수도 있다.
E. Direction : 방향
-> = 출발지 -> 목적지 패킷 탐지
<> = 출발지 목적지 사이 모든 패킷 탐지
H. 룰 옵션 : 패킷 탐지 사용자 설정
* 세미콜론(;)을 이용하여 옵션과 옵션을 구분
1) 일반옵션 설정
msg : alert 발생 시 이벤트 명
sid : 스노트 룰 ID
99이하 : 시스템 예약 ID
100 ~ 1000000 이하 : snort 자체지정 sid
1000001 이상 : 사용자 정의 sid
rev : 룰 수정횟수 수정 시 숫자가 증가
2) 페이로드 범위 설정
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 : 패킷의 발생량을 기반으로 탐지한다.(대량의 패킷이 들어올 경우, 모두 로그를 남기게 되면 용량을 많이 차지하게 되므로 대량의 패킷을 대응하기 위한 옵션)
ex) tcp any any -> any any (msg:"dinky" content:"dinky" sid:1000001; threshold:type limit, track by_src, count 2 seconds 5; )
1. limit : 임계시간 동안 임계치까지만 이벤트 발생
2. threshold : 임계시간 동안 임계치번째 마다 이벤트 발생
3. both : 임계시간 동안 임계치에 한번 이벤트 발생
4. track : 소스를 기준으로 추적, 목적지를 기준으로 추적
5. count : 임계치(패킷 발생 수)
6. seconds : 임계시간(발생 시간)
Ⅳ. Snort 활용 방안
1) Log4j 탐지
alert tcp any any -> any any (msg:"Log4j"; flow:established,to_server; content:"{jndi:"; nocase; fast_pattern; content:"://")
2) SQL SELECT 문 탐지
alert tcp any any -> any 80 (msg: SQL_Injection"; content:"SELECT"; nocase; content:"HTTP")
'네트워크' 카테고리의 다른 글
ping ( ICMP 를 활용한 호스트 상태확인) (0) | 2023.01.04 |
---|---|
Tracert (구간마다 지나는 게이트웨이 확인) (0) | 2023.01.04 |
DTLS 에 대해 알아보도록 하겠습니다. (0) | 2022.12.28 |
TCP와 UDP의 특징과 차이점 (0) | 2022.12.27 |
프로토콜(Protocol) 에 대해 알아보겠습니다. (0) | 2022.12.25 |