Soluções para Acesso Remoto Seguro com SSH

Este artigo visa exemplificar algumas formas de realizar acesso remoto, de forma segura, utilizando o Protocolo SSH (Secure Shell). Com o SSH, a conexão é criptografada, o que garante o acesso remoto a servidores e computadores de forma segura.

[ Hits: 5.064 ]

Por: Jerio Rodrigues da Costa em 03/12/2019


Introdução



O SSH - Secure Shell, é um protocolo para login remoto seguro e outros serviços de rede segura em uma rede insegura, popularmente usado e, principalmente, por usuários de Linux e Unix. O protocolo pode ser usado como base para vários serviços de rede segura. O serviço foi criado como uma substituição segura para o serviço Telnet não criptografado.

O comando SSH consiste em 3 partes distintas:
  • ssh {user}@{host}
  • user - representa a conta a qual se deseja acessar.
  • host - refere-e ao computador ao qual se deseja acessar.

Tipos de Criptografia

  • Criptografia simétrica: tipo de criptografia onde se utiliza uma chave secreta para codificar e decodificar uma mensagem. Também é chamada de Chave Compartilhada, onde cliente e servidor derivam uma chave secreta que nunca é divulgado a terceiros.
  • Criptografia assimétrica: diferentemente da criptografia simétrica, a criptografia assimétrica usa duas chaves separadas para realizar criptografia e descriptografia, conhecidas como chave-pública e chave-privada. Juntas, essas chaves são conhecidas como pública-privada, e formam um par de chaves.
  • Hashing: hashing é uma forma de criptografia usada em conexões seguras de shell. As funções de hash diferem da duas formas já citadas, no sentido de que elas nunca devem ser descriptografadas. Também é chamado de One-Way Hashing (criptografia de uma só via). O hashing gera um valor único e de comprimento fixo para cada entrada, e que não mostra nenhuma predisposição que possa ser explorada. Isso garante que o comando recebido não possa ser manipulado de maneira alguma.

Uso do SSH

O principal uso, é estabelecer uma conexão criptografada para que ninguém consiga ler o tráfego, especialmente para itens sensíveis, tais como senhas. O SSH também pode estabelecer túneis de dados criptografados, que permitem que os usuários estabeleçam conexões seguras.

O SSH utiliza o modelo cliente-servidor, suporta tunelamento, redirecionamento de portas TCP e conexões X11. Ele pode transferir arquivos usando os protocolos SSH file transfer (SFTP) ou secure copy (SCP). Ele fornece forte criptografia, autenticação de servidor e proteção de integridade.

Pode, também, fornecer compressão de dados. Método de troca de chaves, algoritmo de chave pública, criptografia simétrica, algoritmo de autenticação de mensagem e algoritmo Hash, são todos negociados entre cliente e servidor.

O protocolo SSH é dividido em três componentes básicos:
  • Camada de Transporte: Provê sigilo, integridade e autenticação do servidor.
  • Protocolo de Autenticação: Autentica o usuário perante o servidor.
  • Protocolo de Conexão: Permite a multiplexação da conexão entre vários canais lógicos.

Aplicação do SSH

Procuraremos demonstrar soluções seguras com a utilização do SSH para acesso de serviços remotos.

1º Caso:

Um problema que encontramos no dia-a-dia, é o bloqueio na rede que impede o acesso remoto de alguma aplicação.
Digamos que você realizará um atendimento externo, onde somente está liberado acesso à Internet na porta 80, e você precisa acessar o servidor da sua empresa que está liberando acesso remoto no SSH, ou seja, porta 22.

Como solução, alteramos a porta padrão SSH. Para isso, edite o arquivo /etc/ssh/sshd_config. Procure o parâmetro "#Port 22", descomente e deixe "Port 80".

Salve e reinicie o serviço com o comando abaixo:

# systemctl restart ssh

Em seguida, faça o acesso remoto:

# ssh -p80 usuario@<host ip>

2º Caso:

Outro cenário diário para os DEV's, é a necessidade de enviar arquivos para o servidores, para isso utiliza-se muito o WinSCP, aplicativo para o Windows que abre janelas, copiando assim arquivos entre os dois sistemas operacionais de forma rápida e segura. Abaixo, segue o link demonstrando o uso do WinSCP:
3º Caso:

Imagine uma situação onde você necessita verificar o espaço em disco de 30 servidores Linux, para que não seja necessário logar servidor por servidor e verificar o espaço em disco, você pode utilizar o SSH para executar comandos em servidores remoto. Como demonstrado abaixo:

# ssh usuario@<ip do host> 'df -h|grep sda1'

Dessa forma, ele irá exibir as informações do disco. Posteriormente, pode ser criado um script que coleta estas informações e grave-as em um arquivo a ser consultado posteriormente.

4º Caso:

Temos a seguinte situação, seu colega está descrevendo um funcionamento estranho em seu navegador de Internet, porém, devido a restrições de firewall em sua rede você consegue somente acesso remoto via ssh, para ajudá-lo você pode acessar a interface gráfica do navegador de Internet utilizando o SSH.

# ssh -X matriz@192.168.40.183 firefox

Assim, o processo do Firefox será executado na máquina remota de seu amigo, porém, a parte gráfica será carregada em sua máquina local.

5º Caso:

Imagine um cenário onde você loga por várias vezes no mesmo servidor, que possui a uma senha grande. Para que você não necessite digitar a senha várias vezes ao longo do dia, você pode fazer a troca de chaves e realizar a autenticação de forma automática. Para isso, siga o passos no link abaixo:
Deparamos com um banco de dados que está aceitando conexões somente do IP localhost (127.0.0.1) , e não temos permissão para alterar esta configuração. Para acessar este servidor, podemos utilizar o redirecionamento de portas utilizando o SSH, como no exemplo abaixo:

# ssh -fNL 3306:127.0.0.1:3306 usuario@<ip de destino>

Será solicitado a senha, a porta passará a ouvir localmente, permitindo assim o acesso ao banco de dados.

6º Caso:

Em certos ambientes, temos conexões de redes muito lentas, uma forma de melhorar o desempenho neste tipo de rede e utilizar a compactação em gZip oferecida por padrão no SSH com a opção "-C", como no exemplo abaixo.

# ssh -C usuario@<ip_de_destino>

Todos os pacotes enviados passaram a ser compactados e descompactados no receptor.

Conclusão

Segurança é indispensável em qualquer projeto na Internet. Com o SSH, o usuário tem vantagens com as tecnologias de criptografia, que garantem acesso remoto a computadores e servidores de qualquer lugar, sem comprometer a proteção de dados e nem de desempenho.

Estes são alguns exemplos da utilização do protocolo Secure Shell (SSH). Para um estudo mais aprofundado e mais detalhado sobre o protocolo, podem acessar a página oficial no link:
Este artigo contou com a colaboração de Jerio Rodrigues da Costa, Rodrigo José Barbosa e Thiago Elias Oliveira da Silva.

Referências Bibliográficas


   

Páginas do artigo
   1. Introdução
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

Bom escudo não teme espada: o módulo pam_cracklib

Arquivo de configuração do mod_security

Instalando e configurando o SpamAssassin

Criando VPNs entre servidores Linux sem mistérios (parte I)

Entendendo o que é Engenharia Social

  
Comentários
[1] Comentário enviado por gomesalex em 11/12/2019 - 10:52h

já tentou acessar usando ipv6? no meu caso precisei informar a interface após o endereço IP.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts