Melhores Práticas para o Reforço da Segurança SSH em Servidores Linux
Proteja seu servidor Linux imediatamente dominando estas técnicas essenciais de reforço de segurança SSH. Este guia especializado oferece passos práticos, focando em mudanças de configuração no `sshd_config`. Aprenda a desabilitar o login de root de alto risco, implementar autenticação obrigatória baseada em chaves para eliminar senhas fracas, alterar a porta padrão e instalar o Fail2Ban para limitação de taxa eficaz contra ataques de força bruta. Proteja seu sistema transformando o SSH em um canal robusto e seguro.
Melhores Práticas para Reforçar a Segurança SSH em Servidores Linux
O SSH é geralmente a primeira porta que você abre em um servidor Linux, portanto, reforçar a segurança SSH deve acontecer antes de expor esse host à internet. Bots constantemente tentam senhas fracas, credenciais reutilizadas e contas padrão na porta 22.
O objetivo é simples: manter o acesso remoto utilizável para você e doloroso para os atacantes. Comece a partir de uma segunda sessão de terminal, mantenha sua sessão SSH atual aberta e teste cada alteração antes de reiniciar o daemon.
Faça Backup e Teste a Configuração Primeiro
Antes de editar /etc/ssh/sshd_config, faça um backup. Um erro de digitação pode bloquear você do servidor.
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak_$(date +%F)
Após editar, verifique a sintaxe:
sudo sshd -t
Se o teste passar, recarregue ou reinicie o SSH. O nome do serviço é comumente sshd em sistemas estilo RHEL e ssh no Debian/Ubuntu:
sudo systemctl restart sshd
# ou
sudo systemctl restart ssh
1. Desabilitar Login Root
O login direto como root dá ao atacante o nome de usuário mais valioso logo de início. Use uma conta de usuário normal e eleve privilégios com sudo quando precisar de acesso administrativo.
Etapa de Configuração
Abra /etc/ssh/sshd_config e localize a diretiva PermitRootLogin. Altere seu valor para no.
# Antes:
# PermitRootLogin yes
# Depois (Melhor Prática):
PermitRootLogin no
Antes de reiniciar o SSH, confirme que você consegue fazer login como um usuário padrão com privilégios sudo.
2. Exigir Autenticação Baseada em Chave
A autenticação por senha é fácil de atacar em escala. As chaves SSH são mais difíceis de adivinhar, mais fáceis de rotacionar e mais seguras para administração diária quando você protege a chave privada com uma frase secreta.
Gerar e Instalar Chaves
- Gere o par de chaves em sua máquina local:
ssh-keygen -t ed25519 -C "[email protected]" - Copie a chave pública para o servidor:
ssh-copy-id -i ~/.ssh/id_ed25519 usuario@ip_do_seu_servidor
Desabilitar Autenticação por Senha
Assim que confirmar que consegue fazer login com sucesso usando sua chave SSH, desabilite completamente a autenticação por senha.
# Desabilitar senhas
PasswordAuthentication no
# Garantir que as chaves estejam habilitadas
PubkeyAuthentication yes
Ed25519 é um bom padrão para novas chaves. Se precisar de RSA para compatibilidade com sistemas mais antigos, use uma chave grande, como 4096 bits.
3. Considere Alterar a Porta SSH Padrão
Alterar o SSH da porta TCP 22 para uma porta não padrão pode reduzir varreduras automatizadas ruidosas. Isso não substitui chaves, controles de acesso ou limitação de taxa, porque qualquer um ainda pode descobrir a porta aberta com uma varredura.
Etapa de Configuração
No /etc/ssh/sshd_config, altere a diretiva Port:
# Antes:
# Port 22
# Depois (Exemplo de porta não padrão):
Port 22222
Atualize seu firewall e qualquer grupo de segurança na nuvem antes de reiniciar o SSH. Caso contrário, seu novo daemon SSH pode estar ouvindo em uma porta que você não consegue alcançar.
Exemplo usando firewalld (CentOS/RHEL):
sudo firewall-cmd --permanent --add-port=22222/tcp
sudo firewall-cmd --reload
4. Limitar Acesso a Usuários e Grupos Específicos
Se apenas um pequeno conjunto de pessoas deve usar SSH, especifique isso no sshd_config. Isso bloqueia contas locais esquecidas de se tornarem pontos de entrada remotos.
Diretivas de Configuração
Use uma ou ambas as seguintes diretivas no sshd_config:
- Permitir usuários específicos:
AllowUsers alice bob - Permitir grupos específicos:
AllowGroups sshaccess admins
Se essas diretivas estiverem presentes, qualquer usuário ou grupo não listado explicitamente terá o acesso negado.
5. Manter Padrões SSH Modernos e Desabilitar Métodos Legados
As versões atuais do OpenSSH já usam o protocolo SSH 2; o suporte ao protocolo 1 mais antigo foi removido do OpenSSH moderno. Evite copiar trechos de configuração antigos que incluam diretivas Protocol não suportadas ou uma lista de cifras desatualizada. Isso pode quebrar o SSH após uma atualização.
Concentre-se em desabilitar mecanismos de confiança legados, a menos que você saiba que precisa deles:
HostbasedAuthentication no
IgnoreRhosts yes
PermitEmptyPasswords no
Se sua organização exigir uma política personalizada de cifras, MAC ou troca de chaves, verifique o que seu servidor instalado suporta antes de alterá-lo:
sshd -T | grep -E '^(ciphers|macs|kexalgorithms) '
Em seguida, aplique apenas uma política testada que corresponda à sua base de clientes. Uma lista muito restritiva pode bloquear hosts de automação mais antigos.
6. Adicionar Limitação de Taxa com Fail2Ban
Mesmo com autenticação baseada em chave, sondagens repetidas desperdiçam recursos e poluem logs. O Fail2Ban monitora logs de autenticação e adiciona banimentos temporários no firewall após falhas repetidas.
Instale o Fail2Ban:
# Debian/Ubuntu sudo apt update && sudo apt install fail2ban # RHEL/CentOS/Fedora sudo dnf install fail2banHabilite a jaula
sshd. Muitos sistemas vêm com uma configuração padrão, mas você deve colocar substituições locais em/etc/fail2ban/jail.localou em um arquivo em/etc/fail2ban/jail.d/.[sshd] enabled = true port = 22222 maxretry = 5 bantime = 1hInicie o serviço:
sudo systemctl enable --now fail2ban
Se você alterou a porta SSH, faça a jaula do Fail2Ban corresponder à nova porta.
7. Ajustar Configurações de Sessão e Autenticação
Essas configurações ajudam a fechar sessões ociosas e remover caminhos de autenticação fracos:
| Diretiva | Valor Recomendado | Propósito |
|---|---|---|
ClientAliveInterval |
300 | Envia uma verificação de atividade do lado do servidor a cada 300 segundos. |
ClientAliveCountMax |
3 | Desconecta após três verificações sem resposta. |
UsePAM |
yes | Habilita Módulos de Autenticação Plugáveis (PAM) para políticas de segurança adicionais do sistema local. |
PermitEmptyPasswords |
no | Bloqueia contas com senhas vazias de fazer login. |
MaxAuthTries |
3 | Limita tentativas de autenticação repetidas por conexão. |
X11Forwarding |
no | Desabilita o encaminhamento X11 a menos que você realmente o use. |
Lista de Verificação de Reforço
Use esta lista de verificação para garantir que seu servidor atenda aos padrões básicos de reforço SSH:
- Faça backup do
sshd_configantes de fazer alterações. - Defina
PermitRootLogin no. - Defina
PasswordAuthentication no(após configurar a chave). - Altere a
Portpara um valor não padrão. - Atualize o firewall para permitir a nova porta.
- Use
AllowUsersouAllowGroupspara restringir o acesso. - Desabilite métodos de confiança legados, como
HostbasedAuthentication. - Instale e configure o Fail2Ban.
- Verifique a configuração com
sshd -tantes de reiniciar.
Reforçar a segurança SSH funciona melhor como defesa em camadas. Chaves impedem a adivinhação de senhas, restrições de usuário reduzem quem pode se conectar, regras de firewall limitam de onde as conexões vêm e o Fail2Ban desacelera sondagens repetidas. Mantenha uma sessão de trabalho aberta enquanto testa, depois documente a nova porta e o método de login para qualquer pessoa que opere o servidor.