Buscar

Apostila SSH

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

O SSH é um programa que permite a execução de comandos em uma máquina remota, utilizando para isso um canal de comunicação criptografado. Adicionalmente o SSH possui um comando (o scp) que permite a transferência de arquivos entre duas máquinas utilizando um canal criptografado. Ele pode ser utilizado como uma alternativa segura a comandos tradicionais do UNIX® como telnet, rlogin, rsh, rcp e rdist.
A utilização de métodos de criptografia na comunicação entre duas máquinas torna o SSH uma ferramenta bastante útil na administração de máquinas, uma vez que permite ao administrador verificar e configurar uma máquina remotamente de forma segura. Do ponto de vista prático, ao se utilizar o SSH é como se o administrador ou usuário estivesse efetivamente sentado em frente ao computador remoto, podendo rodar programas e utilizar recursos deste computador.
Além da característica de utilizar canais de comunicação criptografados, que impedem a utilização de programas "farejadores"[45] para capturar logins e senhas, o SSH apresenta como vantagem uma forma de autenticação mais avançada, podendo utilizar chaves assimétricas para usuários e máquinas, além da capacidade de criar "túneis" criptografados, podendo assim executar até mesmo aplicações gráficas remotamente.
Para melhor entendimento do funcionamento e das vantagens da utilização do SSH, serão vistos a seguir alguns dos conceitos e recursos utilizados por ele.
Criptografia
A utilização de criptografia em comunicações não é algo novo, e já era utilizada antes mesmo de se existirem computadores. Criptografia é um conjunto de técnicas que permitem tornar incompreensível uma mensagem originalmente escrita com clareza, de forma a permitir que apenas o destinatário a decifre e compreenda, ou seja, na impossibilidade de manter informações de acessos não autorizados, a criptografia visa tornar uma mensagem ininteligível a quem não deveria vê-la. 
É exatamente isso que o SSH faz ao se comunicar, ou seja, os pacotes contendo as informações a serem transmitidas passam por um processo de criptografia que visa proteger a informação contida neles, já que não há formas de conhecer os caminhos por onde esses pacotes trafegarão (principalmente em se tratando de Internet), nem o quão seguro será este caminho.
Chaves Simétricas e Assimétricas
No processo de criptografia de uma informação é necessária a utilização de uma "chave", ou seja, um código ou uma convenção de como a informação será criptografada. Quando esta chave é utilizada tanto para criptografar quanto para decriptar essa informação, ela é chamada de chave simétrica. Suponha que uma chave seja uma tabela de equivalência entre caracteres e números, por exemplo. 
O agente transmissor a utilizaria para transformar uma mensagem em uma seqüência de números, e o agente receptor a utilizaria para transformar essa seqüência de números na mensagem original.
O exemplo anterior serve apenas para fins didáticos e na prática são utilizados métodos matemáticos e polinômios que possuem um alto grau de complexidade. Além do mais, é possível aumentar a segurança utilizando-se uma chave conhecida por ambas as partes apenas para combinar uma outra chave que será utilizada somente na seção de comunicação corrente.
Embora as chaves simétricas possam alcançar um grau considerável de segurança, existe um tipo de chave ainda mais segura: as chaves assimétricas. Neste tipo de chave é utilizada uma chave que só serve para criptografar a informação e uma que só serve para decriptar. Esse par de chaves também é conhecido como chaves pública e privada. A chave pública pode ser livremente distribuída e só pode ser utilizada para criptografar informações que serão enviadas ao dono da chave privada[46]. A chave privada é capaz de decriptar informações codificadas com a chave pública correspondente, e também de gerar assinaturas.
Assim, é possível distribuir a chave pública a quem quer que a solicite. E se for necessário provar uma identidade basta lançar um desafio: se a máquina em questão for capaz de decodificar uma seqüência arbitrária de dados criptografados com uma chave pública então ela é a dona da chave privada correspondente.
Com a solução de SSH apresentada aqui, o administrador poderá configurar o SSH de modo que um usuário apenas precise digitar o seu login e sua senha para se conectar.
Implementação
A solução SSH apresentada aqui se baseia no pacote OpenSSH, que é uma implementação livre do pacote SSH original que possui restrições à sua utilização comercial. 
O OpenSSH é compatível com a versão 1 do protocolo SSH (com suas duas variantes, a 1.3 e 1.5) e com a versão 2.
Será visto a seguir como implementar e configurar o servidor SSH, e em seguida da implementação e configuração do cliente SSH.
Pré-requisitos
Para uma implementação bem-sucedida do servidor SSH é necessário apenas que sua rede esteja corretamente configurada.
Instalação
Selecione para instalação com o Synaptic os pacotes:
         openssh-server
         openssh-clients
