Como configurar a segurança SSH Linux

Um dos protocolos mais utilizados a nível de segurança para estabelecer ligações em ambientes UNIX é o protocolo SSH (Secure Shell) que nos oferece uma série de funcionalidades e características especiais para proteger os dados e as ligações efetuadas.

SSH é um protocolo que foi desenvolvido com foco na segurança das comunicações entre dois sistemas através do modelo cliente / servidor e graças ao qual os usuários podem se conectar a um host remotamente.
Uma das principais características do SSH é que ele criptografa a sessão de conexão, o que impede que qualquer usuário obtenha senhas não criptografadas.

Tipos de proteçãoAo usar o protocolo SSH, teremos os seguintes tipos de proteção:

  • Assim que a conexão inicial for estabelecida, o cliente pode verificar se está se conectando ao mesmo servidor ao qual se conectou anteriormente
  • O cliente envia as informações de autenticação para o servidor por meio de criptografia de 128 bits
  • Todos os dados enviados e recebidos durante a sessão são transferidos usando criptografia de 128 bits, o que torna difícil decifrar e ler
  • O cliente tem a oportunidade de encaminhar aplicativos X11 do servidor, esta é uma técnica chamada de encaminhamento X11 que fornece um meio seguro de usar aplicativos gráficos em uma rede local ou externa.

Agora, nos sistemas operacionais Linux encontramos o arquivo de configuração SSH no caminho / etc / ssh / ssh_config e graças a este arquivo será possível realizar todas as medidas de segurança para conexões SSH.

PROLONGAR

Para sistemas macOS, esse arquivo está localizado no caminho / private / etc / ssh / ssh_config e possui um link simbólico para / etc / ssh / ssh_config para fins de compatibilidade.

