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.315 ]

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

Administrando Linux via web (parte 1)

From Deploy WAR (Tomcat) to Shell (FreeBSD)

Melhorias generalizadas de segurança (parte 1)

Não precisamos de antivírus, eles sim

Chkrootkit - Como determinar se o sistema está infectado com rootkit

  
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