我运营着多个流量很大的网站,并且遭受着用户的辱骂。
我想给他们设置防火墙,并指示他们apache
发送port 8080
类似这样的消息
您已被屏蔽,请联系blabla
这可能吗iptables
?
答案1
如果只有几个 IP 地址,手动更新 iptables 就可以了。
如果有很多,请查看失败禁止例如,通过解析 Apache 日志文件的 Python 脚本来自动更新防火墙。
答案2
当然。
/sbin/iptables -t nat -A PREROUTING -p tcp --dport 80 -s w.x.y.z -j DNAT --to-destination a.b.c.d:8080
其中w.x.y.z
是敌对地址,a.b.c.d
是您自己的地址。
答案3
cjc 为您提供了fail2ban
一个非常棒的工具。
你没有指定什么是“高流量”,以及你的 Web 服务器是否占用大量 CPU。如果你有一些 CPU 周期需要消耗,mod_security也非常适合拦截不受欢迎的访客。它可以立即阻止已知的黑名单 IP 地址,还可以阻止包含一些恶意内容的请求。
mod_security 包含大量现成的规则集,您可以从网上下载更多规则集和/或创建自己的规则。将其视为 HTTP 流量的 SpamAssassin。
根据您的需要,mod_security 可能对您来说有点过头了,但可能是fail2ban
一个更好的解决方案。查看 mod_security 并自行决定。
答案4
正如其他人所建议的,您可以使用 fail2ban、mod_security、mod_evasive,甚至将它们重定向到另一台主机(最后一种方式毫无意义,因为您会浪费资源)。
我的方法有点不同 - 我通常会限制 IP 每秒可以与特定端口建立的最大连接数。例如,我将每个 IP 每秒的连接数设置为大约 20-30 个:
iptables -p tcp --dport 80 -m connlimit --connlimit-above 20 -j DROP
因此,如果有人对您的服务器进行攻击,这将有助于阻止它。我还建议使用 fail2ban,因为它是您能找到的最好的工具。它可以解析您向其发送的几乎所有类型的日志,并且您可以自定义 fail2ban 将对滥用者执行的操作。
PS您还可以查看我对类似 DoS/DDoS 问题的回答这里这或许能对你有帮助。