침탐 스터디 9주차
iptables
룰이 정형화되어 있음 (= 룰 학습 쉬움)
- but 오탐과 미탐은 발생할 수 밖에 없음
*공격 데이터 확보 대신 정상적인 데이터를 학습시키는 방향으로.
iptables 실습

명령어: $ iptables --append INPUT --source [Kali IP] --protocol icmp --icmp-type echo-request --j LOG
$ iptables --append INPUT --source [Kali IP] --protocol icmp --icmp-type echo-request --j DROP

Drop으로 하니 응답 메세지가 아예 출력되지 않는다
- 마찬가지로 wireshark 확인 시 response 없음
* reject: 거절의 의미로 대응(응답)함<-> drop: 아예 응답이 없음

아까 칼리의 ip만 막았기 때문에 cmd에서는 ping이 정상적으로 간다.
-> 공격자의 ip위조에 취약

명령어
$ iptables --append INPUT --protocol icmp --icmp-type echo-request -m length --length 1024: -j LOG
$ iptables --append INPUT --protocol icmp --icmp-type echo-request -j LOG
$ iptables --append INPUT --protocol icmp --icmp-type echo-request -m length --length 1024: -j REJECT
$ iptables --append INPUT --protocol icmp --icmp-type echo-request -j ACCEPT
길이가 1024 이상인 것들은 차단하고 1024 이하인 것들은 통과시킴
sudo 말고 root로 접근해야하는데 root 비번이 뭔지 모르겠어서 실습 중단됨.
강의자료 기반 흐름을 간단히 정리해보자면 이후
iptable 차단 실시간 로그 실행
$ cat /dev/null > /var/log/kern.log
$ tail -f /var/log/kern.log
kali 공격 실행
1) 1024 이하 길이: $ sudo hping3 192.168.100.20 --icmp -d 995 -c 1
1024 바이트가 넘지 않아 IPS 로그 1번 기록된다 (28 headers + 995 Data = 1023 bytes)
2) 1024 이상 길이: $ sudo hping3 192.168.100.20 --icmp -d 996 -c 1
위 명령어의 ICMP 크기는 1024 바이트이므로 IPS 로그에 2번 기록 (28 headers + 996 Data = 1024 bytes)
iptables 실습 (응용 실습)

ip가 노출되어 포트 스캔될시 어떠한 서비스가 현재 제공되고 있는지/ 취약점에 대한 공격가능성 확인 가능

SYN 플래그 거부. 로그를 기록하고 클라이언트에서 서버로 오는 SYN을 차단해준다.
명령어
iptables --append INPUT --protocol icmp --icmp-type echo-request -j LOG
$ iptables --append INPUT --protocol tcp --tcp-flag ALL SYN -j LOG
$ iptables --append INPUT --protocol tcp --tcp-flag ALL SYN -j REJECT
$ iptables --append INPUT --protocol icmp --icmp-type echo-request -j REJECT

kali에서 nmap을 실행했을 때 전과 달리 접속이 안되는 것을 확인가능

스텔스 기능으로 접속시도하면 실행'은' 된다.
--> 다른 플래그를 사용해보자!

sN, sF, sX 사용시 결과가 나옴

flush 후 위 세개 플래그를 차단해주는 룰을 작성한다.
명령어
$iptables --flush
$ iptables --append INPUT --protocol tcp --tcp-flag ALL FIN -j REJECT
$ iptables --append INPUT --protocol tcp --tcp-flag ALL URG,PSH,FIN -j REJECT
$ iptables --append INPUT --protocol tcp --tcp-flag ALL NONE -j REJECT

이후 다시 namp을 해보니 이전과 다른 결과가 나오는 걸 볼 수 있다.