Como proteger e fortalecer o servidor OpenSSH
Quando se trata de acessar dispositivos remotos, como servidores, roteadores e switches, o protocolo SSH é altamente recomendado devido à sua capacidade de criptografar o tráfego e afastar qualquer pessoa que possa tentar espionar suas conexões.
Seja como for, as configurações padrão do SSH não são infalíveis e ajustes adicionais são necessários para tornar o protocolo mais seguro. Neste guia, exploramos diferentes maneiras que você pode usar para proteger e fortalecer a instalação do OpenSSH no servidor.
1. Configure a autenticação SSH sem senha
Por padrão, o SSH exige que os usuários forneçam suas senhas ao fazer login. Mas o problema é o seguinte: os hackers podem adivinhar senhas ou até mesmo realizar um ataque de força bruta usando ferramentas especiais de hacking e obter acesso ao seu sistema. Por segurança, o uso da autenticação SSH sem senha é altamente incentivado.
O primeiro passo é gerar um par de chaves SSH que consiste em uma chave pública e uma chave privada. A chave privada reside no seu sistema host enquanto a chave pública é então copiada para o servidor remoto.
Depois que a chave pública for copiada com sucesso, você poderá fazer login via SSH no servidor remoto sem problemas, sem precisar fornecer uma senha.
A próxima etapa é desabilitar a autenticação por senha. Para fazer isso, você precisa modificar o arquivo de configuração SSH.
sudo vim /etc/ssh/sshd_config
Dentro do arquivo de configuração, role e localize a seguinte diretiva. Remova o comentário e altere a opção 'yes'
para 'no'
PasswordAuthentication no
Em seguida, reinicie o daemon SSH.
sudo systemctl restart sshd
Neste ponto, você só terá acesso ao servidor remoto usando a autenticação da chave SSH.
2. Desative solicitações de conexão sem senha SSH do usuário
Outra forma recomendada de fortalecer a segurança do seu servidor é desabilitar logins SSH de usuários sem senha. Isso parece um pouco estranho, mas às vezes os administradores de sistema podem criar contas de usuário e esquecer de atribuir senhas – o que é uma péssima ideia.
Para rejeitar solicitações de usuários sem senha, acesse novamente o arquivo de configuração em /etc/ssh/sshd_config
e certifique-se de ter a diretiva abaixo:
PermitEmptyPasswords no
Em seguida, reinicie o serviço SSH para que a alteração seja efetuada.
sudo systemctl restart sshd
3. Desative logins raiz SSH
É óbvio o que pode acontecer se um hacker conseguir forçar sua senha de root com força bruta. Permitir login root remoto é invariavelmente uma má ideia que pode comprometer a segurança do seu sistema.
Por esse motivo, é sempre recomendável que você desative o login root remoto SSH e, em vez disso, use um usuário normal não root. Mais uma vez, vá até o arquivo de configuração e modifique esta linha conforme mostrado.
PermitRootLogin no
Quando terminar, reinicie o serviço SSH para que a alteração seja efetuada.
sudo systemctl restart sshd
Doravante, o login root remoto será desativado.
4. Use o protocolo SSH 2
O SSH vem em duas versões: protocolo 1 SSH e protocolo 2. O protocolo 2 SSH foi introduzido em 2006 e é mais seguro que o protocolo 1 graças às suas fortes verificações criptográficas, criptografia em massa e algoritmos robustos.
Por padrão, o SSH usa o protocolo 1. Para mudar para o Protocolo 2 mais seguro, adicione a linha abaixo ao arquivo de configuração:
Protocol 2
Como sempre, reinicie o SSH para que as alterações tenham efeito.
sudo systemctl restart sshd
Daqui para frente, o SSH usará o Protocolo 2 por padrão.
Para testar se o protocolo 1 SSH é mais suportado, execute o comando:
ssh -1 user@remote-IP
Você receberá um erro que diz “O protocolo SSH v.1 não é mais suportado”.
Neste caso o comando foi:
ssh -1 [email
Além disso, você pode simplesmente especificar a tag -2
apenas para ter certeza de que o Protocolo 2 é o protocolo padrão em uso.
ssh -2 [email
5. Defina o valor ocioso do tempo limite da conexão SSH
Deixar seu PC sem supervisão por longos períodos com uma conexão SSH ociosa pode representar um risco à segurança. Alguém pode simplesmente passar e assumir sua sessão SSH e fazer o que quiser. Para resolver o problema, é prudente, portanto, definir um limite de tempo limite de inatividade que, quando excedido, a sessão SSH será encerrada.
Mais uma vez, abra seu arquivo de configuração SSH e localize a diretiva “ClientAliveInterval”. Atribua um valor razoável, por exemplo, defini o limite para 180 segundos.
ClientAliveInterval 180
Isto implica que a sessão SSH será interrompida se nenhuma atividade for registrada após 3 minutos, o que equivale a 180 segundos.
Em seguida, reinicie o daemon SSH para efetuar as alterações feitas.
sudo systemctl restart sshd
6. Limite o acesso SSH a determinados usuários
Para uma camada de segurança adicional, você pode definir os usuários que necessitam do protocolo SSH para efetuar login e executar tarefas remotas no sistema. Isso impede qualquer outro usuário que possa tentar entrar no seu sistema sem a sua aprovação.
Como sempre, abra o arquivo de configuração e anexe a diretiva “AllowUsers” seguida dos nomes dos usuários que você deseja conceder. No exemplo abaixo, permiti que os usuários ‘tecmint‘ e ‘james‘ tivessem acesso remoto ao sistema via SSH. Qualquer outro usuário que tentar obter acesso remoto será bloqueado.
AllowUsers tecmint james
Depois disso, reinicie o SSH para que as alterações persistam.
sudo systemctl restart sshd
7. Configure um limite para tentativas de senha
Outra maneira de adicionar uma camada de segurança é limitar o número de tentativas de login SSH de forma que, após uma série de tentativas fracassadas, a conexão caia. Então, mais uma vez, vá até o arquivo de configuração e localize a diretiva “MaxAuthTries” e defina um valor para o número máximo de tentativas.
Neste exemplo, o limite foi definido para 3 tentativas conforme mostrado.
MaxAuthTries 3
E por fim, reinicie o serviço SSH como nos cenários anteriores.
Você também pode achar úteis estes seguintes artigos relacionados ao SSH:
- Como instalar o servidor OpenSSH 8.0 da fonte no Linux
- Como instalar Fail2Ban para proteger SSH no CentOS/RHEL 8
- Como alterar a porta SSH no Linux
- Como criar túnel SSH ou encaminhamento de porta no Linux
- 4 maneiras de acelerar conexões SSH no Linux
- Como encontrar todas as tentativas de login SSH com falha no Linux
- Como desconectar conexões SSH inativas ou ociosas no Linux
Conclusão
Este foi um resumo de algumas das medidas que você pode tomar para proteger suas conexões remotas SSH. É importante acrescentar que você deve sempre atribuir senhas fortes aos usuários com acesso remoto para impedir ataques de força bruta. Esperamos que você tenha achado este guia esclarecedor. Seu feedback é muito bem-vindo.