Melhorando a Segurança do SSH
O SSH é um dos meios mais utilizados para acesso de servidores, apesar de ter um certo nível de segurança na comunicação, precisamos ajustar algumas coisas.
0 – Backup do arquivo de configuração
O backup é algo indispensável, ainda mais quando iremos realizar modificações nos arquivos de configuração padrão de um sistema. Para criar um arquivo de backup das configurações do SSH, use o comando abaixo.
# cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
Pronto! Backup feito, vamos prosseguir.
1 – Crie uma senha segura
É indiscutível que o seu usuário tenha uma senha segura, de preferência com letras maiúsculas/minúsculas, números e caracteres especiais com tamanho de 16.
2 – Altere a Porta do SSH
Por padrão a porta do SSH é a 22 e com isso muitos ataques vão direto nela, vamos mudar para a porta 4002 (sugestão de teste).
Observação: Isso não evita que a porta seja não descoberta, como mostra o resultado de um scan com nmap. Mas você pode implementar uma camada de segurança extra com o KNOCKD. Outro detalhe importante é que só dá para ocultar a informação da versão do OpenSSH quando você modifica para não exibir, compila e instala.
Abra o arquivo de configuração do SSH.
# nano /etc/ssh/sshd_config
Descomente a linha.
# Port 22
Insira a sugerida
Port 4002
3 – Desative o login como root
Proíba que o usuário root consiga fazer o login via SSH, sempre que possível acesse com um usuário sem privilégio e quando necessário altere o privilégio para root.
Marque a permissão de login como “no“.
PermitRootLogin no
4 – Defina um número máximo das tentativas de acesso
Aqui deixei definido como 3 segundos mas você pode por mais ou menos.
MaxAuthTries 3
5 – Alterando o tempo de espera para login
Mude o tempo de espera para ser feito o login quando a conexão SSH é estabelecida no Terminal.
LoginGraceTime 15
6 – Defina o Protocol 2 como padrão
O Protocolo 1 e 2 são diferentes, além de trabalharem de maneira oposta o Protocolo 2 é mais seguro.
Para testar se o SSH2 é compatível, faça o seguinte:
ssh -2 usuario@IP DO SERVIDOR
Se for compatível, será mostrado uma mensagem perguntando se você deseja continuar se conectando. Para configurar o Protocolo 2, insira o parâmetro acima do Port onde foi mudada a porta do SSH.
Protocol 2
7 – Bloqueando o login de um usuário sem senha
Descomente a linha e defina o parâmetro “no“.
PermitEmptyPasswords no
8 – Desabilite o X11Forwarding
O X11Forwarding permite a execução de programas em modo gráfico via SSH, se você não tem necessidade de usar, desabilite.
X11Forwarding no
9 – Defina um tempo ocioso
As vezes finalizamos uma tarefa e deixamos o SSH conectado, para evitar problemas, defina um tempo máximo em que se não houver interação a conexão será encerrada automaticamente.
Aqui foi definido 300 segundos que equivale a 5 minutos.
ClientAliveInterval 300
10 – Desabilite totalmente as senhas
Se possível, dê preferência para o login com chaves SSH, é mais seguro do que utilizar senhas.
11 – Reinicie o processo do SSH
Quando finalizar todas as alterações no arquivo de configuração, reinicie o serviço para que elas entrem em vigor.
# systemctl restart sshd
12 – Instale um Firewall
Existem outros Firewalls que você pode implementar mas aqui irei dar um exemplo com o UFW.
Instale o UFW Firewall
# apt install ufw
Atualize as regras para rejeitar todas as conexões que chegarem e permitir a saída.
# ufw default deny incoming
# ufw default allow outgoing
Como tenho um Servidor Apache rodando em teste, irei permitir a porta 80 (http).
# ufw allow 80
Se você inseriu uma regra errada, apenas adicione o delete antes do allow ou deny para remover.
# ufw delete allow 80
Permita o acesso ao SSH somente pelo seu IP (lembre-se de usar um IP Fixo, independente de ser Privado ou Público) na porta 4002 modificada.
# ufw allow from SEU-IP-FIXO-AQUI to any port 4002
Habilite o serviço do UFW.
# ufw enable
Para resetar todas as configurações já feitas no UFW, use o comando abaixo.
# ufw reset
Se quiser ver o status do Firewall.
# ufw status verbose
Depois de terminar as configurações, você pode listar e conferir todas as regras com suas IDs.
# ufw status numbered
Aqui foram mostradas algumas maneiras de dificultar as tentativas de ataque direcionadas ao SSH, mas ainda existe muito trabalho a ser feito.
Esperamos ter ajudado e esclarecido a como Melhorar a Segurança do SSH. E não esqueça de nos seguir nas Redes Sociais. Até a próxima!