netstat 및 iptables를 사용하여 공격을 막는 Linux 명령


11

ddos 공격을 방지하기 위해 IP 당 200 개 이상의 요청을 삭제하고 싶습니다. 이것은 ip 당 요청 수를 감지하는 데 사용한 명령입니다.

netstat -alpn | grep :80 | awk '{print $5}' |awk -F: '{print $(NF-1)}' |sort | uniq -c | sort -nr

이제 IP 테이블에 200 개 이상의 요청을 만든 모든 IP 주소를 DROP 입력 및 출력에 추가하고 싶습니다.


@dawud가 언급했듯이 "완화"만 할 수 있으며 서버에 대한 DDOS 공격을 완전히 막을 수는 없습니다.
kaptan

답변:


12

iptables를 사용하여 들어오는 연결 속도를 제한 할 수도 있습니다. 예를 들어 소스에서 분당 200 개 이상의 연결을 원하지 않는 경우 :

iptables -I INPUT -p tcp --dport 80 -m state --state NEW -m recent --set

iptables -I INPUT -p tcp --dport 80 -m state --state NEW -m recent --update --seconds 60 --hitcount 200 -j DROP


1
이것에 대해서도 설명하는 것이 좋을 것입니다.
ffledgling

18

을 만들 수 있습니다 ipset. 이렇게하면 iptables규칙 세트 를 수정하지 않고도 필요한만큼 세트에 IP를 추가 할 수 있습니다 .

ipset -N myset iphash
ipset -A myset 1.1.1.1
ipset -A myset 2.2.2.2

또는 귀하의 경우 스크립트 출력을 사용하여 다음과 같이 읽으십시오.

while read a; do ipset -A myset "$a"; done < <(your script here)

그리고 iptables규칙 에서 참조하십시오 .

iptables -A INPUT -m set --set myset src -j DROP

자세한 내용과 옵션 은 맨 페이지 를 참조하십시오.

직접 사용하여 DDOS 공격 을 완화 하는 다른 방법도 iptables있습니다. 및 모듈 iptables에 대한 맨 페이지 섹션을 읽으십시오 .connlimitrecent


ipsets가 해시 테이블과 같은 대안보다 훨씬 빠르기 때문에 이것은 훌륭합니다.
isuldor
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.