Segurança SSH com DenyHosts

Neste artigo mostrarei como bloquear tentativas de SSH Brute Force com o DenyHosts no Slackware Linux, mas vale para qualquer distribuição.

[ Hits: 22.345 ]

Por: Rafael Tomelin em 05/01/2009 | Blog: http://teclinux.no-ip.org:8080


Configurando o DenyHosts



Dentro do arquivo de configuração /opt/DenyHosts-2.6/denyhosts.cfg vamos descomentar/comentar/acrescentar as seguintes linhas:

#Arquivo de log a ser verificado
SECURE_LOG = /var/log/secure
#Arquivo com os hosts bloqueados
HOSTS_DENY = /etc/hosts.deny
#Limpar o arquivo a cada 2 dias
PURGE_DENY = 2d
#Qual serviço deve ser bloqueado
BLOCK_SERVICE = sshd
#Número de tentativas que um usuário não valido pode tentar se conectar
DENY_THRESHOLD_INVALID = 2
#Número de tentativas que um usuário valido pode tentar para se conectar
DENY_THRESHOLD_VALID = 2
#Número de tentativas com a senha do ROOT
DENY_THRESHOLD_ROOT = 1
#Email do destinatário que receberá os logs de bloqueio de IP
ADMIN_EMAIL = [email protected]
#Servidor de SMTP
SMTP_HOST = smtp.meudominio.com.br
#Porta do servidor SMTP
SMTP_PORT = 25
#Remetente
SMTP_FROM = DenyHosts <[email protected]>
#Assunto
SMTP_SUBJECT = DenyHosts - IP bloqueado no servidor XXXX
#Arquivo de LOG do DenyHosts
DAEMON_LOG = /var/log/denyhosts
#De quanto em quanto tempo o DenyHosts deve varrer o arquivo de logs do sistema
DAEMON_SLEEP = 30s

Obs.: Ainda existem muitas outras opções do DenyHosts.

Finalizando

Colocando o DenyHosts em produção:

# /etc/rc.d/rc.denyshosts restart

Verificando se ele está executando:

# ps ax | grep denyhosts
2600 ?        S      0:03 python /usr/bin/denyhosts.py --daemon --config=/usr/share/denyhosts/denyhosts.cfg
1940 pts/0    R+     0:00 grep denyhosts

Testando o DenyHosts:

Vamos tentar locar na máquina local com o usuário fulano:

# ssh -l fulano localhost

Depois de colocar as senhas erradas verifique o resultado:

# cat /opt/DenyHosts/data/users-invalid
fulano:5:Thu Dec 18 13:31:27 2008

Isso aí, agora seu serviço de SSH está mais seguro.

Página anterior    

Páginas do artigo
   1. Introdução ao DenyHosts
   2. Configurando o DenyHosts
Outros artigos deste autor

VPN (filial) autenticando e usando o proxy do servidor de VPN (matriz)

Leitura recomendada

Tratamento de dados fornecidos pelo usuário: projetando sistemas com mais segurança

TinyOS

Quebrando a criptografia RSA

Utilizando o Nmap Scripting Engine (NSE)

Sudo 1.8.12 - Parte II - Como sudo funciona

  
Comentários
[1] Comentário enviado por remontti em 05/01/2009 - 10:18h

Muito boa sua politica,
eu uso uma outra bloqueava sempre hosts.deny, e outras conf,
vou aplicar aqui em um dos servidores aqui ver como fica, junto das minhas, se funcionar depois posto ai.

[2] Comentário enviado por stremer em 05/01/2009 - 10:32h

amigo, só um detalhe. Acho que o script é feito em python e não em perl...

[3] Comentário enviado por renato.leite em 05/01/2009 - 18:34h

Muito bom o artigo, mas o script foi escrito em python, fora isso esta otimo seu artigo...

[4] Comentário enviado por nick em 06/01/2009 - 09:50h

Legal. Mas acho besteira, pq hoje o auth.log nos dá toda essas informaçoes sem necessitar de terceiros.

[5] Comentário enviado por removido em 07/01/2009 - 20:08h

A solução é interessante, mas na minha opinião é muito mais eficaz dar acesso somente á quem deve ter acesso com o parametro AllowUsers dentro do sshd.conf, bem como restringir senhas em branco, XForwarding, etc. Normalmente eu crio um Jail para cada usuário para incrementar ainda mais a segurança e dar acesso somente ao que o usuário necessita via ssh.
Mas é isso aí, o artigo veio para agregar.
Abraços.

[6] Comentário enviado por Rafael Guedes em 11/01/2009 - 12:46h

Muito bom seu artigo, parabéns!

Mas vale lembrar que se o DenyHosts estiver sendo executado em modo daemon as seguintes flags serão ignoradas:
--file, --purge, --migrate, --sync, --verbose

Portanto se você estiver tentando fazer algum teste remoto, não faça o que eu fiz =P

#Limpar o arquivo a cada 1 minuto
PURGE_DENY = 1m

Não consegui mais acessar o servidor pela minha máquina, tive que acessá-lo por outro servidor e limpar o arquivo /etc/hosts.deny. Portanto fica aí a dica, faça com que a vontade de ler o manual seja mais forte do que a vontade de ver o negócio rodando...


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts