5 práticas para manter seguro o SSH do Linux

Introdução

Minimizar vulnerabilidades no seu protocolo Secure Shell (SSH) é essencial para garantir a segurança do seu ambiente Linux.

Neste artigo, abordamos as medidas de segurança SSH mais comuns do Linux que você pode adotar para tornar seus servidores mais seguros. Alterando a porta SSH padrão, usando pares de chaves e seguindo as outras práticas recomendadas, você pode melhorar significativamente a segurança geral do seu sistema.

O que é SSH?

protocolo Secure Shell (SSH) permite administração remota de sistema protegida por criptografia e transferências de arquivos em redes inseguras. Usando vários métodos de criptografia, o SSH protege a conexão entre um cliente e um servidor, protegendo os comandos, a autenticação e a saída dos usuários contra acesso e ataques não autorizados.

O protocolo SSH agora é amplamente utilizado em data centers e por quase todas as grandes empresas em execução em qualquer uma das variantes do UNIX.

Quando se trata de medidas de segurança, é essencial combiná-las, aplicá-las em camadas e não escolher apenas uma e confiar apenas nessa solução.

Leia Mais:

Alterando a porta padrão do Remote Desktop 3389
A importância da auditoria de email
Ativando o Protocolo RDP via Powershell
Como instalar o FileZilla no Linux manualmente
Segurança de dispositivos: como protegê-los adequadamente?

1. Altere a porta SSH padrão

O uso de uma porta não padrão para conexão SSH ajuda a evitar ataques automatizados no seu servidor. Também ajuda a reduzir as chances de aparecer no radar de um hacker e o torna um alvo menos óbvio.

Nota : A maioria dos hackers que procuram servidores OpenSSH visará a porta SSH padrão 22.

Nesse caso, os scripts que eles estão usando procurarão endereços IP apenas na porta 22. Se o servidor se enquadrar nesse grupo, todos os ataques automatizados afetarão seus arquivos de log. Conseqüentemente, a carga no servidor pode aumentar substancialmente, pois muitas explorações do servidor SSH estão sendo executadas 24 horas por dia, batendo na porta de todos os servidores.

É importante observar que alterar a porta SSH padrão não melhora a segurança do seu servidor. No entanto, ajuda a evitar ataques automatizados.

Como alterar o número da porta

Antes de começar, você precisa decidir qual porta usará em vez da porta padrão 22. Antes de tomar uma decisão, considere algumas coisas:

Para alterar a porta no seu servidor Linux , siga estas etapas:

1. Conecte-se ao servidor via SSH como faria normalmente.
2. Alterne para o usuário root usando o comando su , que solicitará a inserção da senha do servidor.
3. Use um editor de texto de sua escolha para editar o arquivo de configuração sshd localizado no etc/ssh/ diretório Se você nunca usou um editor de texto dentro do terminal, é recomendável usar o Nano . Caso contrário, use vi ou vim, pois são os editores mais usados ​​atualmente. Aconselhamos que você faça backup do arquivo original antes de fazer alterações.
4. Execute este comando para editar o arquivo de configuração:

nano /etc/ssh/sshd_config

5. Na saída do arquivo sshd_config, localize a linha que diz ” Port 22.”

editando o arquivo de configuração sshd

6. Altere o número da porta para o valor de sua escolha. Verifique se não há ” #” no início da linha.
7. Saia do editor e confirme que deseja salvar as alterações.
8. Para que as alterações entrem em vigor, reinicie o serviço sshd com este comando:

service sshd restart

9. Verifique se o SSH está atendendo na porta que você especificou, conectando-se a ela.

Observe que agora você precisará especificar a porta ao se conectar, pois seu cliente sempre usará a porta SSH padrão, a menos que seja dito o contrário.

#DicaProfissa: Que tal você ter mais segurança no seu trabalho?
Garanta um serviço profissional ao realizar um dos cursos de TI e Software da plataforma de estudos online Udemy.
Acesse aqui e saiba mais!

Benefícios

