Mostrei em outro post como proteger seu servidor ssh com o fail2ban. Nesse post irei demonstrar o uso do DenyHosts, que tem a mesma finalidade, para proteger o seu servidor ssh contra ataque de brute force.
Que o SSH é uma ferramenta indispensável para qualquer administrador GNU/Linux e a até Unix/Correlatos não é nenhuma novidade, mas por incrível que pareça quando menciono que qualquer um que tenha o SSH instalado e o mesmo está acessível na internet ele está sujeito a tentativas de acessos não autorizados cometidos por pessoas mau intencionadas que fazem uso de diversos scripts/programas criados especificamente para esse propósito.
O DenyHosts permite o monitoramento do serviço SSH e pode bloquear tentativas consecutivas de acesso a usuários existentes ou não em seu servidor.
Primeiramente vamos instalar o DenyHosts:
# apt-get install denyhosts
Vamos a configuração e algumas explicações de alguns parâmetros
# vi /etc/denyhosts.conf
# Arquivo de log de autenticação
SECURE_LOG = /var/log/auth.log
# O denyhosts vem configurado para utilizar tcp_wrappers
HOSTS_DENY = /etc/hosts.deny
# Por quanto tempo as entradas no arquivo hosts.deny serão mantidas, ajuste as suas necessidades.
PURGE_DENY = 1d
# Qual o serviço será monitorado, para todos use ALL
BLOCK_SERVICE = sshd
# Bloqueia o host após a quantidade especificada de falhas de login de usuários inválidos.
DENY_THRESHOLD_INVALID = 3
# Bloqueia host após falhas de login para usuários válidos
DENY_THRESHOLD_VALID = 5
# Bloqueia qualquer tentativa de login do usuário root
DENY_THRESHOLD_ROOT = 1
# Igual a opção acima mas para nomes de usuários listados em WORK_DIR/restricted-usernames
DENY_THRESHOLD_RESTRICTED = 1
# Diretório onde o denyhost escreve seus dados
WORK_DIR = /var/lib/denyhosts
# Tenta obter um nome associado ao endereço IP
HOSTNAME_LOOKUP=YES
# Email do administrador
ADMIN_EMAIL = seunome@seudominio
# Host e porta do servidor SMTP
SMTP_HOST = localhost
SMTP_PORT = 25
# Quem esta enviando o email
SMTP_FROM = DenyHosts <nobody@localhost>
# Desbloqueio de usuários válidos que tenham apenas errado na digitação
AGE_RESET_VALID=1d
# O mesmo só que aplicado ao usuário root
AGE_RESET_ROOT=25d
# O mesmo para usuário restrito
AGE_RESET_RESTRICTED=25d
# Para usuários inválidos
AGE_RESET_INVALID=10d
# Onde irá armazenar o log
DAEMON_LOG = /var/log/denyhosts
—–
Após as modificações vamos reiniciar o denyhosts
# /etc/init.d/denyhosts restart
Na imagem abaixo tenho uma pequena amostra de todos os hosts bloqueados pelo denyhosts
Uma boa pedida também é configurar o seu servidor SSH para não permitir login do usuário root (PermitRootLogin no) e também a troca da porta de acesso (Port 6702).
Espero que tenham gostado do post e não deixem de assinar o nosso portal.