SSH Parte 1: Configurando o SSH para conectar-se com segurança a dispositivos remotos

ssh

O protocolo Secure Shell (SSH) é frequentemente usado para gerenciamento remoto, pois fornece conexões criptografadas entre um cliente e um dispositivo remoto e permite um caminho de comunicação bidirecional criptografado entre dois sistemas. Por décadas, os desenvolvedores confiaram no protocolo SSH para estabelecer sessões seguras de linha de comando com ambientes Linux®/UNIX e dispositivos de rede. E com a proliferação de dispositivos da Internet das Coisas (IoT), configurar o SSH para permitir um login seguro é mais útil do que nunca.

Usando SSH em aplicativos cliente / servidor

SSH é um protocolo usado em aplicações cliente/servidor. O servidor executa um servidor ou daemon SSH e o cliente SSH é instalado por padrão na maioria dos sistemas UNIX e Mac e em versões recentes do Windows. Existem outras versões gratuitas e comerciais disponíveis que fornecem recursos adicionais, como configurar e salvar conexões frequentes individualmente. PuTTY é um cliente SSH gratuito e popular e o SecureCRT da VanDyke Software é um cliente comercial popular.

Você pode usar o SSH para várias atividades que exigem uma conexão remota segura com outro dispositivo, como:

  • Cópia segura de arquivo entre cliente e servidor
  • Redirecionar protocolos de rede através de um túnel seguro
  • Utilitário para gerenciamento remoto via  linha de comando

Usando SSH para copiar arquivos com segurança

Você pode copiar arquivos pelo SSH usando o protocolo SCP (Secure Copy Protocol) ou SFTP (Secure File Transfer Protocol). Ambos copiam arquivos pelo TCP 22, mas usam protocolos diferentes. O SSH lida com a autenticação e criptografia. O SFTP é uma extensão do protocolo SSH e requer um servidor SFTP adicional no lado do servidor. O SFTP inclui um conjunto de comandos mais robusto, como listar diretórios remotos e remover arquivos, o que o SCP não pode permite.

Redirecionando o tráfego de rede através de um túnel SSH para gerenciamento remoto seguro

O SSH também suporta vários outros recursos, como a capacidade de encapsular outro tráfego de rede em um túnel SSH estabelecido. Por exemplo, depois de criar um túnel SSH, você pode instruir uma aplicação diferente, como um navegador da Web, a se conectar ao host local em uma porta específica. O sistema enviará chamadas de rede subseqüentes para um servidor de destino. Isso permite conexões remotas a uma rede sem expor esse serviço na Internet.

Usando os comandos interativos do SSH para atender às suas necessidades de segurança de gerenciamento remoto

O SSH fornece funções de autenticação e criptografia que permitem configurar seu sistema para atender aos seus requisitos de segurança. Por padrão, o SSH está configurado para autenticação de nome de usuário e senha, mas você pode adicionar autenticação de chave pública e autenticação multifator adicional (MFA) fornecida por outros módulos (como OATH-TOTP). A autenticação multifatorial se mostra mais resistente a ataques de phishing do que apenas uma senha, porque o MFA exige pelo menos um outro fator além da senha para confirmar uma identidade.

As configurações do servidor SSH podem ser feitas na linha de comando, por usuário ou em todo o sistema através de um arquivo chamado SSH_config, que normalmente está localizado em /etc/SSH/SSHd_config.

A configuração do SSH para autenticação de nome de usuário e senha é mais fácil. Por padrão, em muitos dispositivos, você só precisa criar uma conta de usuário no servidor, atribuir uma senha, garantir que o daemon do servidor SSH esteja instalado e escutando, e você esteja pronto para começar.

Em um computador cliente, efetue logon no servidor remotamente usando o comando:

Quando você faz logon em um novo dispositivo pela primeira vez, você recebe um alerta de que a autenticidade do servidor ou dispositivo ao qual você está se conectando não pode ser verificada. Isso é normal e uma excelente medida de segurança. O cliente SSH mostrará a chave do host que foi apresentada pelo servidor. Para garantir que o servidor ao qual você está se conectando seja o servidor real ao qual você pretendia se conectar (e não uma paródia ou intermediário), confirme sua identidade.

No servidor, use este comando para gerar a chave pública de identidade do servidor:

Por exemplo:

Em seguida, compare a saída deste comando com o hash que o cliente SSH lhe apresentou. Você só precisa fazer isso uma vez. O cliente SSH salvará esta entrada em uma lista de todos os hosts conhecidos nos quais você fez logon anteriormente no arquivo ~/.SSH/known_hosts e o alertará apenas se uma incompatibilidade for detectada.

