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: 24.266 ]

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


Introdução ao DenyHosts



O que é DenyHosts

É um script feito em PERL por Phil Schwartz, no qual ajuda na segurança do serviço SSH contra ataques de "FORÇA BRUTA".

Como funciona:
O DenyHosts busca as tentativas de conexão em /var/log/secure.log ou /var/log/auth.log, dependendo da distribuição Linux usada. Na configuração pode-se indicar quantas tentativas o usuário pode fazer sem sucesso, atingindo esse número de falhas o DenyHosts copia o IP para dentro de /etc/hosts.deny.

Nessa configuração pode-se setar tentativas de usuários válidos no sistema ou inválidos, ou seja, 3 tentativas para usuários inválidos e 5 para usuários válidos, também informamos quanto tempo esse IP ficará bloqueado.

Requisitos: é necessário o Python para rodar o DenyHosts.

Instalação

1) Vamos entrar no diretório onde ficará o DenyHosts:

# cd /opt

2) Agora baixaremos o DenyHosts da seguinte forma:

# wget -c http://ufpr.dl.sourceforge.net/sourceforge/denyhosts/DenyHosts-2.6.tar.gz

3) Descompactaremos :

# tar -zxvf DenyHosts-2.6.tar.gz
# cd DenyHosts-2.6


4) E criaremos os links:

Link do diretório:

# ln -s /opt/DenyHosts-2.6 /usr/share/denyhosts

Link do binário:

# ln -s /opt/DenyHosts-2.6/denyhosts.py /usr/bin

Link do arquivo de inicialização do DenyHosts:

# ln -s /opt/DenyHosts-2.6/daemon-control-dist /etc/rc.d/rc.denyshosts

5) O DenyHosts já vem com um arquivo de configuração pré-pronto, apenas copiaremos ele:

# cp /opt/DenyHosts-2.6/denyhosts.cfg.dist /opt/DenyHosts-2.6/denyhosts.cfg

Colocando para iniciar junto com o sistema Linux:

# chmod +x /etc/rc.d/rc.denyhosts

Acrescentar as seguintes linhas ao arquivo /etc/rc.d/rc.M:

# Start the DenyHosts.
if [ -x /etc/rc.d/rc.denyhosts ]; then
  . /etc/rc.d/rc.denyhosts
fi

    Próxima página

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

Análise de Malware em Forense Computacional

Aspecto de segurança para uma arquitetura web

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

Reaver - Testes de segurança em redes sem fio

Técnicas forenses para identificação da invasão e do invasor em sistemas Unix/Linux através do SSH (parte 2)

  
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

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts