fail2ban 操作路由到另一个 ip

fail2ban 操作路由到另一个 ip

我想创建一个 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’

jail 'apache-route' 中的错误。跳过...

我尝试让它工作,但我不知道为什么它会给我这个错误

答案1

无法读取操作‘iptables-route.conf’

.conf只需从操作名称中删除:

-banaction   = iptables-route.conf
+banaction   = iptables-route

顺便说一句。你的操作在我看来有点不对。为什么不默认iptables-multiport指定(覆盖)chainblocktype
不确定你在尝试什么,但不会是这样的:

banaction = iptables-multiport[chain=PREROUTING, blocktype="DNAT --to-destination 188.68.45.124"]

做这个工作?

答案2

为什么不使用指定(覆盖)链和块类型的默认 iptables-multiport?

iptables-multiport 不添加输出链:

-A 转发 -i ens3 -p tcp -m 状态 --状态新 --dport 80 -j 接受

-A 转发 -i ens3 -p tcp -m 状态 --状态新 --dport 443 -j 接受

所以我决定创建一个自己的操作,在加载/卸载时添加和删除它们

我忘了我还需要实现后路由,但我需要进一步重新考虑以存档它。

我想要的是:

在 banaction 上,请求被路由到另一个 ip,该 ip 上托管着一个页面,上面写着“由于无效请求太多,您已被禁止”,而不是直接拒绝/丢弃该请求

相关内容