Protegendo seu servidor SSH contra ataque brute force (denyhosts)

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 = [email protected]

# Host e porta do servidor SMTP
SMTP_HOST = localhost
SMTP_PORT = 25

# Quem esta enviando o email
SMTP_FROM = DenyHosts <[email protected]>

# 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.