Jail errors & wont start

2

Eu criei uma cadeia e uma ação na tentativa de capturar "ataques DDoS", no entanto, os arquivos de log mostram erros para essa cadeia sempre que eu reinicio o Fail2Ban. A cadeia & filtro parece bastante simples, e reproduzido em vários blogs, mas o que eu usei para comparação é aqui .

Esta é a cadeia:

[http-get-dos]
enabled = true
filter = http-get-dos
action =  iptables[name=Http-Get-Dos, port="http,https"]
logpath = %(apache_access_log)s
maxretry = 300
findtime = 300
bantime = 300

e este é o filtro:

# Fail2Ban configuration file
#
[Definition]

# Option: failregex
# Note: This regex will match any GET entry in your logs
# You should set up in the jail.conf file, the maxretry and findtime carefully

failregex = ^<HOST> -.*"(GET|POST).*

# Option: ignoreregex
# Notes.: regex to ignore. If this regex matches, the line is ignored.
# Values: TEXT
#

Isso tudo parece simples, mas, por algum motivo, se eu reiniciar o serviço depois de ativar essa cadeia, vejo os seguintes erros no log do Fail2ban:

2017-11-04 12:48:13,296 fail2ban.jail           [1460]: INFO    Creating new jail 'http-get-dos'
2017-11-04 12:48:13,298 fail2ban.jail           [1460]: INFO    Jail 'http-get-dos' uses poller
2017-11-04 12:48:13,300 fail2ban.filter         [1460]: INFO    Set jail log file encoding to UTF-8
2017-11-04 12:48:13,300 fail2ban.jail           [1460]: INFO    Initiated 'polling' backend
2017-11-04 12:48:13,303 fail2ban.actions        [1460]: INFO    Set banTime = 300
2017-11-04 12:48:13,304 fail2ban.filter         [1460]: INFO    Set findtime = 300
2017-11-04 12:48:13,306 fail2ban.filter         [1460]: INFO    Added logfile = /var/log/apache2/access.log
2017-11-04 12:48:13,308 fail2ban.filter         [1460]: INFO    Added logfile = /var/log/apache2/other_vhosts_access.log
2017-11-04 12:48:13,309 fail2ban.filter         [1460]: INFO    Set jail log file encoding to UTF-8
2017-11-04 12:48:13,310 fail2ban.filter         [1460]: INFO    Set maxRetry = 300

2017-11-04 12:48:14,411 fail2ban.action         [1460]: ERROR   iptables -w -N f2b-Http-Get-Dos
iptables -w -A f2b-Http-Get-Dos -j RETURN
iptables -w -I INPUT -p tcp --dport http,https -j f2b-Http-Get-Dos -- stdout: b''
2017-11-04 12:48:14,441 fail2ban.action         [1460]: ERROR   iptables -w -N f2b-Http-Get-Dos
iptables -w -A f2b-Http-Get-Dos -j RETURN
iptables -w -I INPUT -p tcp --dport http,https -j f2b-Http-Get-Dos -- stderr: b"iptables v1.6.0: invalid port/service 'http,https' specified\nTry 'iptables -h' or 'iptables --help' for more information.\n"
2017-11-04 12:48:14,458 fail2ban.action         [1460]: ERROR   iptables -w -N f2b-Http-Get-Dos
iptables -w -A f2b-Http-Get-Dos -j RETURN
iptables -w -I INPUT -p tcp --dport http,https -j f2b-Http-Get-Dos -- returned 2
2017-11-04 12:48:14,463 fail2ban.actions        [1460]: ERROR   Failed to start jail 'http-get-dos' action 'iptables': Error starting action
2017-11-04 12:48:20,150 fail2ban.jail           [1460]: INFO    Jail 'http-get-dos' started

Parece que a parte de ação da prisão está causando um problema, mas não entendo o motivo. A ação é semelhante àquela usada por outras cadeias.

Alguma idéia de como posso resolver isso para que a cadeia funcione corretamente?

    
por Phill Healey 04.11.2017 / 13:59

1 resposta

1

Eu não tenho reputação suficiente para comentar, então vou postar como uma resposta aqui.

Parece que esta linha:

action = iptables[name=Http-Get-Dos, port="http,https"]

está passando variáveis para o iptables e, como resultado do port="http,https" , você está especificando duas portas de destino em uma única regra do iptables. Não encontrei nenhuma documentação específica sobre isso, mas não parece certo para mim - acho que essa é a causa do problema.

Acho que deve haver ações separadas para HTTP e HTTPS.

EDIT: Encontrei algumas entradas no google que usam port="http, https" e especificam iptables-multiport em vez de iptables. A ação iptables-multiport parece rodar o iptables com --match multiport (descrito aqui ), permitindo que você especifique mais de uma porta por vez (consulte esta questão de falha do servidor . Então eu acho que a outra solução seria usar a ação iptables-multiport.

    
por 05.11.2017 / 16:39