Pular para o conteúdo

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.
Rafael Tomelin c.rafael
Hits: 25.519 Categoria: Linux Subcategoria: Segurança
  • Indicar
  • Impressora
  • Denunciar

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

   1. Introdução ao DenyHosts
   2. Configurando o DenyHosts

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

Netcat - O canivete suíco do TCP/IP

OSSEC HIDS - Instalação e configuração no CentOS 6.5

Ultimate Nmap

Servidor de e-mail seguro com ClamAV e MailScanner

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

#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

Entre na sua conta para comentar.