如何保护服务器免受简单的DoS攻击

请注意我问如何保护服务器免受DDoS攻击 。 我的意思是,如果有人在他的VPS上运行siege -c 1000 www.example.com 。 这将导致我的服务器服务数千个请求,并放缓。 如果我运行围攻目标来说,共享主机,我没有看到在我的机器上的响应(从60毫秒到2000毫秒/请求)的极端下降。 我不希望能够减轻大的DDoS,但我想从第一个脚本小子发现围攻是安全的:)另一方面,我很好,事实上,当大量的stream量来自合法来源,回应可能会比较慢。

您可以使用防火墙来限制并发连接的数量和来自networking的新连接的速率(例如,对于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-srcmask更改为第二个64 )。

您还可以限制HTTP请求的速率,例如使用nginx的limit_req模块 。

除了一些基本的防火墙外,我们依靠haproxy来完成繁重的TCP提升。 我们已经发现它围绕一个开箱即用的Apache HTTPd实例运行,只要任何种类的slowdos攻击。

 -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 

但基本上,你需要阻止攻击,修复漏洞,或者两者兼而有之。

fail2ban是devise来处理这种情况的众多工具之一。 fail2ban为我停止了对ssh的powershell攻击。 我假设你的服务器是一个Linux。