• Olá Visitante, se gosta do forum e pretende contribuir com um donativo para auxiliar nos encargos financeiros inerentes ao alojamento desta plataforma, pode encontrar mais informações sobre os várias formas disponíveis para o fazer no seguinte tópico: leia mais... O seu contributo é importante! Obrigado.

Segurança SSH com DenyHosts

helldanger1

GForum VIP
Entrou
Ago 1, 2007
Mensagens
29,631
Gostos Recebidos
1
Neste artigo mostrarei como bloquear tentativas de SSH Brute Force com o DenyHosts no Slackware Linux, mas vale para qualquer distribuição.

Por: Rafael Tomelin


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.

 

helldanger1

GForum VIP
Entrou
Ago 1, 2007
Mensagens
29,631
Gostos Recebidos
1
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
 

helldanger1

GForum VIP
Entrou
Ago 1, 2007
Mensagens
29,631
Gostos Recebidos
1
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 = meuemail@meudominio.com.br
#Servidor de SMTP
SMTP_HOST = smtp.meudominio.com.br
#Porta do servidor SMTP
SMTP_PORT = 25
#Remetente
SMTP_FROM = DenyHosts <nobody@localhost>
#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.
 

helldanger1

GForum VIP
Entrou
Ago 1, 2007
Mensagens
29,631
Gostos Recebidos
1
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.

 
Topo