Ao editar este arquivo, devemos ter em mente o seguinte.

  • Linhas vazias e linhas que começam com '#' são comentários
  • Cada linha começa com uma palavra-chave, seguida por argumento (s)
  • As opções de configuração podem ser separadas por espaços em branco ou opcionais e um sinal =
  • Os argumentos podem ser colocados entre aspas duplas (") para especificar os argumentos que contêm espaços

1. Como editar o arquivo ssh_config do Linux


Para editar este arquivo a fim de estabelecer os valores adequados, devemos executar o seguinte com um editor:
 sudo nano / etc / ssh / ssh_config
Veremos o seguinte:

PROLONGAR

O arquivo ssh_config é organizado por hosts e cada host contém configurações específicas para aquele host em particular, onde podemos usar curingas como * para combinar vários nomes de host com uma única instrução.
Alguns dos parâmetros que podemos usar neste arquivo são:

HospedarRestrinja as instruções que são apenas para hosts que correspondem a um dos padrões fornecidos após a palavra-chave.
PartidaRestrinja as declarações para se aplicarem apenas a hosts que correspondam aos critérios especificados
AddressFamilyEspecifica qual família de endereços usar ao conectar, os argumentos válidos são: any, inet, inet6.
BatchModeCom este valor a consulta de senha será desabilitada, evitando assim o bloqueio acidental em uma solicitação de senha
BindAddressEspecifica o uso do endereço especificado na máquina local como o endereço de origem da conexão.
ChallengeResponseAuthenticationIndica se deve usar autenticação de desafio-resposta. Este é principalmente um método legado e foi substituído por KbdInteractiveAuthentication
CheckHostIPDiga ao ssh para verificar adicionalmente o endereço IP do host no arquivo known_hosts.
CifraRefere-se à criptografia que será usada para criptografar a sessão na versão 1 do protocolo.
CifrasEspecifica as cifras permitidas para a versão 2 do protocolo em ordem de preferência.

A seguir, veremos algumas dicas práticas para melhorar a segurança das conexões SSH com o Linux e, assim, obter o melhor desempenho de acesso.

2. Como bloquear arquivos SSH do Linux


O primeiro passo antes de editar o arquivo é certificar-se de que tanto o arquivo ssh_config quanto o arquivo sshd_config tenham o proprietário e o usuário configurados como root, isso porque ele é o superusuário do Linux e ninguém melhor do que este é o proprietário.

Para isso, executamos o seguinte:

 sudo chown root: root / etc / ssh / sshd_config sudo chmod og-rwx / etc / ssh / sshd_config

3. Como confirmar o protocolo SSH versão 2 Linux


A versão 2 do SSH tem um algoritmo de troca de chave aprimorado que não é vulnerável à falha de segurança na versão 1, melhorando assim a segurança geral das conexões, por isso é ideal para confirmar que o novo protocolo 2 está sendo usado em vez do protocolo 1 e para isso devemos confirmar a seguinte linha no arquivo ssh_config:
 Protocolo 2

PROLONGAR

Lá também podemos configurar o protocolo implicitamente por meio de Cifras, que definirá automaticamente o Protocolo para 2 para usar Cifras modernas, para isso validamos a seguinte linha logo abaixo da linha de Protocolo:

 Cifras aes128-ctr, aes192-ctr, aes256-ctr

4. Como desativar senhas vazias SSH Linux


É importante validar que cada conta SSH deve utilizar uma senha para o login, bloqueando senhas vazias que permitiriam um acesso simples causando riscos de segurança no sistema, para validar usaremos a seguinte linha ou, caso não exista, nós irá adicioná-lo colocando o símbolo #:
 PermitEmptyPasswords no

PROLONGAR

5. Como desativar o login raiz SSH Linux


Ao impedir o login do usuário root, será possível bloquear contas específicas e impedir seu uso em todo o sistema. As opções de PermitRootLogin incluem "sim", "sem senha", "apenas comandos forçados" ou "não". O padrão é "sim". Para interromper completamente o login do root, usaremos a seguinte linha:
 PermitRootLogin no

PROLONGAR

6. Como definir uma nova porta SSH do Linux


Por padrão, a porta atribuída para SSH é 22, para que os invasores saibam com certeza por qual porta eles acessarão para realizar seus ataques, portanto, um bom método de segurança é alterar essa porta padrão e indicar apenas os usuários autorizados.

Para isso, devemos localizar a linha da porta e adicionar a seguinte sintaxe:

 Porta XXXXX

PROLONGAR

7. Como restringir o acesso SSH Linux


Caso o acesso ao servidor SSH seja composto por vários usuários, é possível aplicar certas restrições criando grupos onde esses usuários estão incluídos, isso é possível adicionando palavras-chave como:
 AllowUsers (Permitir o acesso do usuário) AllowGroups (Permitir o acesso do grupo) DenyUsers (Restringir o acesso do usuário) DenyGroups (Restringir o acesso do grupo)
Por exemplo, podemos executar o seguinte no arquivo de configuração:
 AllowUsers Solvetic testa teste DenyGroups

8. Como atualizar o tempo de tolerância do SSH Linux


Por padrão, a quantidade de tempo que um usuário pode permanecer inativo sem fazer login é de dois minutos, a fim de ajudar a evitar conexões não autorizadas ao sistema, este tempo pode ser editado na linha LoginGraceTime aumentando ou diminuindo este clima:
 LoginGraceTime 1m

PROLONGAR

9. Como criar um alias SSH Linux


Dentro das configurações SSH é possível especificar um alias, estes permitem conectar a um servidor específico através de uma porta e usuários definidos, por exemplo, podemos adicionar o seguinte:
 Host dev HostName dev.solvetic.com Porta 3333 User Solvetic
Neste caso específico, devemos acessar o seguinte:
 ssh [email protected] -p 3333

10. Autenticação com chaves seguras SSH Linux


O ssh será muito mais seguro e útil quando usado com pares de chaves públicas / privadas para fins de autenticação, em vez de usar senhas. O arquivo ssh_config pode declarar uma chave específica para um host específico usando a chave IdentityFile, neste caso, inseriríamos o seguinte:
 Host dev HostName dev.solvetic.com Porta 3333 User Solvetic IdentityFile ~ / .ssh / dev.solvetic.key
Para este caso, a conexão seria a seguinte:
 ssh -i ~ / .ssh / dev.solvetic.key [email protected] -p 3333
Alguns parâmetros adicionais são:

CompressãoLá, podemos usar valores como sim ou não para habilitar a desabilitação da compactação para um host.
LogLevelPermite definir o nível de detalhamento dos logs para o cliente ssh, as opções são QUIET, FATAL, ERROR, INFO, VERBOSE, DEBUG1, DEBUG2 e DEBUG3.
StrictHostKeyCheckingDefina uma preferência para adicionar hosts ao arquivo known_hosts.

Assim, temos diferentes opções para melhorar a segurança e a conectividade SSH no Linux.

wave wave wave wave wave