我的服务器现在正遭受 Apache DDoS 攻击。有大量单个 IP 地址和 30 多个连接。
当我使用这个 SSH 命令时:
netstat -n | grep ':80' | awk -F' ' '{print $5}' | awk -F':' '{print $1}' | sort | uniq -c | sort -n
我得到这个:
30 69.144.146.74
31 190.216.242.195
31 92.20.224.127
34 24.127.224.73
37 197.34.29.122
37 85.225.133.82
38 108.29.62.196
38 86.95.44.115
40 66.62.146.84
40 94.123.91.147
46 24.117.238.91
48 70.112.112.127
48 71.58.158.150
48 75.65.172.192
51 99.127.238.167
52 99.98.74.66
53 107.7.34.66
54 95.238.27.3
我已经将 100 多个 IP 列入黑名单,但在 5 分钟内,所有新 IP 都建立了 50 多个连接。
我现在不知道该怎么办。有没有办法只允许一个 IP 地址一次有一个连接?或者,有没有防火墙可以防止这种情况?我快疯了,这怎么解决?谢谢。
答案1
有硬件/防火墙可以做到这一点。您在 Apache 级别的选项是名为“节流”的功能。以前有一个模块可以实现这一点,但似乎已被删除。
https://stackoverflow.com/questions/7467183/throttling-requests-by-ip-address-on-apache
答案2
这取决于严重程度,但你总是可以尝试使用mod_evasive或者mod_security。这些是软件防火墙,它们各自在受到攻击时采取不同的反应。如果您现在受到攻击,我建议您mod_evasive
立即使用,因为它比 更容易理解,mod_security
并且从一开始就非常易于配置。mod_security
是一个更好的长期解决方案,但您可能需要花费大量时间正确配置它,以免妨碍服务器上的预期行为。
答案3
检查fail2ban并可能检查你的iptables规则。
失败2ban是一款传统的、广泛使用和支持的工具,可解决您的情况和类似情况。它会将攻击您的 IP 列入黑名单,方法是(取决于您的设置方式)向 iptables 添加特殊链并自动填充攻击 IP 地址的丢弃规则。