Segurança do SSH: 7 dicas para proteger seu servidor Linux

por | 23/03/2023 | Segurança

Quem administra um servidor deve obrigatoriamente seguir várias boas práticas de segurança. Podemos até mesmo dizer, nesse sentido, que a segurança do SSH vem em primeiro lugar.

Isto porque o shell seguro é amplamente utilizado no acesso a servidores remotos, funcionando de certa forma como a “porta de entrada” da máquina.

Os administradores se conectam a servidores SSH instalados nas máquinas remotas, e assim realizam as mais diversas tarefas em suas rotinas diárias.

Ubuntu, Debian, Arch Linux e CentOS são apenas algumas dentre várias distros largamente utilizadas em servidores. Porém, todas elas possuem um ponto em comum: o uso do SSH.

Segurança do SSH

Em todas estas distribuições, é claro, é possível instalar, configurar e utilizar o OpenSSH, e assim administrar a máquina em questão totalmente e de forma remota.

Através deste guia você conhecerá um pouco mais a respeito do SSH (ou Secure Shell). Além disso, você também conhecerá alguns procedimentos de fácil execução e capazes de reforçar a segurança do SSH.

Caso você queira saber agora mesmo um pouco mais a respeito do Secure Shell, dê uma olhada neste outro artigo, aqui mesmo no TecLinux.

Pré-requisitos

Em primeiro lugar, vamos a alguns pré-requisitos básicos para que você possa prosseguir neste tutorial:

Sistema/FerramentaPré-requisito
Sistema localWindows, Linux ou macOS
Sistema remotoLinux
Ferramenta localUm cliente SSH qualquer (ou o próprio terminal, no Linux ou Mac)
Ferramenta remotaServidor OpenSSH

Por que aumentar a Segurança do SSH?

O SSH é a “porta de entrada” do seu servidor Linux. É através dele que você se conecta na máquina, a fim de realizar as mais diversas tarefas administrativas.

Conectado no servidor via SSH, você instala e desinstala software, consulta logs, reinicia a máquina, etc. É fácil perceber, portanto, que qualquer acesso indevido, neste ponto, pode comprometer bastante a segurança do ambiente.

Um acesso indevido ao servidor é capaz de causar sérios danos a um website, a uma empresa, a um indivíduo. E assim por diante.

Os cibercriminosos estão sempre em busca de “portas abertas”, a fim de ganharem acesso às máquinas e, assim, perpetrarem os mais variados crimes.

Cybercrime
Aprenda a minimizar os riscos no seu servidor

Garantir que apenas o pessoal autorizado seja capaz de acessar o servidor SSH é imprescindível. Você também deve se assegurar de que quaisquer eventuais vulnerabilidades foram corrigidas.

Dentre tais “vulnerabilidades”, podemos mencionar, por exemplo, a permissão de login mediante uso do usuário root, a permissão de logins baseados meramente em senhas, etc.

Mas não se preocupe: abaixo você encontrará uma série de procedimentos capazes de reforçar a segurança do seu servidor Linux. E, para melhorar ainda mais as coisas, vale lembrar que todos eles são de fácil execução.

Entendendo melhor as conexões SSH a servidores

Basicamente, servidores Linux contam com um servidor OpenSSH (desenvolvido pelo The OpenBSD Project) instalado. Há também um daemon SSH em execução (o sshd, por exemplo), em constante espera por novos pedidos de conexões.

Para se conectar a estas máquinas de forma remota, você deve utilizar um cliente SSH qualquer (há o PuTTY, por exemplo, que inclusive roda no Windows).

Porém, a ferramenta mais utilizada, principalmente entre os usuários de sistemas derivados do Unix, é o cliente OpenSSH. Na verdade, aqui estamos tratando especificamente do comando ssh.

Quando você digita no shell o comando ssh usuário@IP_do_Servidor, por exemplo, você está na verdade utilizando um cliente SSH. Mais especificamente, o cliente OpenSSH (também desenvolvido pelo Projeto OpenBSD).

Tente executar o comando abaixo no seu terminal, para obter maiores informações a respeito do comando/cliente:

man ssh

Como seu próprio nome deixa bem claro, o Secure Shell permite tráfego de dados de forma segura, através do emprego de criptografia. Entretanto, nem de longe é seguro utilizá-lo com as suas opções de configuração padrão.

Isto porque elas não são infalíveis, é claro, e também abrem espaço, muitas vezes, para que indivíduos mal intencionados executem ações quase sempre extremamente danosas.

Ou seja, à maior segurança proporcionada pelo protocolo em si (sim, também trata-se de um protocolo), é essencial adicionar camadas extras de proteção, para evitar contratempos.

Acontece que existem alguns riscos envolvidos. Bem, tais riscos existem pelo menos nos casos em que o administrador não tomou as devidas precauções.