ou abra um terminal e utilize os comandos abaixo:
 apt-get install openssh-server openssh-clients 
Os procedimentos descritos acima instalarão o servidor e o cliente SSH. Para instalar apenas o cliente basta selecionar somente o pacote openssh-clients para instalação.
Configuração do Servidor SSH
A configuração do servidor SSH pode ser feita utilizando-se a opção Servidores -> Servidor SSH do Webmin. Ao acessar essa opção uma tela como a da Figura 14.1. Configuração do Servidor SSH será mostrada.
Figura 14.1. Configuração do Servidor SSH 
As opções para se configurar um servidor SSH básico estão descritas a seguir. Lembre-se sempre de salvar cada vez que mudar as configurações de uma das páginas.
Autenticação 
Nesta página são configuradas as opções de autenticação que o servidor SSH usará. A opção Autorizar autenticação por senhas configura o servidor para utilizar a autenticação por senhas em texto plano através do tunelamento criptografado, ou seja, o usuário poderá utilizar a sua senha do sistema. Se você quiser forçar os seus usuários a utilizar apenas a autenticação com passphrases e chaves criptográficas assimétricas, configure esse campo com o valor Não. 
O campo Autorizar autenticação RSA (SECURITY ACE/SERVER) configura se o servidor deve utilizar esse tipo de chave assimétrica para autenticar os usuários. O campo Autorizar conexão pelo root especifica se o usuário root pode se logar ou não utilizando o SSH. Se for especificado que não, para se realizar alguma atividade administrativa em uma máquina remota, será necessário se logar nela como um usuário comum e depois utilizar o comando su (recomendado). 
Todas as outras opções podem ser deixadas com o valor padrão - modifique-as de acordo com suas necessidades. Clique em Salvar e retorne para a página principal de configuração do servidor.
Rede 
Aqui são definidas as informações de rede relativas ao servidor SSH. O campo Escutando nos endereços permite informar qual o endereço IP ou porta padrão que o servidor irá aguardar por conexões. Por padrão, o SSH utiliza a porta 22, e se for necessário alterá-la, basta selecionar outra porta neste campo. A opção Tempo de espera para conexão configura quanto tempo o servidor SSH deve esperar pela autenticação do usuário antes de se desconectar.
Aqui podem ser configuradas restrições de acesso ao servidor SSH. Os campos Somente usuários autorizados e Somente membros autorizados dos grupos podem ser utilizados para restringir o acesso apenas aos usuários de determinados grupos ou mesmo apenas a determinados usuários. Para inserir um usuário ou grupo, deve-se selecionar o botão para indicar a caixa a ser preenchida, e inserir o usuário, ou clicar na aba ao lado com "...", onde surgirá a lista com os usuários e ou grupos. Os campos Negar usuários e Negar membros dos grupos podem ser utilizados
para restringir o acesso dos usuários ou grupos listados nestes campos.
Controle de Acesso
Aqui são definidas opções gerais sobre o comportamento do servidor SSH.
Por padrão, o servidor SSH não permite o tunelamento de aplicações gráficas via conexão SSH, e para habilitá-las você deverá selecionar o valor Sim no campo Autorizar conexões X11?.
Opções diversas
Se você acha que o seu servidor poderá ter problemas de segurança, ou deve ser extremamente seguro, use a opção Intervalo para recriar a chave do servidor, onde deve-se indica a freqüência com que o servidor SSH deverá regerar a chave usada para criptografar as opções. Habilite esta opção apenas se necessário.
É interessante também habilitar as opções referentes ao log, para que os acessos sejam registrados.
Figura 14.2. Opções Diversas - Servidor SSH 
Finalize a configuração do servidor SSH ativando a inicialização automática do serviço, pressionando o botão Iniciar Servidor na página inicial de configuração do SSH. 
O cliente SSH não necessita nenhuma configuração para funcionar, no entanto, se você pretende utilizar autenticação com chaves assimétricas, como a chave RSA, será necessário gerar essas chaves. Para gerar essas chaves cada usuário deverá utilizar o comando ssh-keygen. Veja como proceder:
Configuração do cliente SSH
 
