snort rule body 설정 : 일반 옵션
msg | alert 발생 시 이벤트 이름으로 사용됨 |
reference | 룰과 관련된 외부 취약점 정보 |
sid | snort rule id로 사용 범위는 아래와 같음 99이하 : 시스템 예약 sid 100~1,000,000 : snort에서 배포하는 룰셋 sid 1,000,001 이상 : 사용자 정의 룰에서 사용하는 sid |
classtype | 공격유형과 기본 우선순위 정의 |
priority | 룰 우선순위(숫자) |
rev | rule 버전번호로 수정(revision) 횟수 표기 |
snort rule body 설정 : 범위 옵션
content | 페이로드에서 검사할 문자열을 text, binary 형식으로 지정 1) text 형식 : content:"pattertn" -> 해당 패턴 문자열 검사 2) binary 형식 : content:"|FF FF|" -> 파이프 기호 사이에 헥사값으로 표현 3) !(부정연산자) 사용 : content:!"pattertn" -> 해당 패턴 문자열이 없는지 검사 4) ; \ " 이 3가지 특수문자는 이스케이프 처리해서 사용(ex. \;) |
urlcontent | content 문자열을 전체 패킷과 비교하는 대신 HTTP 클라이언트 요청 URL 정보를 검사할 문자열 지정 |
offset | 페이로드에서 content 패턴을 검사할 시작위치 페이로드의 첫번째 바이트 위치가 0부터 시작 |
depth | offset부터 몇 바이트까지 검사할 것인지 지정 |
distance | 이전 content 패턴에 매치된 경우, 매치된 이후 바이트부터 몇 바이트 떨어진 위치에서 다음 content를 검사할 것인지 지정 |
within | 이전 content 패턴에 매치된 경우, distance부터 몇 바이트 범위 내에서 다음 content를 검사할 것인지를 지정 |
nocase | 페이로드 검사 시 대소문자 구분 안함 |
snort rule body 설정 : 옵션 예
content 옵션의 text 데이터 설정 | alert tcp $EXTERNAL_NET any -> $HOME_NET any (msg: "[TEST20] content_text"; content:"/etc/passwd"; nocase; sid:1000020;) |
content 옵션의 binary 데이터 설정 | alert tcp $EXTERNAL_NET any -> $HOME_NET any (msg: "[TEST21] content_binary"; content:"|2f 65 74 63 2f|"; nocase; sid:1000021;) |
content 옵션의 text & binary 데이터 설정 | alert tcp $EXTERNAL_NET any -> $HOME_NET any (msg: "[TEST22] content_text+binary"; content:"|2f 65 74 63 2f|passwd"; nocase; sid:1000022;) |
offset 옵션 스노트 룰에 매치되는 테스트 문자열 0 1 2 3 4 5 6 7 8 9 A B C D E F |
alert tcp $EXTERNAL_NET any -> $HOME_NET any (msg: "[TEST23] offset"; content:"234"; offset:2; nocase; sid:1000023;) --> 3번째 바이트부터 234 문자열 패턴 있는지 검사 |
depth 옵션 스노트 룰에 매치되는 테스트 문자열 0 1 2 3 4 5 6 7 8 9 A B C D E F |
alert tcp $EXTERNAL_NET any -> $HOME_NET any (msg: "[TEST24] depth"; content:"234"; offset:2; depth:3; nocase; sid:1000024) --> 3번째 바이트부터 3바이트 범위 내에 234 문자열 패턴이 있는지 검사 |
distance 옵션 스노트 룰에 매치되는 테스트 문자열 0 1 2 3 4 5 6 7 8 9 A B C D E F |
alert tcp $EXTERNAL_NET any -> $HOME_NET any (msg: "[TEST25] distance"; content:"234"; offset:2; depth:3; content:"BCD"; distance:6; nocase; sid:1000025;) --> 이전 content 패턴이 매치된 이후 바이트부터 6바이트 떨어진 위치에서 BCD 문자열 패턴이 있는지 검사 |
within 옵션 스노트 룰에 매치되는 테스트 문자열 0 1 2 3 4 5 6 7 8 9 A B C D E F |
alert tcp $EXTERNAL_NET any -> $HOME_NET any (msg: "[TEST26] within"; content:"234"; offset:2; depth:3; content:"BCD"; distance:6; within:3; nocase; sid:1000026;) --> 이전 content 패턴이 매치된 이후 바이트부터 6바이트 떨어진 위치에서 3바이트 범위 내에 BCD 문자열 패턴이 있는지 검사 |
snort rule body 설정 : Event Threshold(이벤트 제한) 관련 옵션
- 특정 시간동안 발생되는 이벤트 수를 제한하기 위한 옵션
- 형식 : threshold type <limit|threshold|both>, track <by_src|by_dst>, count <c>, seconds <s>
type
limit | 매 s초동안 c번째 이벤트"까지" 액션 수행 | threshold type limit, track by_src, count 2, seconds 10 --> 출발지 IP 기준으로 매 10초 동안 2번째 이벤트까지 액션 수행 |
threshold | 매 s초동안 c번째 이벤트"마다" action 수행 | threshold type threshold, track by_src, count 2, seconds 10 --> 출발지 IP 기준으로 매 10초 동안 2번째 이벤트마다 액션 수행 |
both | s초동안 c번째 이벤트 "발생 시 1번" action 수행 | threshold type both, track by_src, count 10, seconds 1 --> 출발지 IP 기준으로 매 1초 동안 10번째 이벤트 시 한번 액션 수행 즉 1초동안 10번 이상 이벤트 발생하면 액션을 한번 수행 |
track
by_src | 출발지 IP 기준으로 추적 |
by_dst | 목적지 IP 기준으로 추적 |
※ 연관 지식 : remybaek.tistory.com/111
※ 참고 : 알기사 정보보안기사 실기 교재
'정보보안기사&CISSP관련 > 보안장비 운영' 카테고리의 다른 글
[Day 107] iptables (1) (0) | 2020.11.25 |
---|---|
[Day 106] snort rule(5) - Flooding 계열 공격 탐지 (0) | 2020.11.24 |
[Day 105] snort rule(4) - 비정상 패킷 탐지 (0) | 2020.11.23 |
[Day 104] snort rule(3) - 공격 탐지 (0) | 2020.11.22 |
[Day 102] snort rule(1) - header 설정 (0) | 2020.11.20 |