Fail2Ban: já banido?

17

Eu tenho o Fail2Ban rodando no meu servidor Centos. (Config abaixo)

No meu var / log / messages notei algo realmente estranho:

Jun 19 12:09:32 localhost fail2ban.actions: INFO   [postfix] 114.43.245.205 already banned

Eu configurei o Fail2Ban para adicionar o IP banido ao iptables.

Meu jail.conf:

[postfix]

enabled  = true
filter   = postfix
action   = iptables
port     = smtp,ssmtp
filter   = postfix
logpath  = /var/log/maillog
bantime  = 43200
maxretry = 2

Meu postfix.conf:

[INCLUDES]

before = common.conf

[Definition]
failregex = reject: RCPT from (.*)\[<HOST>\]: 550 5.1.1
            reject: RCPT from (.*)\[<HOST>\]: 450 4.7.1
            reject: RCPT from (.*)\[<HOST>\]: 554 5.7.1
            reject: RCPT from (.*)\[<HOST>\]: (.*)@yahoo.com.tw
ignoreregex =

Minha pergunta é: como alguém que já foi bloqueado em iptables ainda se conecta ao servidor?

    
por 3und80 19.06.2014 / 12:23

6 respostas

13

A prisão recidiva recomendada na outra resposta aqui não resolveu o problema para mim. Eu finalmente consertei isso, então aqui está meu método, caso isso ajude os outros.

O Fail2ban bloqueia apenas o TCP por padrão. Pelo menos com a minha configuração, notei que a mensagem "já banido" estava aparecendo quando os bots voltaram para tentar a porta bloqueada pelo UDP.

Para corrigir esse problema, diga ao Fail2ban para bloquear a porta em todos os protocolos, em vez de apenas TCP. Você precisará fazer essa alteração em /etc/fail2ban/jail.conf e na seção [Init] de cada ação que estiver usando em / etc / fail2ban / action.d / .

Altere isto:

# Default protocol
protocol = tcp

Para:

# Default protocol
protocol = all

Em seguida, desativei solicitações de eco ICMP para que os IPs bloqueados não tivessem como acessar o servidor:

  1. nano /etc/sysctl.conf
  2. Adicione estas duas linhas:

    net.ipv4.icmp_echo_ignore_all = 1  
    net.ipv4.icmp_echo_ignore_broadcasts = 1
    
  3. Saia e salve o arquivo.
  4. Execute sysctl -p para que a alteração tenha efeito.

Depois disso, execute fail2ban-client reload e você não verá mais essas mensagens "já banidas", a menos que você receba spam de um IP que faça algumas tentativas de acesso antes que o bloqueio seja efetivado .

Além disso, é importante bloquear todas as portas para todos os criminosos em vez da porta que eles estavam tentando acessar usando a ação iptables-allports em cada um dos Jails. Caso contrário, eles podem desencadear outra prisão e acabar como "já banido" nos logs.

    
por 31.10.2014 / 22:16
3

Se você observar a saída de iptables-save , verá que as cadeias fail2ban estão configuradas para avaliar os pacotes de acordo com as regras definidas pelos filtros, por exemplo:

:fail2ban-ssh - [0:0]
-A INPUT -p tcp -A INPUT -p tcp -A INPUT -p tcp -m multiport --dports 22 -j fail2ban-ssh 
-A fail2ban-ssh -j RETURN

O tráfego ainda chega ao servidor antes que as outras regras de roteamento sejam aplicadas e o tráfego seja rejeitado. fail2ban ainda vê esse tráfego inicial e é por isso que você vê as mensagens "já banidas". Além disso, há um filtro especial para reincidentes ( /etc/fail2ban/filter.d/recidive.conf ):

# Fail2Ban filter for repeat bans
#
# This filter monitors the fail2ban log file, and enables you to add long
# time bans for ip addresses that get banned by fail2ban multiple times.
#
# Reasons to use this: block very persistent attackers for a longer time,
# stop receiving email notifications about the same attacker over and
# over again.
#
# This jail is only useful if you set the 'findtime' and 'bantime' parameters
# in jail.conf to a higher value than the other jails. Also, this jail has its
# drawbacks, namely in that it works only with iptables, or if you use a
# different blocking mechanism for this jail versus others (e.g. hostsdeny
# for most jails, and shorewall for this one).

