it-swarm-pt.tech

Obtenha o Fail2Ban para verificar o findtime a cada X minutos

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

bantime  = 86400
findtime  = 600
maxretry = 2

Isso é ótimo, pois interrompe quaisquer IPs que estejam fazendo força bruta 3 vezes em 10 minutos. No entanto, existem IPs que tentam a cada 30 minutos ou mais. Para capturar esses IPs, alterei as configurações para:

bantime  = 86400
findtime  = 3600
maxretry = 2

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

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

5
DomainsFeatured

Conforme 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. fail2ban deve ler novos dados de registro a cada segundo ou mais (dependerá da carga do computador, mas deve ser muito rápido, pois na maioria dos casos os novos dados de registro ainda estarão na memória, em um buffer do kernel.)

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

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

Há um gráfico que mostra a linha do tempo. Os logs que fazem parte do passado antigo são ignorados. Registros entre now - findtime e now, seção chamada passado , são verificados para correspondências. Se o número de correspondências (representado por asteriscos) for >= maxretry então um banimento é iniciado em now. A proibição dura até now + bantime. Observe que acessos com o mesmo IP uma vez que o IP foi banido não devem ocorrer para a porta para a qual foi banido. Isso ainda pode acontecer com outras portas, no entanto.

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

14
Alexis Wilke

Você pode adicionar uma prisão em jail.conf para verificar quem faz força bruta 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 colocá-lo em filter.d para combinar com o que você deseja, por exemplo:

[Definition]

failregex = fail2ban.actions: WARNING \[ssh\] Unban <Host>
0
andreatsh