问题是我的专用盒子被 ddos 攻击了。我想设置 Linux 防火墙,将数据库中列出的 IP 地址列入白名单。
基本上,这个过程应该是 - 用户连接到我们的网站。 IP 地址被记录下来并发送到应用服务器进行白名单处理。
我唯一不知道在 Linux 上该怎么做的是如何实时更新防火墙(我猜是 iptables,我对不同的解决方案不熟悉)来阻止或允许特定的 ips
感谢您的帮助!
答案1
我认为您的情况更好的解决方案是 iptables 和 ipset 的组合。您不需要每次都更改 iptables 规则集,只需运行“ipset add ...”即可允许 IP 地址。
创建 db_allow ip 列表,默认条目 ttl 为 3600 秒。条目 ttl 超时后,ip 地址将被删除。
ipset create db_allow hash:ip counters timeout 3600
在 iptables 规则集中,您还需要两个附加规则。请记住,规则的顺序非常重要。
# pass connections from allowed addresses in db_allow ipset
iptables -A INPUT -p tcp --dport 3306 -m set --match-set db_allow src -j ACCEPT
# block connections from other addresses
iptables -A INPUT -p tcp --dport 3306 -j DROP
在脚本中,要允许某个 IP 地址,只需运行ipset add db_allow <ip> timeout <ttl>
。要从允许列表中删除某个 IP 地址,请运行ipset -! del db_allow <ip>
。运行ipset list db_allow
命令列出允许的 IP 地址。
此外,最好使用 iptables-save / iptables-restore / iptables-apply,而不是从脚本或手动运行 iptables 命令。Ipset 列表不会在重新启动之间存储,因此您需要一个启动脚本来在 iptables 规则集创建/恢复之前创建/恢复它们。