|
|
|
|
|
- 1. 개요
웹서버를 운영하다 보면, 특정 IP에서 비정상적으로 접속을 과다하게 시도하여 시스템에 부하를 주는 경우가 있다.
이 때 iptables 룰을 이용하면 한 IP에서의 접속량을 제한하고 이후에 접속량이 과다한 해당 IP를 자동 차단하도록 할 수 있다.
2. 명령어 예제 및 설명
iptables -A FORWARD -m recent --name badguy --rcheck --seconds 300 -j DROP
iptables -A FORWARD -p tcp --syn --dport 80 -m connlimit --connlimit-above 30 -m recent --name badguy --set -j DROP
iptables -A FORWARD -p tcp --syn --dport 80 -m connlimit --connlimit-above 30 -j DROP
exit 0;
이렇게 3가지 규칙만 실행하면 되늗데, 단순히 3번째 규칙만 실행하면 한 IP에서의 동시접속이 30회만 허용되고 그 이상 접속을 하지 못한다.
앞의 두 가지 규칙과 함께 사용하면 동시접속이 30회 이상 초과하는 IP를 동적으로 300초(5분)동안 차단할 수 있다.
동시접속 수 제한이나 차단 시간은 적절히 설정하면 된다.
과다접속으로 차단된 IP에 대한 정보는 다음과 같이 실시간으로 확인할 수 있다.
# cat /proc/net/ipt_recent/badguy
src=100.123.65.15 ttl: 63 last_seen: 1174481 oldest_pkt: 2 last_pkts: 1174481, 1174481
|
|
|
|
|