IPTables - 침입차단시스템(IPS) 사용해보기

UBuntu 환경에서 IPTables를 사용해보고, IP기반 또는 포트기반 트래픽을 직접 차단해보자.

추가적으로, 랜덤 소스 IP까지 대응해보는것이 목표!


먼저, 현재 iptables 상태를 확인해보자.

iptables -L -n -v

포트, 프로토콜, 정책 상태, 카운트 등을 확인할 수 있다.

초기에 정책이 모두 ACCEPT 상태라면, 원하는 규칙을 순차적으로 추가해야 함.

또한, 아파치 웹서버를 운영중인 환경이다.


첫 번째로, 80포트 요청에 대해 DROP 해보자.

iptables -A INPUT -p tcp --dport 80 -j DROP

모든 80 요청을 차단함으로써, 실제 닫힌서버처럼 아무 반응이 일어나지 않는다.

sudo iptables -A INPUT -p tcp --dport 80 -s 192.168.0.1 -j DROP

-s 옵션을 추가해줌으로써, 특정 IP에 대한 요청만 차단할 수도 있다.


두 번째로, ICMP 요청에 대해 DROP 해보자.

iptables -A INPUT -p icmp -j DROP

모든 ICMP 요청을 차단함으로써, 아래와 같이 Ping 요청을 보내면 Request timeout for icmp가 뜬다.

 

동일하게, -s 옵션을 통해 특정 IP만 ICMP 요청을 차단할 수 있다.

 


마지막으로, 랜덤 소스의 TCP 요청에 대해 대응을 해보자.

hping3 -S -p 80 --rand-source --interval u100000 172.16.212.132

아래와 같이 0.1초당 한 번의 SYN 패킷을 보낸다고 가정 하였을 때,

iptables -A INPUT -p tcp --syn --dport 80 -m limit --limit 1/second --limit-burst 3 -j ACCEPT
iptables -A INPUT -p tcp --syn --dport 80 -j DROP

다음과 같은 정책을 적용하였다.

버스트(대기 큐로 이해함)는 3으로 설정하여 버스트에 각 요청을 ACCEPT하고,

그 다음부터는 Limit 속도를 적용하여 1초에 1개의 요청만 허용되게끔 설정하였다.

일정 시간동안 요청이 없으면 버스트의 크기만큼 다시 채워지게된다.

원래는 0.1초마다 SYN 요청이 보내지면서 로그가 쌓이게 되는데,

최초 3개 요청은 빠르게 쌓이면서 그 이후 요청은 1초마다 한 개씩 쌓이는걸 확인할 수 있다.

 

다양한 정책을 잘 수립하려면 다양한 환경에서 여러 경험을 해봐야할 것 같다.

'Security > Network' 카테고리의 다른 글

Suricata - 침입탐지시스템(IDS) 사용해보기  (0) 2025.04.30
SQLMAP - DB 침투하기  (0) 2025.02.19
Wi-Fi 해킹 #WEP Key Crack  (0) 2025.02.15