A configuração de certificados para autenticação é um pouco mais complicada, mas muitos sites detalham as etapas necessárias. Por exemplo, uma explicação muito boa está disponível em http://ssh.com. Esses sites mostram os detalhes específicos para instalação e configuração de SSH e certificados para diferentes distribuições Linux. As chaves geradas são credenciais reais e tão importantes quanto um nome de usuário e senha e devem ser manuseadas com cuidado e bem protegidas. Esses certificados permitirão o acesso aos seus dispositivos.

Em geral, as etapas incluem: 

  1. Gerar um par de chaves que inclua uma chave autorizada (authorized key) e uma chave de identidade (identity key) executando o comando ssh-keygen. Por padrão, o ssh-keygen criará um novo par de chaves de identidade (privada) e autorizada (pública), com Protocolo SSH 2 RSA no diretório ~/.ssh. Se você optar por inserir uma senha ao criar suas chaves SSH, será solicitado a digitá-la novamente ao tentar usar a chave para fazer login no computador remoto. Reinserir a senha é uma boa medida de segurança, pois a senha criptografa sua chave privada e impede que um invasor a use.

Na linha de comando no computador cliente, execute:

  1. Copie a chave autorizada do computador cliente para o servidor. Usando os padrões SSH, essa chave possui uma extensão .pub e está localizada ao lado da chave de identidade no diretório .ssh do usuário. Depois de executar o ssh-keygen para gerar as chaves ssh, execute-o no computador cliente:

Essa ferramenta procurará as chaves no computador cliente e efetuará login no computador remoto especificado e copiará as chaves em (um novo) arquivo, localizado em ~/.ssh/allowed_keys.

Isso completa o processo da forma mais simples. Agora, quando você fizer login no dispositivo remoto, ele usará seu certificado para fazer a autenticar.

Especificando qual criptografia usar

O SSH também permite especificar qual criptografia usar. Nem todas as cifras são iguais e algumas devem ser evitadas. A maioria das distribuições modernas de Linux padroniza as cifras de criptografia aceitáveis, mas os dispositivos mais antigos podem não ser compatíveis. Para limitar a desatualização para remover cifras que você não deseja, edite o arquivo sshd_config e especifique as cifras que deseja oferecer suporte. Se o seu servidor ou dispositivo suportar uma versão posterior do OpenSSH, você poderá executar o seguinte comando para chamar o modo de teste estendido, que listará muitas opções de configuração, incluindo quais algoritmos de criptografia estão habilitados:

Consulte o site do OpenSSH para obter orientações atuais sobre os melhores algoritmos simétricos, de chave do host, de troca de chaves e de código de autenticação de mensagens a serem usados. O Instituto Nacional de Padrões e Tecnologia (NIST) também oferece recomendações sobre quais criptografia devem ser evitadas devido ao comprimento inadequado da chave ou aos próprios algoritmos de criptografia.

Pontos chave:

  • O SSH é uma ferramenta muito poderosa e útil para conectar-se a uma infinidade de dispositivos. Os dispositivos IoT que permitem login interativo oferecerão suporte ao SSH, e deve-se ter cuidado ao usar aqueles que não o fazem em redes não confiáveis.
  • O padrão SSH inclui ferramentas que permitem a administração remota segura de dispositivos IoT e infraestrutura em nuvem.
  • O SSH fornece controles modernos de criptografia e autenticação, incluindo autenticação multifatorial usando certificados protegidos por senha.
  • O conjunto de utilitários OpenSSH fornece todas as ferramentas necessárias para usar o SSH para administrar remotamente seus sistemas Linux e equipamentos de rede.

Artigo escrito originalmente por Jeff Fellinge para Mouser Electronics: SSH Part 1: Configuring SSH to Securely Connect to Remote Devices. Traduzido por Equipe Embarcados.

Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.

Receba os melhores conteúdos sobre sistemas eletrônicos embarcados, dicas, tutoriais e promoções.

Software » SSH Parte 1: Configurando o SSH para conectar-se com segurança a dispositivos remotos
Talvez você goste:
Comentários:

Deixe um comentário

avatar
 
  Notificações  
Notificar

Séries

Menu

WEBINAR
 
Linux Embarcado: Desvendando o Pin Control Subsystem - Kernel Linux

Data: 26/02 às 19:30 h | Apoio: Mouser Electronics
 
INSCREVA-SE AGORA »



 
close-link