설치성공기
HOME > 커뮤니티 > 설치성공기

[프로그램] 한 IP당 동시 접속량 제한과 자동차단

 글쓴이 : winxcom
작성일 : 12-01-14 16:41    조회 : 6,234  
  • 한 IP당 동시 접속량 제한과 자동차단

많은 IP에서 비정상적인 다량의 접속을 시도하므로 한 IP에서의 접속량을 제한하고, 이후에 접속량이 과다한 해당 IP를 자동차단하도록 할 수 있다.

# 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

이렇게 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


  • 국가별 차단(한국만 접속 가능)

좀비들은 국가에 관계없이 특정 바이러스에 감염된 PC나 서버를 이용하므로 공격 시 해외에서의 접속이 많을 수 있다. 정상적인 경우 대부분 국내에서의 접속이 대부분이므로 공격을 당할 경우 해외에서의 접속을 차단한다면 일정 정도의 효과를 기대할 수 있다.

# iptables -A FORWARD -p tcp --dport 80 -m geoip ! --src-cc KR -j DROP
< geoip 설치>
이 규칙은 접속국가가 KR, 즉 한국이 아닌 것은 차단하겠다는 의미이다. 만약 “-p tcp --dport 80”을 삭제하면 웹 뿐만 아니라 모든 해외에서의 접속을 차단하게 된다.

  • 문자열 차단 (도메인이 아닌 IP 등으로 직접 접속시)

일부 공격의 경우 공격의 효과를 높이기 위해 도메인이 아닌 IP로 접속하는 경우가 있다. 정상적인 경우 도메인으로 접속하므로 IP로 접속하는 시도를 차단할 경우 일정 정도 효과를 기대할 수 있다. 다음은 http 접속시 http://1.1.1.1/과 같이 공격하는 것을 차단할 수 있다.

# iptables -A FORWARD -p tcp -m string --string "Host: 1.1.1.1" --algo kmp -j DROP


이 글을 트위터로 보내기 이 글을 페이스북으로 보내기