단순 DoS 공격으로부터 서버를 보호하는 방법

단순 DoS 공격으로부터 서버를 보호하는 방법

참고해주세요 저는아니다서버를 보호하는 방법을 묻습니다.DDoS. 내 말은 누군가가 siege -c 1000 www.example.com자신의 VPS를 실행하는 경우라는 것입니다. 그러면 내 서버가 수천 건의 요청을 처리하고 속도가 느려지게 됩니다. 공유 호스팅을 목표로 포위 공격을 실행하면 내 컴퓨터에서 응답성이 크게 떨어지는 것을 볼 수 없습니다(60ms에서 2000ms/요청). 나는 큰 DDoS를 완화할 수 있을 것이라고 기대하지는 않지만 포위 공격을 발견하는 첫 번째 스크립트 키디로부터 안전하고 싶습니다 :) 반면에 많은 양의 트래픽이 합법적인 소스의 경우 응답이 느려질 수 있습니다.

답변1

방화벽을 사용하여 동시 연결 수와 네트워크에서 들어오는 새 연결 속도를 제한할 수 있습니다(예: IPv4의 경우 /32, IPv6의 경우 /64). 다음을 사용하는 모습의 예 iptables:

# Limit number of concurrent connections
-A INPUT -i eth0 -p tcp --syn -m connlimit --connlimit-above 50 -j DROP
# Limit rate of new connections
-A INPUT -i eth0 -p tcp --syn -m hashlimit --hashlimit-name tcp --hashlimit-mode srcip --hashlimit-above 3/sec --hashlimit-burst 7 --hashlimit-srcmask 32 -j DROP

( 첫 번째에 ip6tables추가 하고 두 번째에 로 변경하는 것을 제외 하면 동일합니다 .)--connlimit-mask 64--hashlimit-srcmask64

예를 들어 다음과 같이 HTTP 요청 속도를 제한할 수도 있습니다.nginx의limit_req 모듈.

답변2

일부 기본 방화벽 외에도 haproxy를 사용하여 무거운 TCP 리프팅을 수행합니다. 우리는 모든 종류의 SlowDos 공격이 진행되는 한 즉시 사용 가능한 Apache HTTPd 인스턴스를 중심으로 순환하는 것을 발견했습니다.

-A INPUT -p tcp -m tcp -m state --state RELATED,ESTABLISHED -j ACCEPT

-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j SYNFLOOD

-A INPUT -p tcp -m tcp --dport 80 -m state --state NEW -j HTTPDGUARD
-A INPUT -p tcp -m tcp --dport 443 -m state --state NEW -j HTTPDGUARD

-A HTTPDGUARD -m connlimit --connlimit-above 25 --connlimit-mask 32 -j HTTPDENY
-A HTTPDENY -j LOG --log-prefix "HTTP Flood: "
-A HTTPDENY -p tcp -m tcp -j REJECT --reject-with tcp-reset

-A SYNFLOOD -m state --state NEW -m recent --set --name SYNRATE --rsource
-A SYNFLOOD ! -s 150.156.24.0/24 -m state --state NEW -m recent --update \
   --seconds 5 --hitcount 200 --name SYNRATE --rsource -j DROP

-A INPUT -p tcp -m tcp --dport 80 -m state --state NEW -j ACCEPT
-A INPUT -p tcp -m tcp --dport 443 -m state --state NEW -j ACCEPT

그러나 기본적으로 공격을 차단하거나 취약점을 수정하거나 둘 중 하나를 수행해야 합니다.

답변3

실패2금지이러한 상황을 처리하도록 설계된 많은 도구 중 하나입니다. Fail2ban은 SSH에 대한 몇 가지 무차별 대입 공격을 막는 데 도움이 되었습니다. 귀하의 서버가 Linux라고 가정합니다.

관련 정보