[INCLUDES]

# Read common prefixes. If any customizations available -- read them from
# common.local
before = common.conf

[Definition]

_daemon = fail2ban\.server\.actions

# The name of the jail that this filter is used for. In jail.conf, name the
# jail using this filter 'recidive', or change this line!
_jailname = recidive

failregex = ^(%(__prefix_line)s| %(_daemon)s%(__pid_re)s?:\s+)WARNING\s+\[(?!%(_jailname)s\])(?:.*)\]\s+Ban\s+<HOST>\s*$

[Init]

journalmatch = _SYSTEMD_UNIT=fail2ban.service PRIORITY=4

# Author: Tom Hendrikx, modifications by Amir Caspi
    
por 19.06.2014 / 13:06
1

Isso acontecerá se o endereço IP que você está banindo não for realmente o endereço IP do cliente que está se conectando ao servidor. Por exemplo. se o seu servidor estiver por trás de um balanceador de carga ou proxy.

Demorei um bom tempo para descobrir isso recentemente. O sinal vermelho era que os logs foram configurados para capturar o endereço IP X-Forwarded-For , em vez do endereço de origem real, que no meu caso era o balanceador de carga.

Nesse caso, o fail2ban não ajuda muito, já que banir o IP ofensivo acabaria bloqueando todo o tráfego.

    
por 13.10.2016 / 21:07
0

Quero contribuir com meu próprio problema e solução com mensagens "já banidas". Como você escreveu, eu tinha centenas deles em poucos minutos, enquanto o invasor já deveria ter sido banido.

Antes de começar, aqui está o meu sistema:

  • Plesk 12
  • Centos 7
  • Plesk-Module instalado, operando e configurando o fail2ban para mim

Quando instalei o OpenVPN no meu servidor roots, mudei o firewalld para iptables. Isso pode ter causado esse problema para mim, mas além disso, meu sistema ficou praticamente intocado e recém-instalado (Strato rootserver sugeriu instalar a imagem).

Se você tiver esse problema, por favor, verifique /etc/fail2ban/jail.d/00-firewalld.conf para uma linha como esta:

banaction = firewallcmd-ipset

A partir do momento em que comentei, salvei o arquivo e reiniciei fail2ban.service , tudo estava bem com o fail2ban. Não há mais mensagens

Não sou especialista, mas espero fornecer a resposta certa. Se isso funciona para você, por favor me avise!

    
por 20.03.2015 / 21:08
0

My question is how can anybody that has already been blocked in iptables still connect to the server?

Conectou-se ao servidor apenas uma vez, mas nessa única conexão tentou enviar vários e-mails para caixas de correio inexistentes (como [email protected], [email protected], [email protected] etc.)

Você configurou seu filtro de postfix para banir essas tentativas, para que o IP seja banido após X tentativas. O cliente pode já estar desconectado do postfix, mas como o postfix pode não ter terminado o processamento de todos os seus emails, o fail2ban pode detectar outra tentativa do mesmo cliente quando o postfix processa seus emails e assim você recebe o endereço já banido. É por causa de como a fila do postfix funciona.

    
por 11.08.2016 / 16:49
0

My question is how can anybody that has already been blocked in iptables still connect to the server?

Incrível boa pergunta. Estava pesquisando se minhas regras de firewall não estavam funcionando, mas o iptables --list-rules correspondia exatamente a outro servidor de produção com o funcionamento do fail2ban.

A principal solução foi adicionar a porta 8080 às portas bloqueadas, pois eu ainda estava acessando a página de login pelas portas de desenvolvimento.

Então a correção na minha situação é que esse problema foi uma adaptação bastante simples do meu jail.local :

[JIRA-LOGIN-tcp]
  enabled = true
  port = http,https,8080
  protocol = tcp
  filter = JIRA-LOGIN-ERROR
  logpath = /var/atlassian/application-data/jira/log/atlassian-jira-security.log
  bantime = 600
  maxretry = 1
    
por 09.02.2017 / 19:03