Redirecionamento Fail2ban

3

Acabei de concluir a configuração do fail2ban no meu servidor proxy reverso do Centos. Consegui que bloqueasse todas as solicitações se um determinado critério fosse cumprido (bastante direto).

No entanto, gostaria de redirecionar os usuários ofensivos em vez de bloqueá-los. Eu sei que é possível usar um arquivo de ação personalizado, mas não consigo fazer isso funcionar corretamente. Eu gostaria de redirecionar para outra porta no servidor (talvez executando o Apache com uma página personalizada dizendo por que eles foram redirecionados) ou para outro site totalmente.

Alguma ideia? Aqui está minha tentativa de redirecionar para outra porta (as intenções eram redirecionar os usuários ofensivos para a porta 8080 no mesmo servidor). A ação é chamada de redirecionamento de firewall e foi derivada do firewallcmd-ipset.

# Fail2Ban action file for firewall-cmd/ipset
#
# This requires:
# ipset (package: ipset)
# firewall-cmd (package: firewalld)
#
# This is for ipset protocol 6 (and hopefully later) (ipset v6.14).
# Use ipset -V to see the protocol and version.
#
# IPset was a feature introduced in the linux kernel 2.6.39 and 3.0.0 kernels.
#
# If you are running on an older kernel you make need to patch in external
# modules.

[INCLUDES]

before = iptables-common.conf

[Definition]

actionstart = ipset create fail2ban-<name> hash:ip timeout <bantime>
              firewall-cmd --add-forward-port=port=443:proto=tcp:toport=8080 -m set --match-set fail2ban-<name> src

actionstop = firewall-cmd --remove-forward-port=port=443:proto=tcp:toport=8080 -m set --match-set fail2ban-<name> src
             ipset flush fail2ban-<name>
             ipset destroy fail2ban-<name>

actionban = ipset add fail2ban-<name> <ip> timeout <bantime> -exist

actionunban = ipset del fail2ban-<name> <ip> -exist

[Init]

# Option:  chain
# Notes    specifies the iptables chain to which the fail2ban rules should be
#          added
# Values:  [ STRING ]
#
chain = INPUT_direct

# Option: bantime
# Notes:  specifies the bantime in seconds (handled internally rather than by fail2ban)
# Values:  [ NUM ]  Default: 600

bantime = 600

# DEV NOTES:
#
# Author: Edgar Hoch and Daniel Black
# firewallcmd-new / iptables-ipset-proto6 combined for maximium goodness

Além disso, aqui está um trecho do erro que estou vendo no arquivo fail2ban.log. Eu entendo o que está acontecendo, eu só não sei como corrigi-lo corretamente. : -)

2015-06-01 09:49:05,548 fail2ban.action         [11334]: ERROR   ipset create fail2ban-apache-gpd_flood hash:ip timeout 3600
firewall-cmd --add-forward-port=port=443:proto=tcp:toport=8080 -m set --match-set fail2ban-apache-gpd_flood src -- stdout: ''
2015-06-01 09:49:05,548 fail2ban.action         [11334]: ERROR   ipset create fail2ban-apache-gpd_flood hash:ip timeout 3600
firewall-cmd --add-forward-port=port=443:proto=tcp:toport=8080 -m set --match-set fail2ban-apache-gpd_flood src -- stderr: 'usage: see firewall-cmd man page\nfirewall-cmd: error: unrecognized arguments: -m set --match-set fail2ban-apache-gpd_flood src\n'
2015-06-01 09:49:05,549 fail2ban.action         [11334]: ERROR   ipset create fail2ban-apache-gpd_flood hash:ip timeout 3600
firewall-cmd --add-forward-port=port=443:proto=tcp:toport=8080 -m set --match-set fail2ban-apache-gpd_flood src -- returned 2
2015-06-01 09:49:05,549 fail2ban.actions        [11334]: ERROR   Failed to start jail 'apache-gpd_flood' action 'firewallcmd-redirect': Error starting action

Obrigado antecipadamente!

    
por JoeInVT 01.06.2015 / 18:06

1 resposta

2

Não tenho certeza, mas aqui estão minhas sugestões:

  1. Aqui , o ipset nem sempre é instalado junto com o fail2ban. Poderia, por favor, verificar se tem o ipset instalado?

  2. A resposta no link sugere o uso de iptables em vez de firewalld. Se você fizer isso, poderá reescrever actionban como:

    iptables -t nat -A PREROUTING -i eth0 -p tcp -s bannedip --dport 443 -j REDIRECT --to-port 8080 
    

    e actionunban como:

    iptables -t nat -D PREROUTING -i eth0 -p tcp -s bannedip --dport 443 -j REDIRECT --to-port 8080 
    

    (consulte aqui ).

  3. Seu bantime (3600) atualmente não corresponde ao bantime na seção Init de sua configuração. Consulte Duelo fail2ban e tempos limite ipset .

por 02.06.2015 / 10:52