Acessar servidores remotamente é uma tarefa cotidiana para profissionais de ti, e para executar esse trabalho o serviço mais usado é o ssh.
O SSH (Secure Shell) permite o acesso remoto seguro a servidores, mas por ser tão usado, ele também se torna um dos principais alvos de ataques automatizados, tentativas de força bruta e explorações maliciosas.
Se o ssh estiver mal configurado, um invasor pode ganhar acesso total ao sistema, comprometendo dados, aplicações e até outros servidores conectados à mesma rede.
Por isso, adotar boas práticas para proteger o SSH não é apenas recomendado, mas indispensável para garantir a segurança dos sistemas executados no servidor, e a seguir você aprenderá 6 dicas valiosas de segurança tornando o ssh mais seguro.
1. Alterar porta padrão do SSH
Uma das maneiras mais simples de melhorar a segurança do SSH e proteger o servidor é alterar a porta padrão do serviço. Por padrão, o SSH utiliza a porta 22/TCP, e isso é amplamente conhecido por atacantes e bots automatizados.
Grande parte dos ataques começa tentando explorar a porta padrão, realizando tentativas de login por força bruta. Ao mudar a porta para um número diferente e menos previsível, você já reduz significativamente o volume de ataques automáticos que atingem o servidor diariamente.
Para alterar a porta que o ssh receberá conexões(padrão é a 22/TCP), edite o arquivo /etc/ssh/sshd_config, substituindo ou comentando:
Port 22por:
Port 2422O exemplo acima a porta padrão foi alterada para 2422, mas você pode alterar a porta para outro número, desde que não seja uma porta usada por outro serviço. Veja as principais portas e por quais serviços são usadas.
Após salvar as alterações, reinicie o ssh:
systemctl restart ssh # comando usado no Debian/UbuntuNo RHEL/AlmaLinux ou Rocky Linux é necessário executar alguns comandos a mais antes de reiniciar o ssh.
semanage port -a -t ssh_port_t -p tcp 2422
firewalll-cmd --permanent --add-port=2422/tcp
firewalll-cmd --reload
systemctl restart sshd # comando usado no RHEL/AlmaLinux/RockyLinuxEmbora essa medida não impeça completamente um atacante experiente, ela funciona como uma primeira barreira, dificultando ataques básicos.
2. Proteger o SSH desabilitando o login do usuário root
Outra prática fundamental para proteger o SSH é desativar o login direto do usuário root. Caso tenha alguma experiência, com certeza já viu nos logs tentativas de autenticação pelo ssh usando o usuário root de endereços IP desconhecidos.
Permitir que esse usuário root se conecte diretamente via SSH aumenta o risco de comprometimento total do servidor, já que a conta de usuário root possui privilégios administrativos completos no sistema.
A abordagem mais segura é criar um a conta de usuário sem privilégios, e tentar acessar a partir dela a conta de usuário root a partir, bloqueando o acesso remoto pelo SSH do root.
Para desativar o acesso remoto do usuário root através do ssh, edite o arquivo /etc/ssh/sshd_config e inclua a seguinte linha:
PermitRootLogin noNa maioria das instalações do openssh-server essa configuração está comentada, nesse caso basta descomentar e atribuir o valor “no”. Após salvar as alterações reinicie o ssh:
systemctl restart ssh # comando usado no Debian/Ubuntu
systemctl restart sshd # comando usado no RHEL/AlmaLinuxDessa forma, mesmo que um invasor consiga acesso inicial ao sistema do servidor, ele ainda encontrará mais obstáculos antes de assumir o controle total do sistema.
3. Permitir acesso de usuários específicos
Outra medida para aumentar a segurança e proteger o ssh no servidor é permitir que somente contas de usuários específicas ou membros de grupos específicos tenham autorização para fazer acesso remoto ao servidor.
O serviço ssh permite controlar o acesso para usuários específicos através da diretiva AllowUsers
, as contas de usuário que você autorizar precisam está cadastradas no sistema.
Exemplo prático, vamos supor que você queira autorizar o acesso remoto ao servidor através do ssh somente para as contas de usuário linus e suzan, para isso edite o arquivo /etc/ssh/sshd_config e inclua a seguinte configuração:
AllowUsers linus suzanSalve as alterações e reinicie o serviço do ssh:
systemctl restart ssh # comando usado no Debian/Ubuntu
systemctl restart sshd # comando usado no RHEL/AlmaLinuxA partir desse momento somente os usuários linus e suzan(do exemplo) poderá acessar via ssh e qualquer conta de usuário que não estiver na lista da diretiva AllowUsers terá acesso negado.
Permitir acesso de grupos específicos
Para autorizar somente contas de usuários que são membros de grupos específicos use a diretiva AllowGroups. A prática recomendada, antes de alterar as configurações do serviço ssh, crie um grupo e adicione ao grupo os usuários que queira autorizar o acesso.
Por exemplo, você quer autorizar o acesso somente para quem é membro do grupo access-ssh, então primeiro crie o grupo:
groupadd access-sshAdicione os usuários que quer autorizar o acesso remoto ao servidor ao grupo, por exemplo adicione o usuário linus:
usermod -a -G access-ssh linusE por fim altere o arquivo /etc/ssh/sshd_config, comente a linha que tem a diretiva AllowUsers e inclua a seguinte configuração:
AllowGroups access-sshSalve as alterações e reinicie o serviço do ssh:
systemctl restart ssh # comando usado no Debian/Ubuntu
systemctl restart sshd # comando usado no RHEL/AlmaLinuxA partir desse momento os membros dos grupos listados na diretiva AllowGroups terão autorização para acessar remotamente o servidor através do ssh.
4. Restringir acesso por endereço IP e grupos específicos
Outra forma de controlar o acesso remoto via ssh é restringir acessos somente para membros de grupos que você quiser, mas esses membros somente podem acessar o servidor a partir de endereços IP específicos.
Para permitir que grupos específicos acessem via SSH somente a partir de um endereço IP específico, você deve combinar as diretivas Match Address e AllowGroups.
Exemplo prático, você quer que membros do grupo access-ssh somente acessem o servidor a partir do endereço IPv4 171.34.123.45, adicione no final do arquivo /etc/ssh/sshd_config a seguinte configuração:
AllowGroups disabled
Match Address 171.34.123.45
AllowGroups access-sshÉ importante você saber que o grupo chamado disabled( que não existe no sistema ), logo ninguém terá permissão de acessar. Salve as alterações e reinicie o ssh:
systemctl restart ssh # comando usado no Debian/Ubuntu
systemctl restart sshd # comando usado no RHEL/AlmaLinuxA configuração acima vai fazer o ssh autorizar acesso remoto somente para usuários membros do grupo especificado ( exemplo: access-ssh ) desde que o acesso seja feito a partir do IPv4 171.34.123.45.
5. Proteger o SSH restringindo acesso sem senhas
Autorizar acesso de usuários com senha em branco é uma das piores práticas de segurança e é fortemente recomendado que evite isso, pois é uma vulnerabilidade grave.
Para proteger o ssh contra acessos de contas de usuários que não tenham senha você pode usar a diretiva PermitEmptyPasswords, que é uma configuração do serviço SSH que controla se as contas de usuário podem fazer login com uma senha em branco.
Para desativar o acesso de usuários sem senha edite o arquivo /etc/ssh/sshd_config e adicione a seguinte configuração:
PermitEmptyPasswords noSalve as alterações e reinicie o serviço do ssh:
systemctl restart ssh # comando usado no Debian/Ubuntu
systemctl restart sshd # comando usado no RHEL/AlmaLinuxPor padrão, o ssh já desabilita o acesso de usuários sem senhas, mas é importante reforçar para que administradores de sistema verifiquem isso no arquivo de configuração.
6. Tempo limite para fazer login através do SSH
A última dica de segurança para proteger o ssh é limitar o tempo que o SSH espera para que um usuário faça login com diretiva LoginGraceTime, isso vai ajudar a prevenir contra:
- Ataques de força bruta: A configuração define um período de tolerância mais curto, minimizando a janela de oportunidade para bots automatizados tentarem continuamente senhas diferentes.
- Limita conexões não autenticadas simultâneas: Ajuda a evitar o esgotamento de recursos, limitando o número de conexões não autenticadas que podem permanecer abertas simultaneamente.
A diretiva LoginGraceTime específica o tempo máximo permitido para que um usuário se autentique com sucesso (insira suas credenciais) após estabelecer uma conexão.
Para configurar o ssh adicione ou descomente a configuração abaixo no arquivo de configuração do ssh /etc/ssh/sshd_config, ou, caso não exista inclua a configuração, o valor da diretiva é um número em segundos.
LoginGraceTime 30Após salvar o arquivo, reinicie o serviço SSH para aplicar a alteração:
systemctl restart ssh # comando usado no Debian/Ubuntu
systemctl restart sshd # comando usado no RHEL/AlmaLinuxSe o usuário não fizer login dentro desse período(no exemplo: 30 segundos), o serviço SSH desconecta a sessão.
7. Autenticação com chaves SSH
Sim, eu sei que já foram passadas 6 formas de proteger o SSH no servidor, mas, mais segurança nunca é de mais não é mesmo ?
E substituir a autenticação de senhas de usuários por autenticação que usa chaves criptográficas aumenta consideravelmente a segurança.
Conclusão
O SSH é uma ferramenta essencial para acessar e administrar servidores por meio de acessos remotos, e usá-lo corretamente pode tornar seu trabalho mais fácil e mais seguro protegendo servidores de ataques.
Comece com o básico, como alterar a porta padrão, desativar o login do usuário root e depois explore gradualmente recursos avançados.
E uma dica final é manter o sistema operacional e o serviço SSH sempre atualizados. Atualizações frequentes corrigem falhas de segurança conhecidas que podem ser exploradas por atacantes.

