ação fail2ban para rotear para outro ip

ação fail2ban para rotear para outro ip

Quero criar uma ação fail2ban que roteia o tráfego para outro IP na ação de banimento e remove a rota na ação de unban.

Arquivo: iptables-route.conf em /etc/fail2ban/action.d/

# 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]

Arquivo apache-route.local em /etc/fail2ban/jail.d/:

[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

Não consigo nem testar porque me dá o seguinte erro:

reinicialização do cliente fail2ban

Não foram encontrados arquivos de configuração acessíveis para 'action.d/iptables-route.conf' em /etc/fail2ban

Não foi possível ler a ação 'iptables-route.conf'

Erros na prisão 'apache-route'. Ignorando...

Tento fazê-lo funcionar, mas não tenho ideia de por que isso me dá esse erro

Responder1

Não foi possível ler a ação 'iptables-route.conf'

Simplesmente remova .confdo nome da ação:

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

POR FALAR NISSO. Sua ação parece um pouco errada para mim. Por que simplesmente não usar o padrão iptables-multiportespecificado (sobrescrito) chaine blocktype?
Não tenho certeza do que você está tentando, mas não faria algo assim:

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

faça o trabalho?

Responder2

Por que não usar o iptables-multiport padrão com cadeia e tipo de bloco especificados (sobrescritos)?

iptables-multiport não adiciona as cadeias de saída:

-A FORWARD -i ens3 -p tcp -m state --state NOVO --dport 80 -j ACEITAR

-A FORWARD -i ens3 -p tcp -m state --state NOVO --dport 443 -j ACEITAR

então decidi criar uma ação própria que os adiciona e os remove ao carregar/descarregar

Esqueci que também preciso implementar um pós-roteamento, mas preciso repensar ainda mais para arquivar isso.

O que eu quero:

no banaction, a solicitação é encaminhada para outro IP onde está hospedada uma página que diz "você foi banido devido a muitas solicitações inválidas" em vez de apenas rejeitar/descartar a solicitação

informação relacionada