Fail2ban em servidor SSH

Publicado por Jeferson R. Costa em 10/03/2014

[ Hits: 15.068 ]

Blog: http://www.jefersonrc.com.br/

 


Fail2ban em servidor SSH



Nesta dica, vou mostrar como proteger, ainda mais, o seu servidor SSH com o Fail2ban.

Mas, Jeferson, que raios é Fail2ban?

Explico eu: Fail2ban é uma ferramenta muito legal que analisa os logs dos serviços que deseja monitorar e, através destes logs, ele identifica algo de errado e toma uma ação, geralmente, fechando uma determinada porta, ou bloqueando determinado IP e assim por diante.

No nosso exemplo, vamos configurar o Fail2ban para monitorar a porta do SSH (padrão 22), e quando ele identificar muitas tentativas de um determinado Host, ele bloqueará aquele IP.

Então, mãos na massa:

Antes de mais nada, devemos instalar o Fail2ban:

# apt-get install update; apt-get install fail2ban

Depois de instalados, vamos para as configurações, para isso, abra o arquivo /etc/fail2ban/jail.conf com o seu editor de texto preferido e altere os seguintes parâmetros:

ignoreip = 127.0.0.1 192.168.1.0/24
bantime = 1800
maxretry = 3
banaction = iptables-multiport
[ssh]
enable = true
port = ssh
filter = sshd
logpath=/var/log/auth.log
maxretry = 3

Explicando:
  • ignoreip :: você usará este parâmetro caso deseja ignorar as falhas de uma determinada faixa de IP, ou seja, a faixa de IP ou o IP que definir nestes parâmetros serão ignorados para bloqueio. Você pode usar os seguintes parâmetros: 192.168.1.10 para indicar um Host, 192.168.1.0/255.255.255.0 para indicar uma sub-rede ou 192.168.1.0/24, para indicar uma sub-rede em CIDR.
  • bantime :: aqui você define quanto tempo (em segundos) um Host ficará bloqueado caso ele seja banido.
  • maxretry :: aqui você define o máximo de tentativas que é permitido de maneira geral, ou seja, para todos os serviços. Você também pode ignorar este parâmetro e definir diretamente nas configurações do serviço, como vamos fazer à frente.
  • banaction :: aqui definimos qual vai ser a ação que o Fail2ban deverá tomar, neste caso vamos usar o iptables-multport para que o Fail2ban consiga bloquear várias portas caso seja necessário.
  • [ssh] enable :: habilita o monitoramento do serviço, no caso, o SSH.
  • [ssh] port :: aqui você define qual porta ele monitorará e usará para a ação. Obs.: ele pega essa porta do arquivo /etc/services.
  • [ssh] filter :: será o filtro usado pelo Fail2ban na coleta dos logs.
  • [ssh] logpath :: indica o caminho do log que será usado para monitoramento.
  • [ssh] maxretry :: neste caso, este parâmetro aqui é desnecessário, pois já definimos este valor anteriormente. Este parâmetro aqui seria útil caso eu quisesse um número de tentativas para esse serviço diferente da já setada na seção global.

Depois de fazer as alterações, salve o arquivo e, agora, devemos reiniciar o serviço:

# /etc/init.d/fail2ban restart

Para monitorarmos as atividades do Fail2ban, podemos consultar os seus logs que ficam em /var/log/fail2ban.log, lá podemos verificar se algum Host foi bloqueado, por exemplo.

Para testar, simule erros de login conforme o parâmetro maxretry e depois veja se conseguirá conectar novamente. Verifique também (em outro Host, porque o que tentou já era, rsrs) se nos logs apareceu o IP como banido.

Só lembrando que, caso a sua porta para acesso SSH seja diferente da padrão, altere em /etc/services para que o Fail2ban tome a ação na porta correta.

Pronto, agora o seu SSH está um pouco mais protegido, pelo menos contra ataques com várias tentativas de logon, como um brute-force por exemplo.

Só lembrando que, só isso que vimos aqui, não faz a segurança total do seu ambiente (até porque não existe), esta dica deve se integrar com outras técnicas de proteção dos seus serviços.


Testado no Debian 7.

Veja essa e outras dicas em meu blog, onde posto dicas e soluções em TI.

Precisa de suporte técnico ou consultoria? Acesse: www.revolutech.com.br

Gostou? Compartilhe e deixe seu comentário.
Achou algum erro? Precisa de ajuda? Críticas? Deixe seu comentário.

Obrigado,
Jeferson R. Costa

Outras dicas deste autor

MySQL - Erro: mysqldump: Got error: 1044 [Resolvido]

Squid - Calculando cache_dir e cache_mem

Inserindo máquina com Windows 7 no domínio Samba

Erro: ERROR 2006 (HY000): "MySQL server has gone away" [Resolvido]

Serviço online de scanner de portas

Leitura recomendada

Nessus no Funtoo

Lista de portas TCP, UDP e ICMP

Backup com Arkeia Free

Aumenta sua segurança com o LPS-Linux

Slackfire - Iniciantes em iptables (Slackware)

  

Comentários

Nenhum comentário foi encontrado.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts