1. Snort 설치

apt update

apt install snort -y

snort --version

 

 

 

 

ip ad 로 ip 확인

 

 

 

cd /etc/snort/

snort.conf에 

모니터링 할 대역,

변수가 들어가있음

 

 

마우스 패드 설치  → rule 편집 용이하게 하기 위해

apt install mousepad -y

 

 

mousepad snort.conf

 

 

 

 

1, 7번이 중요

 

 

 

 

 

새로운 터미널 창 열어서

snort -v -c /etc/snort/rules/local/rules    // -v 자세히 실행, -c 룰 파일 지정

 

 

 

kali 에서 우분투로(내 ip로) ping 날려보기

 

 

 

로그가 저장되는 경로

cd /var/log/snort

 

 

 

 

여기까지가 Snort 환경구축 & 테스트 끝

 

 

 

4. 실습 (Snort 옵션 이해)

Option 4개


 

 

alert tcp any any -> 192.168. 내 ip any (msg:"file1"; file_data;content:"SIG";depth:8;sid:10000002;)   -> 8 바이트 이내에 SIG가 있나

alert tcp any any -> 192.168. 내 ip any (msg:"file2"; file_data;content:"SIG";depth:24;sid:10000003;)  -> 24 바이트 이내에 SIG가 있나

 

 

 

 

칼리에서 

python3 -m http.server 8080

 

 

 

 

 

Option 4개

 

룰 작성 > 파일 다운로드 > 탐지확인, 스노트 종료 > 로그확인 > 파일 내용 확인    반복

 

 

 

 

alert tcp any any -> 192.168.147.129 any

(msg:"file7";file_data;content:"SIG";depth:24;content:"SIG2";within:4;content:"SIG3";distance:9;byte_test:4,>,5,12,relative,little;sid:10000004;)

 

 

alert : 경고, 탐지, 설정

->: 클라이언트 > 서버로

any any -> any any: 모든 출발지로부터 모든 목적지

msg: "test"로 기록

file_data: binary로 분석, 정확도 올리기 위해

depth: 지정한 값 안에 탐지할 문자열 (좌측 방향 content)이 있어야 함

within: 첫 번째 조건식을 만족한 위치(depth)로부터 지정값 이내(4)에 탐지할 문자열(test3)이 있어야 함

distance: 첫 번째, 두 번째 조건식을 만족하면서 마지막 조건식으로부터 지정한 값만큼 건너뛰어 지정한 바이트 내(within, 4) 탐지할 문자열 존재(test3)

byte_test: 앞 조건식을 모두 만족(distance)하면서, 마지막 조건식으로부터 지정한 바이트(12)만큼 건너뛰고, 지정한 바이트 범위(4)의 값과 비교 연산(> 지정한 바이트가 더 커야함, 5보다 커야함), 리틀은 수치를 리틀엔디언으로 읽어오겠다란 의미

 

이 4가지 옵션이 Snort에 있어, 오용탐지를 위한 옵션이 됨

 

flow: to_server, estableshed: 연결이 명확하게 되었다 탐지를 위해 사용

 

content는 문자열 뿐만아니라 16진수도 가능

content:"123"  >> content:"|31 32 33|"

대소문자: nocase  옵션만 넣어주면 됨, 16진수 형태로 탐지하지 않는 한 일반적으로 사용 권장

pcre 정규표현식 사용이 가능

 

비정상행위 탐지

알려지지 않은 행동 탐지

횟수 기반의 접근 공격을 탐지 시 

 

 

alert any any -> 192.168.147.129 (msg:"SYN Flood Attack1";flags:S; threshold:type threshold,track by_src, count 10, seconds1;sid:100000013;)

flags: 플래그 값 기반으로 탐지 S는 SYN을 의미   >> TCP 3 Way에서 기반

threshold: type threshold(대량의 패킷 발생), track by_src(동일한 출발지 기준), count(횟수), seconds(초)

  >> 1초에 10번 동일한 출발지에서 발생하는 대량의 패킷이 발생하면 탐지하겠다.

 

DDOS를 생각해 

 

 

alert any any -> 192.168.147.129 (msg:"SYN Flood Attack1";flags:S; threshold:type threshold,track by_dst, count 10, seconds1;sid:100000013;)

  >> 1초에 10번 동일한 목적지로 향하는 대량의 SYN 패킷이 발생하면 탐지

 

 

 

 


 

 

마우스 패드에서 뭐 추가함 (뭔지 모름)

 

칼리에서

hping3 -c 20 192.168.135.168 -S --flood

 

 

고민해야하는 상황

오용탐지와 비정상행위 탐지 중 어느게 더 작성이 어려울까?

오용탐지가 더 쉬움 (정규표현식 이용)

비정상 >> 어디까지 카운팅을 허용할거냐에 대한 명확한 임계치가 없음

>> 서버 리소스를 감안해서 타협이 필요

 

 

snort 추가 실습

security onion 설치

splunk 설치 및 로그 수집

 

 

 

'보안 > 보안 관제' 카테고리의 다른 글

SoC  (0) 2024.12.12
aws 로그 수집 구축  (0) 2024.12.12
Snort Rule 구조  (0) 2024.12.11
mod security  (1) 2024.12.11
실습 - 환경세팅  (2) 2024.12.07

+ Recent posts