Obtenha o Fail2Ban para verificar o findtime a cada X minutos

2

Eu tenho fail2ban configurado com as seguintes configurações:

bantime  = 86400
findtime  = 600
maxretry = 2

Isso é ótimo, pois impede que os IPs que são brutos forcem 3 vezes em 10 minutos. No entanto, existem IPs que estão tentando a cada 30 minutos ou mais. Para pegar esses IPs, alterei as configurações para:

bantime  = 86400
findtime  = 3600
maxretry = 2

Agora, ele verifica a cada hora e pega alguns desses IPs que estavam tentando a cada 20 a 30 minutos. No entanto, agora meu VPS não está capturando IPs que podem ser forçados brutos em um nível alto por uma hora.

Assim, existe alguma maneira de definir o findtime = 3600 e também fail2ban a cada 10 minutos?

    
por DomainsFeatured 13.10.2016 / 17:05

2 respostas

4

Como mencionado por Michael Hampton em alguns comentários, o tempo de reação , com que frequência fail2ban verifica os logs, não tem nada a ver com o parâmetro findtime . Espera-se que fail2ban leia novos dados de log a cada segundo (isso dependerá da carga do seu computador, mas deve ser muito rápido, pois na maioria dos casos novos dados de log ainda estarão na memória, em um buffer de kernel). p>

O findtime=... define o quanto os registros anteriores são verificados. O filtro é verificado em relação à entrada que possui uma data entre now - findtime e now . Se o filtro encontrou maxretry ou mais linhas de log correspondentes (sem contar as que também correspondem ao ignoreregex ) nesse período de tempo ( now - findtime to now ), ele emite a ação ban .

  ancient past  |     past       |       ban         |   future
----------------+--*--*-*--*---*-+-------------------+------------->
                |                |                   |
                |                |                   +--> now + bantime
                |                +--> now
                +--> now - findtime

Existe um gráfico mostrando a linha do tempo. Os logs do passado antigo são ignorados. Os logs entre now - findtime e now , seção denominada passado , são verificados quanto a correspondências. Se o número de correspondências (representado por asteriscos) for >= maxretry , será iniciada uma proibição em now . A proibição dura até now + bantime . Observe que os hits com o mesmo IP, uma vez que o IP foi banido, não devem acontecer na porta para a qual ele foi banido. Ainda pode acontecer para outros portos, no entanto.

Portanto, ao aumentar o findtime=... você não afeta o tempo de reação, você aumenta a chance de um IP ser banido pelo filtro correspondente.

    
por 24.10.2016 / 08:22
0

Você pode adicionar uma cadeia em jail.conf para verificar quem é forçado brutal a cada 30 minutos. Exemplo de configuração de trabalho é:

[ssh] # first jail: check every 10 minutes 

enabled  = true
port     = ssh
filter   = sshd
action   = %(action_)s
logpath  = /var/log/auth.log
maxretry = 3
bantime  = 600

[fail2ban-ssh] # second jail: check every hour

enabled = true
filter = fail2ban-ssh
logpath = /var/log/fail2ban.log
action = iptables-multiport
maxretry = 3
findtime = 3600    
bantime = 86400     # ban for a day

Crie um arquivo fail2ban-ssh.conf e coloque-o em filter.d para corresponder ao que você deseja, por exemplo:

[Definition]

failregex = fail2ban.actions: WARNING \[ssh\] Unban <HOST>
    
por 20.10.2016 / 12:29