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