Embora o procedimento para alterar a porta SSH padrão não aumente o nível de segurança em si, ele tira o radar das varreduras mais comuns. Uma maneira fácil de testar isso é deixar o servidor funcionar por alguns dias com o sshd escutando na porta padrão e depois alterá-la para uma não-padrão. Compare o número de logins com falha no seu servidor e você verá uma redução substancial.

Usando uma porta não padrão para SSH:

  • Você evita ser visto por verificações aleatórias.
  • É mais difícil encontrar o seu servidor. A maioria dos ataques varrerá a porta padrão ou algumas variantes dela, mas continuará assim que a conexão for recusada.
  • O daemon SSH pode fazer uma pausa, pois não receberá solicitações de conexão de ataques com script. A carga do servidor é reduzida e o arquivo de log permanece limpo, economizando seu tempo para revisá-lo.
  • Você não recebe tantos alertas por falhas de logon. Se você estiver usando uma porta não padrão e alguém ainda tentar acessar o servidor, isso provavelmente significa que o servidor está sendo direcionado especificamente e que o alarme não vem de um ataque com script.
  • Você está menos exposto a ser invadido devido a erros nas chaves privadas sshd ou fracas.
  • A maioria dos hackers será repelida se perceber que você não está usando a porta padrão. Será um sinal de que o servidor está adequadamente protegido e que provavelmente também existem outras medidas de segurança, tornando o servidor um alvo indesejável.

Desvantagens

Há algumas precauções a serem lembradas antes de você decidir alterar a porta padrão do SSH. As desvantagens de executar uma porta não padrão podem significar que:

  • Qualquer pessoa que consiga se conectar ao seu servidor precisará ser informada da alteração e terá que começar a usar a nova porta.
  • Se você estiver usando o monitoramento terceirizado para o servidor, também precisará conscientizá-los da alteração. Caso contrário, eles podem tratar isso como uma ameaça potencial que pode levar ao tempo de inatividade do servidor.
  • As regras de firewall relacionadas ao serviço SSH devem ser inspecionadas e modificadas de acordo com as alterações feitas.

Algumas dessas desvantagens provavelmente não se aplicarão ao seu caso de uso, mas devem ser levadas em consideração. Os benefícios da alteração da porta superam as desvantagens e provam ser uma boa camada adicional de segurança para o seu servidor.

2. Aprimore a segurança SSH do Linux usando pares de chaves

Um dos métodos mais seguros para autenticar clientes em servidores é usar pares de chaves SSH . Senhas fortes podem ser suficientes para manter seu servidor seguro, mas ataques persistentes de força bruta ainda podem decifrá-las. É por isso que você precisa de reforço adicional de SSH com pares de chaves.

As chaves SSH são resistentes a esses ataques e são praticamente impossíveis de descriptografar. Um par de chaves SSH consiste em duas longas séries de caracteres, uma chave privada que é mantida em segredo e uma chave pública que pode ser compartilhada com segurança. Seu objetivo é semelhante às senhas e permite que você estabeleça automaticamente uma sessão SSH sem a necessidade de digitar uma senha.

Como gerar um par de chaves

Para configurar chaves SSH , você precisará gerar um par de chaves no computador cliente que será usado para conectar-se ao servidor. Para fazer isso:

1. Inicie o terminal e execute o utilitário keygen SSH , disponível com a ferramenta OpenSSH padrão.

ssh-keygen –t rsa

2. Você receberá a mensagem ” Gerando par de chaves RSA público / privado”. Se você deseja salvar a chave no local padrão, pressione Enterquando solicitado. A chave será salva no diretório do usuário doméstico, no ~/.sshdiretório Para alterar a localização, basta digitar o novo caminho. A recomendação é manter o local padrão, para que você não precise fazer alterações no seu cliente SSH. A chave privada ou de identificação será salva como id_rsae a chave pública correspondente como id_rsa.pub.
3. Opcionalmente, você pode inserir uma senha . Se você não deseja usar um, pressione Enterpara continuar. A senha fornece uma camada adicional de segurança, criptografando a chave privada na máquina local. Para decifrar a senha, um hacker precisará primeiro acessar o sistema, pois a chave privada não está exposta na rede. Mesmo assim, levará tempo para ser bem-sucedido, permitindo que você altere a chave usada antes que o hacker obtenha acesso a outros servidores. A desvantagem é que você precisará inseri-lo toda vez que tentar se conectar usando essa chave.