Você não deve permitir logins baseados apenas em senhas, por exemplo, nem tampouco continuar utilizando a porta padrão do SSH (a porta 22). Tudo isto funciona como uma espécie de “receita para o desastre”.

Proteger o SSH, tanto local quanto remotamente, é essencial para garantir até mesmo a continuidade de suas preciosas informações. Fechar (ou controlar) o máximo de “portas” possíveis, nesse sentido, é crucial.

Editando o arquivo sshd_config e reiniciando o SSH

Os procedimentos abaixo requerem alterações no arquivo sshd_config. Geralmente, você o encontra no diretório /etc/ssh.

Porém, caso você não o encontre neste diretório, é também possível realizar uma busca no sistema, através do seguinte comando:

sudo find / -name sshd_config

Neste tutorial vamos assumir que estamos trabalhando com o diretório acima descrito. Portanto, para editar o arquivo de configuração, utilize o comando abaixo:

sudo nano /etc/ssh/sshd_config

Os procedimentos descritos neste tópico são necessários e devem ser executados sempre que qualquer uma das modificações abaixo sugeridas for executada.

Ou seja, você deverá:

  1. Abrir o arquivo sshd_config;
  2. Editar as configurações necessárias, de acordo com este guia;
  3. Salvar as modificações realizadas;
  4. Fechar o arquivo de configuração;
  5. Reiniciar o SSH.

Seguem abaixo alguns atalhos úteis relativos ao editor nano (utilizado neste guia):

  • CTRL + O: salva as modificações;
  • CTRL + W: faz uma busca no arquivo (pelo termo que você digitar);
  • CTRL + X: fecha o arquivo (também exibe o prompt para salvar, caso alguma modificação no arquivo tenha sido feita – responda com “N = Não” ou “Y = Sim”) .

Obviamente, o nano conta com mais atalhos de teclado. Porém, os atalhos mencionados acima são suficientes, dentro do escopo deste tutorial.

É importante também reiniciar o serviço sshd sempre que uma alteração for realizada no arquivo de configuração.

Para reiniciá-lo (e também assumindo aqui que você está em posse de uma distro que faz uso do systemd), use o comando abaixo:

sudo systemctl restart sshd

Obs: é claro que você pode implementar todas as dicas que julgar necessárias, inserindo todas as alterações no arquivo de uma única vez, salvando-o também apenas uma vez e reiniciando o sshd no final de tudo.

Obs importantíssima: você deve remover o símbolo # sempre que uma linha editada o contiver no início. Ou seja, fazendo assim a linha deixa de ser um comentário e será então considerada.

Aumentando a segurança do SSH

Antes de mais nada, é importante que você tenha em mente que as dicas abaixo são bastante úteis e capazes de aumentar a segurança de servidores Linux em uma grande variedade de situações.

Entretanto, é também importante que você leia com atenção cada um dos procedimentos, entenda o que cada um representa e então decida se irá ou não adotá-los.

Isto porque cada caso é um caso. Ambientes diferentes podem possuir necessidades diferentes, bem como estarem sujeitos a riscos diferentes.

Além disso, determinadas dicas/alterações podem acabar se sobrepondo a outras, ou até mesmo serem totalmente incompatíveis entre si.

Portanto, faça os devidos testes, nunca se esqueça dos backups, e implemente apenas as modificações que fizerem sentido para você. Claro, se todas elas se ajustarem às suas necessidades, tudo bem, também.

Como alterar a porta padrão do SSH

A porta 22 é usada como padrão para conexões através do SSH. Dessa forma, ela também acaba sendo alvo de inúmeros ataques automatizados, o que pode resultar inclusive no aumento da carga no servidor.

Grande parte das tentativas de ataques ao SSH focam nesta porta, razão pela qual é importantíssimo alterá-la assim que a configuração inicial do servidor for iniciada.

Ou seja, “sair do radar” dos cibercriminosos é essencial. Assim, dê uma olhada neste guia completo para a alteração da porta SSH. Leia-o com calma, implemente o procedimento assim que possível, e retorne então a este tutorial.

Como desativar logins do usuário root pelo SSH

Impedir logins do usuário root através do secure shell é outra medida importante para aumentar a segurança do SSH.

Os criminosos podem fazer uso de ataques de força bruta, por exemplo, visando tal usuário. Uma vez obtido tal acesso, os estragos podem ser enormes.

Dessa forma, é crucial que você impeça os logins do usuário root através do SSH. Opte por um usuário normal em conjunto com o comando sudo sempre que for necessário executar tarefas como superusuário.

Vamos agora realizar a configuração necessária. Abra o arquivo sshd_config (veja mais detalhes acima) e localize a seguinte linha:

PermitRootLogin yes

Altere-a, agora, para:

PermitRootLogin no

Finalmente, basta salvar as modificações, fechar o arquivo e reiniciar o sshd (confira mais detalhes acima). Pronto! Você acaba de aprimorar a segurança do SSH.

