我想创建一个 fail2ban 操作,将流量路由到另一个 IP 禁止操作,并删除取消禁止操作的路由。
文件:/etc/fail2ban/action.d/ 中的 iptables-route.conf
# Fail2Ban configuration file
#
#
[INCLUDES]
before = iptables-common.conf
[Definition]
# Option: actionstart
# Notes.: command executed once at the start of Fail2Ban.
# Values: CMD
#
actionstart = <iptables> -N f2b-<name>
<iptables> -A f2b-<name> -j <returntype>
<iptables> -I <chain> -p <protocol> -m multiport --dports <port> -j f2b-<name>
<iptables> -A FORWARD -i ens3 -p tcp -m state --state NEW --dport 80 -j ACCEPT
<iptables> -A FORWARD -i ens3 -p tcp -m state --state NEW --dport 443 -j ACCEPT
# Option: actionstop
# Notes.: command executed once at the end of Fail2Ban
# Values: CMD
#
actionstop = <iptables> -D <chain> -p <protocol> -m multiport --dports <port> -j f2b-<name>
<actionflush>
<iptables> -X f2b-<name>
<iptables> -D FORWARD -i ens3 -p tcp -m state --state NEW --dport 80 -j ACCEPT
<iptables> -D FORWARD -i ens3 -p tcp -m state --state NEW --dport 443 -j ACCEPT
# Option: actioncheck
# Notes.: command executed once before each actionban command
# Values: CMD
#
actioncheck = <iptables> -n -L <chain> | grep -q 'f2b-<name>[ \t]'
# Option: actionban
# Notes.: command executed when banning an IP. Take care that the
# command is executed with Fail2Ban user rights.
# Tags: See jail.conf(5) man page
# Values: CMD
#
actionban = <iptables> -I f2b-<name> 1 PREROUTING -s <ip> -j DNAT --to-destination 188.68.45.124
# Option: actionunban
# Notes.: command executed when unbanning an IP. Take care that the
# command is executed with Fail2Ban user rights.
# Tags: See jail.conf(5) man page
# Values: CMD
#
actionunban = <iptables> -D f2b-<name> -s <ip> -j DNAT --to-destination 188.68.45.124
[Init]
/etc/fail2ban/jail.d/ 中的文件 apache-route.local:
[apache-route]
enabled = true
filter = apache-probe
port = http,https
banaction = iptables-route.conf
maxretry = 3
findtime = 1500
bantime = 600
logpath = /var/www/*/userdata/logs/*-access.log
我什至无法测试它,因为它给了我以下错误:
fail2ban-客户端重启
在 /etc/fail2ban 下找不到“action.d/iptables-route.conf”的可访问配置文件
无法读取操作“iptables-route.conf”
监狱“apache-route”中的错误。跳过...
我试图让它工作,但我不知道为什么它会给我这个错误
只需
.conf
从动作名称中删除:顺便提一句。你的行为在我看来有点不对劲。为什么不默认
iptables-multiport
指定(覆盖)chain
和blocktype
?不知道你在尝试什么,但不会是这样的:
做这份工作?
iptables-multiport 不添加输出链:
所以我决定创建一个自己的操作来添加这些并在加载/卸载时删除它们
我忘记了我还需要实现后路由,但我需要进一步重新考虑以存档它。
我想要的是:
在 Banaction 上,请求被路由到另一个 ip,其中托管了一个页面,上面写着“由于过多的无效请求而被禁止”,而不是仅仅拒绝/丢弃请求