Como proteger e proteger 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 tente 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 sem senha SSH

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 as senhas ou até mesmo realizar um ataque de força bruta usando ferramentas especiais de hacking e obter acesso ao seu sistema. Para estar no lado seguro, o uso de autenticação SSH sem senha é altamente encorajado.

A primeira etapa é gerar um par de chaves SSH que consiste em uma chave pública e uma chave privada. A chave privada reside em seu sistema host, enquanto a chave pública é então copiada para o servidor remoto.

Depois que a chave pública for copiada com êxito, você pode agora fazer SSH no servidor remoto perfeitamente, sem precisar fornecer uma senha.

A próxima etapa é desabilitar a autenticação de 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 'sim' para 'não'

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 de chave SSH.

2. Desative as 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 ideia muito ruim.

Para rejeitar solicitações de usuários sem uma senha, novamente, vá para o arquivo de configuração em /etc/ssh/sshd_config e certifique-se de que você tem a diretiva abaixo:

PermitEmptyPasswords no

Em seguida, reinicie o serviço SSH para que a alteração seja efetuada.

$ sudo systemctl restart sshd

3. Desativar SSH Root Logins

É óbvio o que pode acontecer se um hacker conseguir usar a força bruta da sua senha de root. Permitir o login de root remoto é invariavelmente uma má ideia, que pode colocar em risco a segurança do seu sistema.

Por esse motivo, é sempre recomendável que você desabilite o login de root remoto SSH e, em vez disso, use um usuário não root regular. Mais uma vez, vá até o arquivo de configuração e modifique esta linha como mostrado.

PermitRootLogin no

Assim que terminar, reinicie o serviço SSH para que a alteração seja efetuada.

$ sudo systemctl restart sshd

Doravante, o login de root remoto será desativado.

4. Use o protocolo SSH 2

O SSH vem em duas versões: protocolo SSH 1 e protocolo 2. O protocolo SSH 2 foi introduzido em 2006 e é mais seguro do 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 alterar 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

A partir de agora, o SSH usará o Protocolo 2 por padrão.

Para testar se o protocolo SSH 1 ainda é compatível, execute o comando:

$ ssh -1 [email protected]

Você receberá um erro que diz “Protocolo SSH v.1 não é mais suportado”.

Nesse caso, o comando foi:

$ ssh -1 [email protected]

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 protected]

5. Defina o valor ocioso do tempo limite da conexão SSH

Deixar seu PC sem supervisão por longos períodos de tempo com uma conexão SSH ociosa pode representar um risco de 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

Isso significa 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 certos usuários

Para uma camada de segurança adicional, você pode definir os usuários que requerem o protocolo SSH para fazer login e executar tarefas remotas no sistema. Isso afasta qualquer outro usuário que possa tentar entrar em 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’ tenham 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 várias tentativas malsucedidas, a conexão caia. Então, mais uma vez, vá para 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, finalmente, reinicie o serviço SSH como nos cenários anteriores.

Você também pode achar os seguintes artigos relacionados a SSH úteis:

  • How to Install OpenSSH 8.0 Server from Source in Linux
  • How to Install Fail2Ban to Protect SSH on CentOS/RHEL 8
  • How to Change SSH Port in Linux
  • How to Create SSH Tunneling or Port Forwarding in Linux
  • 4 Ways to Speed Up SSH Connections in Linux
  • How to Find All Failed SSH login Attempts in Linux
  • How to Disconnect Inactive or Idle SSH Connections in Linux

Esse foi um resumo de algumas das medidas que você pode tomar para proteger suas conexões remotas SSH. É importante adicionar que você sempre deve 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.