Segurança SSH usando o DenyHost

O que é o DenyHost?

O DenyHosts é uma ferramenta escrita em Python que monitora os logs do sistema em busca de ataques de força bruta SSH. Seu funcionamento é como de um HIDS.

Funcionamento

O DenyHost busca as tentativas de conexão em /var/log/secure.log ou /var/log/auth.log, dependendo da distribuição Linux usada. Ele irá analisar os logs e verificar os IPs que estão tentando ter acesso ao servidor, geralmente o host é bloqueado com 3 tentativas de acesso. Os valores e as configurações podem ser mudadas no arquivo de configuração (/etc/denyhosts/denyhosts.conf).

Instalação

A instalação do DenyHost pode acontecer de 2 formas: baixando o código fonte direto do site oficial ou através dos repositórios padrão do sistema. Neste artigo iremos abordar somente a instalação através do repositório padrão do sistema.  Informações sobre como instalar através do código fonte são encontradas aqui.

Passo 1 – Instalando o DenyHosts

Abra o terminal e digite:

$ sudo apt-get install denyhosts

Passo 2 – Coloque o seu IP na whitelist

Edite o arquivo /etc/hosts.allow e coloque o IP de todas  as máquinas que terão direito acesso. Isso irá garantir que eles não sejam bloqueados futuramente.

$ sudo vi /etc/hosts.allow

Adicione uma linha como a linha abaixo.

ssh: 162.28.6.3, 103.124.4.9

A sintaxe é: protocolo IP, IP, …

Salve e saia do arquivo

Passo 3 – Configure o denyhost.conf

Na maior parte dos sistemas, o arquivo de configuração encontra-se em /etc/denyhosts.conf.

$ sudo vim /etc/denyhosts.conf

Confirme se o caminho para o arquivo do log está correto, deve estar como o exemplo abaixo.

SECURE_LOG = /var/log/auth.log

A opção HOSTS_DENY deve estar:

HOSTS_DENY = /etc/host.deny

Para bloquear somente SSH (É possível bloquear outros serviços, basta adicionar o serviço neste campo):

BLOCK_SERVICE = ssh

Defina as configurações de quantas tentativas deverão acontecer para ter o bloqueio:
DENY_THRESHOLD_INVALID = 5
DENY_THRESHOLD_VALID = 5
DENY_THRESHOLD_ROOT = 1
DENY_THRESHOLD_RESTRICTED = 1
Para bloquear os Hosts, o Denyhosts utiliza o firewall Iptables
IPTABLES = /sbin/iptables

Salve e feche o arquivo.

Passo 3 – Reiniciando o Serviço

Para que as alterações tenham efeito é preciso reiniciar o serviço.

$ sudo /etc/init.d/denyhosts restart

Passo 4 – Colocando o DenyHosts para iniciar com o Sistema

Digite o seguinte comando no terminal:

$ sudo systemctl enable denyhosts.service

Passo 5 – Lista de Bloqueados

Digite o seguinte comando no terminal:

$ sudo cat /etc/hosts.deny

Nos próximos tutoriais iremos abordar como é possível realizar a remoção de um host que foi bloqueado.