O processo de geração de um par de chaves está completo.

A tela final será semelhante a esta:

ssh-keygen -t rsa

Generating public/private rsa key pair.

Enter file in which to save the key (/home/demo/.ssh/id_rsa):

Enter passphrase (empty for no passphrase):

Enter same passphrase again:

Your identification has been saved in /home/demo/.ssh/id_rsa.

Your public key has been saved in /home/demo/.ssh/id_rsa.pub.

The key fingerprint is:

8b:cd:0b:f7:38:4a:3f:ed:24:18:8d:54:34:2c:63:56 [email protected]

The key's randomart image is:

+--[ RSA 2048]----+

| ..o. |

| . E.o |

| + . o |

| . = = . |

| ..S |

| = + = + |

| . o + o . |

| . + + o |

| .. |

| |

+-----------------+

Nota: Você pode tornar a autenticação / autorização ainda mais segura criando chaves maiores de 4096 bits em vez dos 2048 bits padrão. Para fazer isso, acrescente –b 4096ao ssh-keygencomando. Isso parecerá assim:

ssh-keygen -t rsa -b 4096

#DicaProfissa: Que tal você ter mais segurança no seu trabalho?
Garanta um serviço profissional ao realizar um dos cursos de TI e Software da plataforma de estudos online Udemy.
Acesse aqui e saiba mais!

Copiando uma chave pública

Para usar o par de chaves que você criou em sua máquina para autenticação SSH, é necessário colocar a chave pública no servidor desejado. A maneira mais simples de fazer isso é usar a ferramenta disponível no OpenSSH:

ssh-copy-id

O procedimento é fácil:

1. Digite ssh-copy-id [email protected]_host_address.
2. Se você estiver se conectando pela primeira vez a este host, receberá uma mensagem de autenticidade. Digite Yespara continuar.
3. Digite sua senha quando solicitado, e a ferramenta copiará o conteúdo da ~/.ssh/ id_rsa.pub chave para o authorized_keysarquivo no ~/.sshdiretório inicial do servidor.

Nota: Nenhum caractere será visível enquanto você digita a senha por motivos de segurança.

4. Você receberá uma mensagem:

Sua chave pública foi colocada no servidor remoto e agora você pode fazer login sem inserir a senha da conta.

5. Para testar se a autenticação com as chaves está funcionando, conecte-se ao seu servidor com ssh [email protected]_host_address. Se for bem-sucedido, você efetuará login automaticamente. Caso tenha configurado uma frase-senha anteriormente, será necessário inseri-la primeiro antes de obter acesso ao servidor.

Como funcionam as chaves

Essencialmente, uma chave pública não é uma chave. Ele se comporta como um cadeado que você pode colocar em uma conta SSH em outra máquina. Quando você executa o utilitário ‘ssh-keygen’, gera o cadeado e a chave que o abre id_rsa.pube , id_rsa respectivamente.

Você pode fazer quantas cópias do cadeado forem necessárias, distribuí-las para qualquer servidor que desejar e somente você terá a chave certa para desbloquear todas elas. É por isso que é importante manter a chave privada segura, pois ela desbloqueia todas as cópias dos cadeados que você distribuiu.

Não importa onde você coloca sua chave pública, desde que a chave mestra não seja comprometida. Como ninguém mais possui a chave privada, esse método de autorização e autenticação é provavelmente o mais seguro e altamente recomendado.

3. Desabilite o login raiz do servidor SSH

As distribuições de servidor Linux têm acesso root externo ativado por padrão. Isso pode ser uma ameaça grave à segurança, pois os hackers podem tentar decifrar a senha com ataques de força bruta. É recomendável desativar o login root e usar uma conta regular e um comando para alternar para o usuário root. su – comando para alternar para o usuário root.

