您可以采取一些措施来防止 DOS/DDOS。
首先,我建议使用 autoban 防火墙。我已经使用Fail2Ban一段时间了。我对 SSH、FTP、BIND 等的 DDOS/DOS 攻击的大部分问题都已解决。fail2ban 实际上做的是扫描日志文件,当正则表达式模式匹配 X 次时,它会禁止该人。多做一点工作,您就可以让它读取几乎任何类型的日志文件。
其次,有几个用于 apache 的 mods 可以防止 DDOS/DOS 攻击。其中之一是mod_evasive。我使用了一段时间,但 fail2ban 对我来说效果最好(目前),所以我并没有完全进入 mod_evasive。
另一种可能性是使用 Nginx 作为前端,它将代理转发连接请求到您的 Apache 服务器。然后将 Nginx 的HttpLimitZoneModule
( info ) 设置为所需的数字。这将减少来自单个 IP 的最大传入连接,但不会阻止 DDOS。
最后 - 关闭所有未使用的端口。仅将需要公开的端口保留为端口 21、53、80、443 等。这将限制攻击者可能瞄准的可能性。
编辑:
通过设置一些限制 icmp 的 iptables 规则,确保您不会得到 ping flood。这是一个解释 ping flood 工作原理的链接。试着先看图片,然后文字对你来说会更有意义。
如果您使用的是 iptables,此命令可以帮助您防止 ping/icmp 泛洪:
iptables -A INPUT -p icmp -m limit --limit 6/s --limit-burst 1 -j ACCEPT
iptables -A INPUT -p icmp -j DROP
第一个将限制 icmp 请求每秒最多 6 个请求。之后,此人将不再收到任何回复。这将消除正在执行循环的机器人:
for(i=0; i<1000000; i++){
some evil code that will bring your server down
either by pinging or just connecting to random ports.
};