Pesquisa de site

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.