…baseados em dicionários e de força bruta
Como já tive oportunidade de referir em vários artigos, sou um “viciado” em SSH para acesso remoto as minhas máquinas a partir de qualquer lugar/dispositivo. O SSH (Secure Shell), também conhecido como Secure Socket Shell, é um protocolo/aplicação que permite de forma segura aceder remotamente a uma máquina Linux.
No entanto, ao activarmos o SSH numa máquina Linux no porto 22 e estando esta exposta para o exterior (Internet), é frequente começarmos a receber milhares de tentativa de acesso provenientes de todo o mundo. Como resolver esta situação?
Para quem não sabe, os ataques baseados em força bruta recorrem normalmente a dicionários e vão testando milhares de utilizadores e passwords até que se consiga ganhar acesso. Para quem é administrador de sistemas linux e caso tenha o SSH a correr no sistema, pode visualizar facilmente essa informação nos logs do sistema (no caso do CentOS, essa informação está em /var/log/secure).
O que é o DenyHosts?
O DenyHosts é um script desenvolvido para sistemas Linux que permite “ajudar” no controlo de ataques indevidos via SSH. Na prática, este script avalia constantemente as tentativas de acesso via SSH e no caso de serem considerados como ataques de força bruta, é criada uma entrada no ficheiro /etc/hosts.deny que bloqueia o acesso da máquina remota (que supostamente está a tentar aceder indevidamente).
Este script permite:
- Processar todas as tentativas de acesso (com e sem sucesso) que são registadas no ficheiro /var/log/secure
- Definir um número de tentativas falhadas no acesso
- Adicionar manualmente máquinas à lista negra (adicionando essa informação no ficheiro /etc/hosts.deny)
- Adicionar manualmente máquinas à lista de máquinas permitidas (adicionando essa informação no ficheiro /etc/hosts.allow)
- Envio de e-mail para administrador da máquina com informações sobre as máquinas bloequadas
- Resolução de IPs para hostnames
- ..entre muitas outras funcionalidades (ver aqui)
Como instalar o DenyHosts no CentOS?
Para este tutorial, recorremos ao CentOS 6.0.
Para instalar o DenyHosts via repositório, vamos adicionar à nossa máquina o repositório EPEL
rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm
yum install yum-priorities
Em seguida instalamos o script DenyHosts
yum install denyhosts
Definimos que o denyhosts deverá arrancar ao automaticamente com o sistema
chkconfig denyhosts on
e em seguida, arrancamos o serviço
service denyhosts start
E está feito. Caso pretendam realizar alguma configuração no denyhosts devem fazê-la em /etc/denyhosts.conf
Para verificarem quais as máquinas que o denyhosts coloca na blacklist, basta aceder ao ficheiro /etc/hosts.deny, utilizado para isso, por exemplo, o comando:
tail -f /etc/hosts.deny
Dica: Para verificarem o denyhosts experimentem, a partir de uma máquina remota, ligaram-se ao vosso servidor com SSH e experimentarem 5 autenticações falhadas.