Ferramentas de Usuário

Ferramentas de Site


pt:jessie:security:brute_force_attack:fail2ban

7.1.1 Fail2Ban

O Fail2Ban é uma aplicação que analisa continuamente os ficheiros log e bloqueia os endereços Internet de onde originaram várias tentativas falhadas de acesso com senha inválida.

O Fail2Ban é extremamente eficaz na prevenção de ataques de força bruta e de negação de serviço (DoS).

Instalação

root@server:~# apt-get install fail2ban whois

Configuração

Sugestão

A configuração criada durante a instalação ativa o fail2ban para a porta ssh. No entanto outras portas podem ser monitorizadas e protegidas.

A documentação do Fail2Ban aconselha a que toda a configuração seja feita em ficheiros com a extensão .local. Estes podem ser criados copiando o ficheiro de configuração original, com a extensão .conf:

root@server:~# cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Toda a configuração é a partir de agora efetuada apenas no ficheiro /etc/fail2ban/jail.local.

Numa primeira fase, definimos os endereços que não estão sujeitos a restrições (endereço local e rede local), durante quanto tempo os endereços atacantes serão banidos (1800 segundos (30 minutos)) e após quantas tentativas (3 tentativas permitidas). Essa configuração deve ser efetuada no ficheiro /etc/fail2ban/jail.local:

/etc/fail2ban/jail.local
# [...]

[DEFAULT]

# "ignoreip" can be an IP address, a CIDR mask or a DNS host. Fail2ban will not
# ban a host which matches an address in this list. Several addresses can be
# defined using space separator.
ignoreip = 127.0.0.1/8 192.168.1.0/24

# "bantime" is the number of seconds that a host is banned.
bantime  = 1800

# [...]

# A host is banned if it has generated "maxretry" during the last "findtime"
# seconds.
findtime = 1800
maxretry = 3

# [...]

Também é definido o endereço email para o qual serão enviados os alertas:

/etc/fail2ban/jail.local
# [...]

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

# [...]

Em seguida, é configurada a ação a realizar quando é detetado um possível ataque. Neste caso, o endereço IP do atacante é banido e um email é enviado ao administrador do sistema.

/etc/fail2ban/jail.local
# [...]

#
# ACTIONS
#

# Default banning action (e.g. iptables, iptables-new,
# iptables-multiport, shorewall, etc) It is used to define
# action_* variables. Can be overridden globally or per
# section within jail.local file
banaction = iptables-multiport

# [...]

# Choose default action. To change, just override value of 'action' with the
# interpolation to the chosen action shortcut (e.g.  action_mw, action_mwl, etc) in jail.local
# globally (section [DEFAULT]) or per specific section
action = %(action_mwl)s

# [...]

Por último, são definidos os parâmetros do serviço que se pretende proteger, editando a secção JAILS do ficheiro /etc/fail2ban/jail.local. Atenção que caso não sejam usadas as portas standard (por exemplo o serviço “ssh” activo na porta “2222” em vez da habitual porta “22”), os parâmetros deverão ser devidamente ajustados com os valores correctos.

/etc/fail2ban/jail.local
# [...]

#
# JAILS
#

# [...]

[ssh]

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

# [...]

Finalmente, reiniciar o serviço fail2ban:

root@server:~# service fail2ban restart

Verificação

O comando fail2ban-client status permite obter mais informações acerca o estado do serviço fail2ban:

root@server:~# fail2ban-client status
Status
|- Number of jail:      5
`- Jail list:           proftpd, postfix, ssh, apache, dovecot

O resultado mostra que estão a ser monitorizados 5 serviços…

root@server:~# fail2ban-client status ssh
Status for the jail: ssh
|- filter
|  |- File list:        /var/log/auth.log
|  |- Currently failed: 0
|  `- Total failed:     9
`- action
   |- Currently banned: 2
   |  `- IP list:       103.41.124.33 211.154.20.44
   `- Total banned:     2

… e que estão atualmente banidos 2 endereços IP após 9 tentativas de acesso ilegal ao serviço “ssh”.

Notificações via e-mail

A cada (re)início do serviço fail2ban um email de notificação será enviado ao administrador do sistema:

Subject: [Fail2Ban] ssh: started on server
Date: Mon, 27 Apr 2015 22:08:16 +0000
From: Fail2Ban <[email protected]>
To: root@localhost

Hi,

The jail ssh has been started successfully.

Regards,

Fail2Ban

E a cada ataque que despolete uma ação defensiva, o administrador será também notificado:

Subject: [Fail2Ban] ssh: banned 219.148.120.238
Date: Mon, 27 Apr 2015 22:15:59 +0000
From: Fail2Ban <[email protected]>
To: root@localhost

Hi,

The IP 219.148.120.238 has just been banned by Fail2Ban after
3 attempts against ssh.

Here are more information about 219.148.120.238:

% [whois.apnic.net node-7]
% Whois data copyright terms    http://www.apnic.net/db/dbcopyright.html

inetnum:        219.148.0.0 - 219.148.159.255
netname:        CHINANET-HE
descr:          CHINANET hebei province network
descr:          China Telecom
descr:          No.31,jingrong street
descr:          Beijing 100032
country:        CN
admin-c:        CH93-AP
tech-c:         BR3-AP
status:         ALLOCATED NON-PORTABLE
changed:        [email protected] 20060526
mnt-by:         MAINT-CHINANET
mnt-lower:      MAINT-CHINANET-HE
mnt-routes:     MAINT-CHINANET-HE
source:         APNIC

# [...]

Lines containing IP:219.148.120.238 in /var/log/auth.log

Apr 27 22:07:25 server sshd[27043]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=219.148.120.238  user=root
Apr 27 22:07:26 server sshd[27043]: Failed password for root from 219.148.120.238 port 59879 ssh2
Apr 27 22:07:29 server sshd[27046]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=219.148.120.238  user=root
Apr 27 22:07:31 server sshd[27046]: Failed password for root from 219.148.120.238 port 60898 ssh2
Apr 27 22:07:34 server sshd[27048]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=219.148.120.238  user=root
Apr 27 22:07:36 server sshd[27048]: Failed password for root from 219.148.120.238 port 33737 ssh2

Regards,

Fail2Ban
Sugestão

O pacote Fail2Ban pode ser utilizado para proteger servidores de e-mail, ftp, web, ou mesmo criar outro tipo de filtros, bastando para tal editar o ficheiro /etc/fail2ban/jail.local para configurar os vários serviços que se pretendem proteger.

Referências

pt/jessie/security/brute_force_attack/fail2ban.txt · Última modificação em: 2024-02-15 01:05 por 127.0.0.1