Obs: de agora em diante, deixarei de mencionar instruções relativas ao ato de salvar o arquivo de configuração e reiniciar o SSH, uma vez que trata-se de tarefas repetitivas e você encontra as instruções necessárias logo mais acima.

Desabilitar logins baseados em senha

Em primeiro lugar, é importante ressaltar que antes de realizar este procedimento você deve configurar o acesso mediante chaves SSH.

Este método é também um excelente modo de evitar ataques de força bruta. Basicamente, você irá trabalhar com uma chave pública e uma chave privada, e não mais utilizando uma senha.

Login

A chave pública deve existir no servidor remoto, e a chave privada permanece na sua máquina local (mantenha-a em segurança). Assim, no momento de um novo pedido de conexão, o servidor faz as verificações necessárias e libera ou não o acesso.

Para desabilitar os logins baseados em senha no seu servidor e aumentar ainda mais a segurança do SSH, localize, no arquivo sshd_config, a linha abaixo:

PasswordAuthentication yes

E altere-a para:

PasswordAuthentication no

Maior segurança do SSH através de um limite de tentativas de autenticação

Você também pode definir o número máximo de tentativas de autenticação. Para isto, localize a diretiva MaxAuthTries e defina um valor para a mesma, com base em sua própria análise de risco.

Por exemplo, você pode definir o valor “3” (três tentativas sucessivas, no máximo), da seguinte forma:

MaxAuthTries 3

Como não permitir conexões sem senha

Infelizmente, também é possível que administradores criem contas de usuários sem o uso de uma senha. Neste caso, tais usuários podem inclusive se conectarem através do SSH.

Perceba que os riscos são bem grandes, aqui, e mais uma vez vale o alerta: leia tudo com atenção e decida quais dicas/procedimentos funcionam para você.

De qualquer forma, para desativar totalmente o login de usuários que não possuam uma senha, faça a alteração abaixo.

Certifique-se de que a diretiva PermitEmptyPasswords não faz parte de um comentário (remova o símbolo #, caso ele exista), e que ela esteja exatamente conforme abaixo:

PermitEmptyPasswords no

Como permitir acesso SSH apenas para alguns usuários

Outro modo de reforçar a segurança do SSH é especificando no arquivo de configuração os usuários que podem fazer uso do shell seguro.

Este procedimento é também muito útil no caso de existirem diversos usuários que trabalham no servidor. É possível liberar o acesso apenas àqueles que realmente precisam utilizar o protocolo.

Para isto, localize (ou adicione) a diretiva AllowUsers e informe apenas os usuários que devem acessar o SSH, separados por um espaço.

Por exemplo:

AllowUsers usuário1 usuário2 usuário3

Vale lembrar que a diretiva AllowUsers também permite que você informe endereços IP. É possível, por exemplo, restringir o acesso a um determinado intervalo de IPs.

Existem inclusive outras opções. Porém, conforme o escopo deste guia, acredito que o uso acima está bem alinhado e totalmente dentro da ideia a respeito de procedimentos de fácil execução.

Maior segurança do SSH mediante desativação do encaminhamento X11

O encaminhamento X11, ou X11 forwarding, permite o uso de um aplicativo instalado no servidor remoto através de uma GUI (Graphical User Interface, ou Interface Gráfica do Usuário) exibida na máquina cliente.

Trata-se de algo não totalmente focado na segurança, e a recomendação geral é desativar tal recurso, principalmente se você não estiver utilizando-o (e muito provavelmente você não irá).

Portanto, localize a linha abaixo no seu arquivo sshd_config:

X11Forwarding yes

Altere-a para:

X11Forwarding no

Conclusão

Através deste guia você pôde conhecer e implementar várias medidas para aumentar a segurança do SSH no seu servidor Linux.

Como você pôde também perceber, todos os procedimentos são de fácil execução, e não requerem nada mais do que simples edições em um único arquivo seguidas de um comando para reiniciar o SSH.

Finalmente, vale mencionar que estes não são os únicos métodos voltados à segurança de um servidor Linux nem tampouco de um servidor OpenSSH.

Como eu sempre digo, segurança nunca é demais. Não se esqueça também de manter seu servidor sempre atualizado, e isto inclui tanto atualizações relativas ao sistema operacional quanto atualizações dos softwares instalados, incluindo o SSH.

Até a próxima!

Compartilhe este conteúdo:

<a href="https://teclinux.com/author/marcos-zy/" target="_self">Marcos A.T. Silva</a>

Marcos A.T. Silva

Apaixonado por tecnologia desde tenra idade, trabalha com TI há mais de 20 anos. Tem no rock and roll (em suas mais variadas vertentes) uma válvula de escape, e adora escrever guias e tutoriais, além de ser um grande entusiasta do Linux e do software livre.

0 comentários

Enviar um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Pin It on Pinterest

Share This

Compartilhe

Compartilhe este post com seus amigos!