Linux

Fail2Ban: Aprenda a prevenir os serviços de ataques de força bruta

8 Comentários

A segurança é um requisito fundamental para o bom funcionamento dos serviços online. Além da sua instalação, os administradores devem proceder à sua correcta configuração e também ter mecanismos que garantam toda a segurança do sistema.

Hoje damos a conhecer um projecto que dá pelo nome de Fail2Ban, cujo objectivo é prevenir os serviços de ataques de força bruta.

security-lock


A ferramenta Fail2Ban pode ser considerada como um agente que monitoriza regularmente os logs dos mais diversos serviços.

No caso de encontrar tentativas de acesso indevidas (verificando um numero elevado de tentativas de autenticação falhadas) a um dado serviço (ex. ssh, pam, xinetd, apache, vsftpd, proftpd, wuftpd, postfix, couriersmtp, courierauth, sasl e named) o Fail2Ban adiciona dinamicamente uma regra na firewall do sistema que bloqueia de imediato as sessões/comunicações do suposto atacante.

Esta ferramenta foi desenvolvida em Phyton e é gratuita.

Com instalar o Fail2Ban ni Ubuntu e derivados?

A instalação do fail2ban é bastante simples. Para tal basta executar o seguinte comando:

sudo apt-get update && sudo apt-get install fail2ban

Em seguida vamos ao ficheiro de configuração (/etc/fail2ban/jail.conf) e adaptamos de acordo com o que pretendemos. Vamos por exemplo considerar o serviço SSH.

Configurar o Fail2Ban para SSH

Para começar abrimos o ficheiro de configuração num editor (por exemplo o nano):

nano /etc/fail2ban/jail.local

Em seguida vamos à secção [Default] onde podemos fazer algumas configurações. Para este exemplo vamos considerar que devem ser ignorados os endereços IP  127.0.0.1/8 e 192.168.1.1/24 , que o número de segundos que uma máquina deve ficar banida deve ser de 3600 e que o fail2ban apenas actua após 6 tentativas falhadas de autenticação.

[DEFAULT]

# "ignoreip" can be an IP address, a CIDR mask or a DNS host
ignoreip = 127.0.0.1/8 192.168.1.1/24
[...]
bantime  = 3600
[...]
maxretry = 6

# "backend" specifies the backend used to get files modification. Available
# options are "gamin", "polling" and "auto".
# yoh: For some reason Debian shipped python-gamin didn't work as expected
#      This issue left ToDo, so polling is default backend for now

[...]
backend = auto
#
# Destination email address used solely for the interpolations in
# jail.{conf,local} configuration files.
destemail = root@localhost
[...]

Feita a configuração geral, vamos agora indicar o serviço. O Fail2Ban tem já alguns filtros pré-definidos para vários serviços. Assim basta fazer algumas adaptações. Aqui vai um exemplo:

[sshd]

enabled  = true
port     = ssh
filter   = sshd
logpath  = /var/log/auth.log

Nota: Não se esqueçam de indicar o caminho correcto do log do SSH do vosso sistema.

Demonstração

Depois de realizadas as configurações apresentadas acima, tentamos aceder via uma máquina Windows ao servidor de SSH que estava no Linux. Como se pode ver pelo log ( cat /var/log/fail2ban.log) à sexta tentativa (como definimos) a máquina com o endereço 192.168.1.82 (corresponde à máquina Windows com o nome tiger.lan) foi banida.

fail2ban_00

Como referido, para banir uma comunicação suspeita o Fail2Ban adiciona dinamicamente uma regra ao iptables.

fail2ban_01

Para quem tem serviços de rede expostos, esta é sem duvida uma ferramenta a ter em conta para a protecção dos mesmos. Como viram é simples de instalar e ainda possui muitas outras opções de configuração (como por exemplo enviar um e-mail a alertar o administrador).

Autor: Pedro Pinto
Partilhar:
Também pode gostar

Comentários

8

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *

  1. Avatar de José
    José

    Muito bom, parabens.

    Um duvida.
    É possivel só com a porta?

    (exemplo)

    [sshd]
    enabled = true
    port = 2121
    logpath = /var/log/auth.log

    1. Avatar de lpdourado
      lpdourado

      Sim, é possível.

  2. Avatar de David Fernandes
    David Fernandes

    Existe algo semelhante para windows?

  3. Avatar de Ricardo Ruivo
    Ricardo Ruivo

    para Windows deste género não… o fail2ban e um interface mais amigável para o iptables… a firewall do Windows já tem um interface “user friendly”

  4. Avatar de UX
    UX

    O Fail2ban só não chega.

    Bloqueia com sucesso utilizadores que quebrem as regras mas também precisam de uma firewall activa.

    A melhor e a mais simples de utilizar é a ufw.

    #— Unix FireWall —#

    ufw status verbose

    ou
    ufw show raw | more

    ufw enable
    ufw disable

    ufw default deny incoming – atenção: cuidado com o locked out em ssh
    ufw default allow outgoing

    Activar apenas o necessário:

    ufw allow ssh
    ufw allow http
    ufw allow https

    ou
    ufw allow 80/tcp

    ufw deny 80/tcp

    Para apagar as regras:

    ufw delete allow ssh

    ou
    ufw delete allow 80/tcp

    ufw status numbered
    ufw delete [number]

    Simples.

  5. Avatar de Joao
    Joao

    Ufw default deny não basta?

  6. Avatar de sys
    sys

    Pessoalmente prefiro o denyhosts mas fazem os dois a mesma coisa

  7. Avatar de Jorge Teixeira
    Jorge Teixeira

    grego com uma pitada de russo….