Antes de desativar o logon root, adicione uma conta que possa obter acesso root. Para fazer isso, siga as etapas abaixo:

1. Use SSH para efetuar login no servidor como root.
2. Use um editor de texto para abrir o arquivo de configuração principal. Desta vez, usaremos o editor vi .

vi /etc/ssh/sshd_config

3. Encontre a linha que diz “ PermitRootLogin_yes e mude para PermitRootLogin_no. Pode ser necessário rolar algumas linhas para baixo para encontrá-lo.
4. É importante adicionar a conta de usuário que você usará para fazer login. Basta adicionar outra linha com o nome de usuário em questão:AllowUsers your_username_here
5. Salve as alterações feitas e saia do editor de texto.
6. Reinicie o serviço SSH, mas ainda não feche a sessão raiz. Para Ubuntu / Debian use sudo service ssh restarte para Fedora / CentOS use o service ssh restart comando
7. Abra uma nova janela do terminal e verifique se agora você pode efetuar login como o usuário que você adicionou. Depois de confirmar que funciona, saia da sessão raiz ativa.

4. Desabilite logons baseados em senha no servidor

Se você estiver usando chaves SSH para autenticação SSH, poderá desativar completamente a autenticação de senha do servidor. Essa é outra maneira de manter seu servidor seguro contra ataques de força bruta e tentativas de decifrar sua senha. Antes de prosseguir, verifique se a autenticação baseada em chave SSH está funcionando para a conta raiz no servidor ou para uma conta com acesso sudo .

Quando estiver pronto, execute estas etapas:

1. Use as chaves SSH para efetuar login no servidor como root ou com privilégios de sudo.
2. Use um editor de texto para abrir o arquivo sshd_config . Vamos usar o vi:

vi /etc/ssh/sshd_config

3. Procure a linha que diz PasswordAuthenticatione mude para PasswordAuthentication_no. Certifique-se de remover o comentário da linha, se #houver.
4. Salve as alterações feitas e saia do editor de texto.
5. Reinicie o serviço SSH para aplicar as alterações. Para Ubuntu / Debian use sudo service ssh restart e para Fedora / CentOS use o service ssh restartcomando

Parabéns, você desativou com êxito a opção de efetuar login através do SSH usando senhas da conta. O SSH Daemon simplesmente ignorará quaisquer solicitações de autenticação que não incluam pares de chaves públicas / privadas.

#DicaProfissa: Que tal você ter mais segurança no seu trabalho?
Garanta um serviço profissional ao realizar um dos cursos de TI e Software da plataforma de estudos online Udemy.
Acesse aqui e saiba mais!

5. Restrinja o acesso SSH usando o iptables

Iptables é um utilitário Linux usado para configurar regras de firewall e monitorar / filtrar o tráfego de entrada e saída no seu servidor. Ele está incluído por padrão na maioria das distribuições Linux.

Com o iptables, você pode definir regras que limitam ou permitem o tráfego para diferentes tipos de serviços por endereço IP, porta ou protocolo de rede e, assim, melhoram substancialmente a segurança do seu servidor. No nosso caso, definiremos regras de firewall para restringir o tráfego SSH de entrada para todos, exceto um endereço IP ou sub-rede.

Dessa forma, o bloqueio da porta 22 não apenas interrompe o acesso não autorizado aos seus servidores, mas também pode interromper ou impedir ataques DDoS .

Ao executar esta etapa, certifique-se de não se bloquear bloqueando completamente o tráfego SSH. Você precisará usar apenas alguns comandos para permitir um endereço IP ou sub-rede específico para as conexões SSH recebidas.

Nota : Os comandos diferenciam maiúsculas de minúsculas.

1. Esta regra incluirá na lista branca o endereço IP digitado. Substitua o exemplo de IP no comando pelo seu IP. Você também pode usar uma sub-rede, por exemplo, 10.10.10.0/24.

sudo iptables -A INPUT -p tcp -s 123.456.78.90 –dport 22 -j ACCEPT

2. Você precisa salvar as regras para não perdê-las após a reinicialização:

