如何配置Fail2Ban将封禁流量重定向至指定IP而非丢弃
如何配置Fail2Ban将封禁流量重定向至指定IP而非丢弃
Hey,你遇到的问题我之前也帮人解决过——REDIRECT确实只能修改目标端口,要把流量重定向到不同IP得用DNAT(目标网络地址转换),这是iptables里专门用来调整目标IP/端口的规则。下面一步步教你修改配置:
1. 调整Fail2Ban的Action配置文件
你当前使用的是iptables-multiport-24.conf(一般存放在/etc/fail2ban/action.d/目录下),需要把原有封禁规则替换为DNAT规则。打开这个文件,修改以下内容:
替换actionstart、actionban、actionstop指令
原来的规则是在filter表操作,而DNAT属于nat表的功能,所以我们要调整到nat表创建专属链并添加规则:
# 初始化nat表的Fail2Ban专属链,把指定端口的流量引到这个链 actionstart = iptables -t nat -N fail2ban-<name> iptables -t nat -I PREROUTING -p <protocol> -m multiport --dports <port> -j fail2ban-<name> # 封禁时添加DNAT规则,将源IP段的流量重定向到你指定的目标IP(替换成实际IP,端口可保留原端口比如SMTP的25) actionban = iptables -t nat -I fail2ban-<name> 1 -s <ip>/24 -j DNAT --to-destination 192.168.1.100:<port> # 停止服务时清理nat表的链和规则 actionstop = iptables -t nat -F fail2ban-<name> iptables -t nat -X fail2ban-<name> iptables -t nat -D PREROUTING -p <protocol> -m multiport --dports <port> -j fail2ban-<name>
注意:把192.168.1.100换成你实际要重定向到的IP地址;如果目标端口和原端口不同,也可以修改<port>为新端口(比如原端口25,目标端口2525就写192.168.1.100:2525)
2. 开启服务器IP转发功能
DNAT规则生效的前提是服务器能转发流量到目标IP,所以需要开启IPv4转发:
# 临时开启(重启服务器后失效) echo 1 > /proc/sys/net/ipv4/ip_forward # 永久开启(编辑sysctl配置文件) echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf sysctl -p
3. 重启Fail2Ban使配置生效
修改完成后,重启Fail2Ban服务加载新配置:
systemctl restart fail2ban
验证规则是否生效
可以用以下命令查看nat表中是否已添加DNAT规则:
iptables -t nat -L fail2ban-SPAMTRAP -n
当有IP被封禁时,你会看到对应源IP段的DNAT规则条目。
备注:内容来源于stack exchange,提问作者BruceLeeRoy
相关产品推荐
相关产品推荐

