2023. 12. 27. 23:24ㆍInformation Security 정보보안/System Security 시스템 보안
배울 내용:
Syn Flooding Attack
hping3 리눅스 명령어
snort 탐지
리눅스 bind 설치
네트워크 기반 침입 탐지 시스템
NIDS
리눅스 탐지하는방법
snort SYN Flooding 탐지
스노트 UDP 탐지
snort UDP 탐지
제가 지금 부터 작성하는 모든글은 제가 공부기록용이기 때문에 정확하지 않을수 있음을 알려드립니다.
틀린게 있으면 댓글로 써주시면 고치겠습니다.
지난 시간에 이어 조금 더 진행할거다
왜냐면 snort는 중요하니깐 !
그리고 지난번부터 누누히 말하지만
vi /etc/snort/rules/local.rules
여기서 syn 탐지만 켜놓고
hping S 으로 공격해도,
홈페이지 연결해도 ,
nmap 해도,
이렇게
syn scan탐지해도, 인터넷 사용해도 올라옴
그래서 threshold나 옵션설정을 잘해서 구분해줘야함
탐지해내는건 어렵진않음 그러나 탐별은 어려움
정상적인 웹사용과 SYN Scan , Syn Flooding Attack
구분 탐지 규직
vi /etc/snort/rules/local.rules
다시여기가서 기존 SYN scan 주석처리하고
alert icmp any any -> $HOME_NET any (msg:"SYN Flooding-Threshold"; flow: stateless;
flags : S ; threshold : type both, track by_dst , count 100, seconds 2; ,sid:1000011; rev:1;)
이것만 저장한다
이건 하나의 ip로 2초에 100개 오면 탐지하게 설정한것.
이러면 홈페이지 접속은 탐지 x , 그러나 NMAP 이 탐지가 됨
그래서 2초에 5000개 했을때 다시했을땐 탐지가 안됨
이때는 점점 줄여서 임계값을 확인해봐야함
그래야지 SYN Flooding 만 탐지 할수있게 설정할수있기떄문이다.
탐지 시작해놓고
snort -i ens33 -A console -c /etc/snort/snort.conf
그리곤 kali에서
hping3 --rand-source 192.168.10.101 -S -p 80 --flood
flooding 공격을 시도해본다
그러면 탐지가 될 것이고 이걸
임계값을 찾아서 하나하나 적절하게 설정해야한다. !
그렇게해서 나중에 1초에
#SYN Flooding (threshold)
alert tcp any any -> $HOME_NET any (msg:"SYN Flooding-Threshold"; flow:stateless; flags: S;threshold:type both , track by_dst , count 1100, seconds 1; sid:1000011; rev:1;)
이렇게 설정해버림
SYN Scan 은 이렇게 설정한다
alert tcp any any -> $HOME_NET any (msg:"SYN Scan"; flow:stateless; flags: S;threshold:type both , track by_src , count 1500, seconds 1; sid:1000011; rev:1;)
이렇게 하면 NMAP을 src 로 바꾸니 scan은 못찾아낸다
원래는 SYN , SYN flooding 까지 됬던걸 synflooding 만 찾아내게 바꿀수있다
그러나 nmap을 하면 탐지할수있게 임계값을 낮춤 count 100 으로 하면
nmap을 햇을떄 syn scan은 탐지 되지만 flooding은 탐지가 안되게 할수있다
그렇게 임계값 테스트 계쏙해서 적당한 임계값을 확인할수있다.
아까 내가 처음에 말했던 내용이다
그렇게 나중에 임계값 3가지를 정확하게 탐지하는걸 설정해라고 하면
[(1) 일반 Ping 과 ICMP Flooding을 구분 탐지]
해볼수 있지않을까 ?
먼저 설정한뒤에 아래에 내려가자 , 직접해보는것만큼 좋은게 없다
ICMP Flooding (threshold)
#alert icmp any any -> $HOME_NET any (msg:"ICMP Flooding-Threshold"; threshold:type threshold, track by_dst, count 50, seconds 30; sid:1000010; rev:1;)
이러면 핑이 탐지가 안됨
30초안에 50개가 날라와야하는데 그정돈안되니 탐지 X
그러나 ping -f 192.168.10.101 flooding 하면 당연히 탐지가 됨
이렇게 공격이 오면
hping3 --rand-source 192.168.10.101 --icmp --flood
더심하게 나오는걸 볼수있다
50개이상 들어오면 정상적으로 안본다는거니깐 공격으로 탐지
이러면 임계값을 제대로 설정했다고 볼수있다.
이번엔
UDP 를 탐지해보자!
yum -y install bind*
systemctl restart named
설치후에
vi /etc/named.conf
여기를 들어가서
options {
listen-on port 53 { 127.0.0.1; };
listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
recursing-file "/var/named/data/named.recursing";
secroots-file "/var/named/data/named.secroots";
allow-query { localhost; };
options {
listen-on port 53 { any; };
allow-query { any; };
로 수정
그러면 kali 에서 nmap 19.168.10.101 하면 53번 포트가 열린걸 볼수있다
vi /etc/snort/snort.conf 에 아래 추가한뒤
#UDP Flooding (threshold)
alert udp any any -> $HOME_NET any (msg:"UDP Flooding-Threshold"; threshold:type threshold, track by_dst, count 50, seconds 1; sid:1000012; rev:1;)
snort -i ens33 -A console -c /etc/snort/snort.conf
로 탐지 시작
kali에서
hping3 -a 1.2.3.4 192.168.10.101 --udp --flood
이렇게하면 탐지됨
그러나 google.com 검색해도 탐지가 됨
이걸 탐지 안하려면 당연히
임계값을 수정한다
해보니 500으로 수정하면 DNS를 탐지안헀다.
그럼 20000