sudo iptables-save

Se você deseja visualizar a lista de todas as regras do iptables, pode usar o comando Para incluir mais detalhes, como informações sobre pacotes, bytes e destino, acrescente ao comando acima. Adicione a tudo isso e a saída será exibida em formato numérico.iptables–L –v -n

Caso deseje redefinir todas as regras e começar a limpeza, use o comando flush Isso limpará a configuração do iptables, o que é útil se você não tiver certeza se tudo está configurado como você deseja.iptables –F

Parâmetros de Iptables e Definições de Opções

Aqui estão algumas explicações para os parâmetros do iptables, opções e valores usados ​​nos exemplos acima, bem como algumas não mencionadas anteriormente.

ValorDescrição
ACEITARPermite que os pacotes passem
SOLTABloqueia os pacotes
RETORNADiz para pular a cadeia atual e continuar na próxima regra na cadeia anterior (chamadora)
> ParâmetroDescrição
-ccontadores  permite definir os contadores de pacotes e bytes de uma regra específica
-ddestino – pode ser um endereço, nome de um host ou endereço etc.
-ffragmento – aplica a regra à segunda e aos fragmentos que a seguem
-gIr para cadeia – indica que a ação continuará em uma cadeia especificada pelo usuário
-Euin-interface – indica o nome da interface de onde vêm os pacotes
-jjump – especifica a ação se um pacote corresponder à regra
-ointerface de saída  o nome da interface de um pacote de saída
-pprotocolo – qualquer protocolo disponível, como SSH, TCP, UDP e FTP
-sorigem – pode ser um endereço, nome de um host ou endereço etc.
CorrenteDescrição
ENTRADAControla os pacotes recebidos
FORWARDSEncaminha os pacotes que chegam ao seu servidor, mas destinados a outro lugar
RESULTADOFiltra pacotes saindo do seu servidor
OpçãoDescrição
-UMAacrescentar  adiciona uma (ou mais) regras da cadeia selecionada
-Ccheck – verifica uma regra que corresponde aos critérios na cadeia selecionada
-Ddelete – exclui apenas uma regra da cadeia selecionada
-Fflush – exclui todas as regras definidas do iptables
-EUinserir – insere uma regra na cadeia selecionada
-EUlista – exibe as regras da cadeia selecionada
-nnumérico – mostra o endereço IP / nome do host e o valor de retorno em um formato numérico
-Nnew-chain <name> – cria uma nova cadeia definida pelo usuário
-vdetalhado – usado na combinação com -L para fornecer informações adicionais
-Xdelete-chain <name> – exclui a cadeia definida pelo usuário

Conclusão, segurança SSH e melhores práticas de proteção

Esteja você construindo um novo servidor ou uma máquina virtual, é uma boa prática implementar várias camadas de segurança em seu ambiente. As empresas geralmente gostam de configurar sua infraestrutura o mais rápido possível, mas as medidas de segurança necessárias devem ser aplicadas desde o início.

Se você empregar os métodos de segurança SSH do Linux listados acima, poderá evitar ameaças de segurança comuns na nuvem.

Torne difícil para os hackers penetrar no (s) servidor (es) e restringir qualquer dano. Certifique-se de implementar o maior número possível dessas práticas recomendadas antes de disponibilizar seu servidor na rede.


Este artigo foi útil?

Para manter um padrão de qualidade para vocês, investimos em um ótimo plano de hospedagem, CDN Pago, Plugins de Otimização para o Site, etc…

Ajude-nos a manter o projeto ativo! 

Acompanhe as novidades em tempo real. Siga nosso perfil no Instagram..

Felipe Santos
Felipe Santos é Arquiteto de Cloud e Segurança, com vivência em Administração de Ambientes Windows Server, Cluster, Storages, Backups Veeam e Office 365.
pt_BRPortuguese

ATÉ 90% DE DESCONTO

DECOLE SUA CARREIRA!!

Quer dar um upgrade na sua carreira? 

Invista em você e saia na frente! Conquiste aquele emprego dos sonhos em 2022!