1.      Abra um terminal e digite o comando:
$ssh-keygen
2.      O comando irá gerar a sua chave no diretório .ssh dentro de sua área home, e utilizará por padrão o arquivo identity. Ao aparecer a mensagem abaixo pressione Enter para confirmar ou insira um outro nome de arquivo.
enerating public/private rsa1 key pair.Enter file in which to save the key (/home/usuario/.ssh/identity): 
3 . O comando solicitará então que você entre com uma passphrase (uma frase-senha). É possível utilizar uma frase-senha vazia pressionando-se apenas um ENTER, logo a autenticação será feita utilizando-se apenas as chaves. Insira a sua frase-senha ao aparacer a mensagem: 
Enter passphrase (empty for no passphrase): 
4. Insira-a novamente para confirmar ao aparecer a mensagem:
Enter same passphrase again:
5. O ssk-keygen criará então as chaves e mostrará uma mensagem como esta: 
Your identification has been saved in /home/usuario/.ssh/identityYour public key has been saved in /home/usuario/.ssh/identity.pubThe key fingerprint is:69:85:b7:a9:74:d9:92:ea:5c:e3:92:cb:47:b2:70:03 \usuario@kepler.minhaorganizacao 
6. Para funcionar corretamente é necessário que o diretório .ssh/ possua as permissões corretas. Ele deve ter permissão de leitura, escrita e execução apenas para o dono. Você poderá ajustar as permissões deste diretório utilizando o seguinte comando:
$ chmod 700 ~/.ssh 
7.      Entre no diretório .ssh/ e adicione a sua chave pública ao arquivo de chaves autorizadas utilizando o seguinte comando:
$ cat identity.pub >> authorized_keys
8.      Ajuste a permissão do arquivo contendo as chaves com o comando:
$ chmod 600 authorized_keys
9. As configurações necessárias na máquina que será o alvo da conexão SSH estão prontas, simplesmente especifique o arquivo que contém a chave privada na linha de comando ao se conectar.
Nota
Verifique a opção Configuração de usuário para chave SSH, que permite a configuração automática do SSH para novos usuário UNIX criados no seu sistema.
A utilização do cliente é bastante simples. Para se conectar a um servidor SSH basta utilizar o comando ssh com a sintaxe abaixo:
ssh [-i arquivo-chave] [usuario@]servidor [-X]
Utilizando o Cliente SSH
Os parâmetros entre colchetes são opcionais. A opção -i arquivo-chave especifica a sua chave privada, caso você esteja utilizando este tipo de autenticação e a sua chave não se encontre no local padrão (diretório .ssh/). Caso o seu login no servidor seja diferente do que você esteja utilizando na máquina cliente, você deverá especificar o seu login na forma usuario@. Substitua servidor pelo nome da máquina-alvo da conexão e, finalmente, utilize a opção -X para permitir o tunelamento do X11 através do canal criptografado.
O comando scp permite a cópia de arquivos entre duas máquinas utilizando-se os recursos de criptografia do SSH e pode ser uma alternativa ao uso do FTP.
Sua forma básica é:
$ scp arquivo-origem arquivo-destino
Utilizando o scp
A origem e o destino podem se localizar na máquina cliente ou na máquina servidor, além do mais, pode ser necessário fornecer o login também. Por exemplo, para copiar um arquivo da máquina local para o servidor você poderá usar o scp assim:
$ scp arquivo usuario@servidor:/home/usuario
Note que é necessário indicar o caminho absoluto no servidor e não o caminho relativo apenas à sua área home. Para copiar um arquivo do servidor para sua máquina utilize:
$ scp usuario@servidor:/caminho/arquivo.
Para testar a configuração do servidor SSH tente se conectar a ele utilizando o cliente SSH. Você poderá fazer isso com o seguinte comando:
$ ssh usuario@kepler.minhaorganizacao
Testando a configuração
Se o servidor foi configurado para aceitar conexões com senhas apenas, ele solicitará a sua senha do sistema, ou pedirá sua frase-senha se tiver sido configurado para utilizar chaves RSA. Você poderá obter mais informações do que está acontecendo ao se conectar utilizando a opção -v no final do comando.
Experimente também copiar um arquivo da máquina cliente para o servidor, utilizando o comando scp.
Referências
Página oficial do OpenSSH .
 FAQ sobre SSH .

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Outros materiais