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.
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/Ferramenta | Pré-requisito |
---|---|
Sistema local | Windows, Linux ou macOS |
Sistema remoto | Linux |
Ferramenta local | Um cliente SSH qualquer (ou o próprio terminal, no Linux ou Mac) |
Ferramenta remota | Servidor 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.
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á:
- Abrir o arquivo
sshd_config
; E
ditar as configurações necessárias, de acordo com este guia;- Salvar as modificações realizadas;
- Fechar o arquivo de configuração;
- 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.
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!
0 comentários