Aumentando o nível de seguraça na conexão SSH

Distribuição testada: Debian 8 (Jessie)

Requisitos SSH intalado

# apt-get install ssh

Primeiramente vamos mudar a porta do SSH  de preferencia para uma porta bem alta (são mais difíceis serem escaneadas) e após definir apenas um único usuário para conexão

# vim /etc/ssh/sshd_config

Aletere as seguintes linhas:

Port 55222 # Aqui vai o numero da porta
ServerKeyBits 1024 # Quantos bits a ser usado na chave do servidor
LoginGraceTime 20 # Tempo que o usuario tem para fazer login
PermitRootLogin no # Não permita que o usuário root se conecte

Addicione a linha:

AllowUsers seu_usuario # Apenas este user irá conseguir conectar-se via ssh por mais que exita outros users.

Restarte o serviço:

# /etc/init.d/ssh restart

Pronto!

# ssh usuariodossh@seuip -p 55222

Agora sua porta de conexão SSH é a 55222, terminou? Não!!!

Que tal enganar um pouco! 🙂
Vamos criar uma regra de firewall com iptables, caso você já tenha um script de firewall adicione a ele. A regra será um DROP na porta 22 assim vai dar uma falsa impressão que sua porta está protegia quando alguém usar algum scanner, vai passar aquele impressão: “- iii tem firewall na 22, vamos procurar outro….”

Drop falso na porta 22

# iptables -A INPUT -p tcp --dport 22 -j DROP

Se desejar filtrar sua porta de SSH (54222) e deixar apenas IP X ou Y conectarem-se, no meu exemplo deixo apenas os IPs 200.1.2.3 e toda a classe 10.0.0.0-10.0.0.255.

# iptables -A INPUT -s 200.1.2.3 -p tcp --dport 55222 -j ACCEPT # IP Especifico 
# iptables -A INPUT -s 10.0.0.0/24 -p tcp --dport 55222 -j ACCEPT # Uma Classe
# iptables -A INPUT -p tcp --dport 55222 -j DROP

Como dito no momento que seu servidor for scanear seu servidor a porta 22 ira aparecer como filtrada.
Instale o nmpa (# apt-get install nmap) para fazer os teste:

# nmap localhost
Not shown: 1674 closed ports
PORT STATE SERVICE
22/tcp filtered ssh

Assim já estou protegido! Legal!!!
Suficiente? Meu nível é mais paranóico, então se desejar prossiga 😀
O que vamos fazer, é meio que redundante como que fizemos no firewall, porém se por alguma “zica” seu firewall não tiver rodando o próximo passo vai salvar! Vamos configurar nos hosts para bloquear o serviço SSH e liberar apenas para seu IP ou classe.

# vim /etc/hosts.allow

Adicione:

sshd: 200.1.2.3 # Ip Especifico 
sshd: 10.0.0.0/24 # Uma Classe de IP
# vim /etc/hosts.deny

Adicione:

sshd: ALL

Agora sim né! Humm.. Sei não que tal instalar o fail2ban?

 # apt-get install fail2ban

Por padrão o modulo de proteção do SSH vem ativo (true) no Debian, no parâmetro maxretry você define o número de tentativas que poderá errar a senha para conexão a partir de um determinado IP.

Para alterar as configurações do fail2ban edite o arquivo /etc/fail2ban/jail.conf

...
[ssh]
enabled  = true
port     = ssh
filter   = sshd
logpath  = /var/log/auth.log
maxretry = 6
...

Por padrão os tempos de banimento é de 5 min
bantime = 600 # Se nenhuma correspondência é encontrada dentro de X segundos
findtime = 600 # Duração para um IP ser banido

Estamos 100% seguro? Nada é 100% seguro, mas certamente você levou seu nível de segurança a um nível “hard core”!

Rudimar Remontti

Trabalho atualmente como Gerente de Redes em um Provedor de Internet no Rio Grande do Sul.

Você pode gostar...

5 Resultados

  1. Andre disse:

    Muito bom, bem explicado.
    Parabéns.

  2. Italo disse:

    Dica simples e muito boa, cara. Obrigado. Me ajudou bastante.

  3. Paulinho disse:

    Como faço isso?
    Que tal enganar um pouco!
    No seu firewall coloque a seguinte linha:

    # Engana porta
    iptables -A INPUT -p tcp –dport 22 -j DROP

  4. Daniel disse:

    da para liberar só seu ip local

    boa dica

  5. Adriano disse:

    Muito boa sua dica
    Parabéns pelo blog!

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *