학원

2023/08/10 Snort

맹진호 2023. 8. 10. 17:17

 


어제 세팅한 토폴로지를 생각하고

 

 

 

 

미러링을 할 수 있게 세팅을 해야하기 때문에
스위치에서 라우터로 나가는 건 f1/0이고 클라이언트엔 스위치에 모니터링을 설정한 것
클라이언트랑 연결되어 있는건 f1/1이다. 모니터링을 진행할 IDS에 연결하는 건 f1/6으로 설정했다. 그 에따라 스위치 세팅을 이런식으로 진행 했다.

 

 

Security onion에서 root권한으로 클라이언트가 외부통신을 할 때 통신 하는 것을 와이어샤크로 모니터링함

 

 

Security onion에서 바탕화면에 Setup에서 각 이메일과 비밀번호를 설정해주었다.
이메일은 mjhhss1234@naver.com으로 해주고 user는 mjh로 해주고 PW는 qwe123으로 설정함
설치가 다 된다면 다 되었다고 이런 화면이 뜸


새로운 터미널창을 열어서 관리자모드로 들어온다.
vim을 사용해서 etc에 보면 nsm에 들어가 rules에 local.rules로 들어온다. 

 



 

Snort의 구조


 

 

 

Snort의 옵션

[액션(alert)] [프로토콜(icmp)] [IP대역(10.10.10.0/24)] [포트(any)] [방향(->)] [10번포트에서 어떤 포트로 보내던간에 (any any)] [옵션(itype:8; msg:"ICMP echo request!!"; sid:100001;)]

alert icmp 10.10.10.0/24 any -> any any (itype:8; msg:"ICMP echo request!!"; sid:100001;)
옵션간 구분은 ;으로 한다.

 

 

이렇게 저장해주고 시스템 재 시작후 패킷이 탐지가 되는지 확인하면 된다.
nsm --sensor --restart --only-snort-alert로 서비스가 재시작할 수 있음

 

 

바탕화면에 Squil에 들어가서 아까 입력했주었던 로그인을 해주고 내가 사용하는 eth1 채널로 들어가주면 Client에서 외부 핑 통신 하는 것을 확인할 수 있다. 오른쪽 아래에 Show Packet Data와 Show Rule을 통해서 확인도 할 수 있음




[ 실습1 ] nmap port scannig 탐지(syn, fin, null, xmass, udp)

nmap -sS 10.10.10.?

alert tcp any any -> 10.10.10.0/24 any (flags:S; msg:"TCP SYN scanning"; sid:1000001;)
이렇게 룰을 해주면 BT가 스캐닝을 했을 때 탐지할 수 있다.
syn을 탐지하기 위해서 flags에 S를 넣어주었음 fin은 F라고 넣어주고 null은 !AFPSUR라고 씀 xmass같은 경우는 UPF로 쓰고 udp는 udp로 사용한다.



[ 실습2 ] 내부에서 외부로 나가는 UDP, http 트래픽 탐지

외부와 내부를 따로따로 설정하면 된다.
alert udp 10.10.10.0/24 any -> !10.10.10.0/24 any (msg:""; sid 1000003;)
alert tcp 10.10.10.0/24 any -> !10.10.10.0/24 80 (msg:""; sid 1000005;)


[ 실습3 ] 외부에서 내부 telnet 서버로 접근하려는 트래픽 탐지 및 차단
resp:rest_snd
react:block

외부에서 내부에 telnet서버가 있는데 이런서버가 있다면 탐지해 이런 소리다.
alert tcp !10.10.10.0/24 any -> 10.10.10.30/24 23 (msg:""; resp:rest_snd; sid:1000007;)


[ 실습4 ] 내부에서 외부로 나가는 DNS 트래픽 중에 google이 포함된 트래픽 탐지(대소문자 구분하지 않고 탐지)

alert udp 10.10.10.0/24 any -> !10.10.10.0/24 53 (msg:"" content:"google"; nocase; sid:1000009;)


[ 실습5 ] 내부에 있는 웹 서버의 관리자 페이지로 내부가 아닌 외부 비인가자의 접근 시도 탐지 및 차단

alert tcp 10.10.10.0/24 any -> 10.10.10.20 80 (msg:""; content:"admin.html"; http_uri; react:block; sid:1000011;)


여기 있는 실습 내용들은 이벤트가 뜨고 있을 때 모니터링으로 rule에 설정해주고 모니터링이 되는지 확인한다.
모니터링을 하게된다면 핑통신이 안되는거처럼 보이게 되는데 딱히 상관은 없다고 함.

실습에 있는 차단하는 실습은 차단하는 옵션을 사용하더라도 그 길목에 있지않기 때문에 블락하는 기능은 되지 않는다.