Aumentando o nível de seguraça na conexão SSH
Distribuição testada: Debian 8 (Jessie)
Requisitos SSH intalado
1 |
# 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
1 |
# vim /etc/ssh/sshd_config |
Aletere as seguintes linhas:
1 2 3 4 5 |
<span style="color: #808080;"><span style="color: #008080;">Port 55222</span> # Aqui vai o numero da porta <span style="color: #008080;">ServerKeyBits 1024</span> # Quantos bits a ser usado na chave do servidor <span style="color: #008080;">LoginGraceTime 20</span> # Tempo que o usuario tem para fazer login <span style="color: #008080;">PermitRootLogin no</span> # Não permita que o usuário root se conecte</span> |
Addicione a linha:
1 |
<span style="color: #808080;"><span style="color: #008080;">AllowUsers</span><strong><span style="color: #008080;"> <em>seu_usuario </em></span></strong># Apenas este user irá conseguir conectar-se via ssh por mais que exita outros users.</span> |
Restarte o serviço:
1 |
# /etc/init.d/ssh restart |
Pronto!
1 |
# 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
1 |
# 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.
1 2 3 |
# 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:
1 |
# nmap localhost |
1 2 3 |
<span style="color: #808000;">Not shown: 1674 closed ports PORT STATE SERVICE 22/tcp <span style="color: #ff0000;">filtered</span> ssh</span> |
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.
1 |
# vim /etc/hosts.allow |
Adicione:
1 2 |
<span style="color: #008080;">sshd: 200.1.2.3 # Ip Especifico </span> <span style="color: #008080;">sshd: 10.0.0.0/24 # Uma Classe de IP</span> |
1 |
# vim /etc/hosts.deny |
Adicione:
1 |
<span style="color: #008080;">sshd: ALL</span> |
Agora sim né! Humm.. Sei não que tal instalar o fail2ban?
1 |
# 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
1 2 3 4 5 6 7 8 |
... [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”!
Excelente dica, seu site está de parabéns, não conhecia o site, mas de um tempo pra cá agora sempre busco algumas dicas aqui, obrigado por compartilhar com a gente! um abraço!
Muito bom, bem explicado.
Parabéns.
Dica simples e muito boa, cara. Obrigado. Me ajudou bastante.
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
da para liberar só seu ip local
boa dica
Muito boa sua dica
Parabéns pelo blog!