Escolar Documentos
Profissional Documentos
Cultura Documentos
Contents
The SSH Protocol
Why Use SSH?
Main Features
Protocol Versions
Event Sequence of an SSH Connection
Configuring OpenSSH
Configuration Files
Starting an OpenSSH Server
Requiring SSH for Remote Connections
Using Key-based Authentication
Using OpenSSH Certificate Authentication
Introduction to SSH Certificates
Support for SSH Certificates
Creating SSH CA Certificate Signing Keys
Distributing and Trusting SSH CA Public Keys
Creating SSH Certificates
Signing an SSH Certificate Using a PKCS#11 Token
Viewing an SSH CA Certificate
Revoking an SSH CA Certificate
OpenSSH Clients
Using the ssh Utility
Using the scp Utility
Using the sftp Utility
More Than a Secure Shell
X11 Forwarding
Port Forwarding
Additional Resources
O protocolo SSH
Por que usar SSH?
Os possíveis invasores têm à sua disposição uma variedade de ferramentas
que lhes permitem interromper, interceptar e redirecionar o tráfego de rede
em um esforço para obter acesso a um sistema. Em termos gerais, essas
ameaças podem ser categorizadas da seguinte forma:
Principais características
O protocolo SSH fornece as seguintes salvaguardas:
Versões do protocolo
Existem atualmente duas variedades de SSH: versão 1 e versão 2. O pacote
OpenSSH no Fedora usa SSH versão 2, que possui um algoritmo de troca de
chaves aprimorado não vulnerável à exploração conhecida na versão 1. A
versão 1 do protocolo foi removida do pacote OpenSSH e é Não mais
suportado.
Camada de transporte
A função principal da camada de transporte é facilitar a comunicação segura
entre os dois hosts no momento da autenticação e durante a comunicação
subsequente. A camada de transporte realiza isso manipulando a criptografia
e descriptografia de dados e fornecendo proteção de integridade aos pacotes
de dados à medida que são enviados e recebidos. A camada de transporte
também fornece compactação, agilizando a transferência de informações.
O SSH foi projetado para funcionar com quase qualquer tipo de algoritmo de
chave pública ou formato de codificação. Depois que uma troca inicial de
chaves cria um valor hash usado para trocas e um valor secreto
compartilhado, os dois sistemas começam imediatamente a calcular novas
chaves e algoritmos para proteger a autenticação e os dados futuros
enviados pela conexão.
Após uma certa quantidade de dados ter sido transmitida usando uma
determinada chave e algoritmo (a quantidade exata depende da
implementação do SSH, do algoritmo de criptografia e da configuração),
ocorre outra troca de chaves, gerando outro conjunto de valores de hash e
um novo valor secreto compartilhado. Mesmo que um invasor consiga
determinar o valor do hash e do segredo compartilhado, essas informações
serão úteis apenas por um período limitado de tempo.
Autenticação
Uma vez que a camada de transporte tenha construído um túnel seguro para
passar informações entre os dois sistemas, o servidor informa ao cliente os
diferentes métodos de autenticação suportados, como o uso de uma
assinatura codificada por chave privada ou a digitação de uma senha. O
cliente então tenta se autenticar no servidor usando um destes métodos
suportados.
Canais
Após uma autenticação bem-sucedida na camada de transporte SSH, vários
canais são abertos por meio de uma técnica
chamada multiplexação [ 1 ] . Cada um desses canais lida com a comunicação
para diferentes sessões de terminal e para sessões X11 encaminhadas.
Tanto clientes quanto servidores podem criar um novo canal. Cada canal
recebe então um número diferente em cada extremidade da
conexão. Quando o cliente tenta abrir um novo canal, o cliente envia o
número do canal junto com a solicitação. Essas informações são armazenadas
pelo servidor e usadas para direcionar a comunicação para esse canal. Isso é
feito para que diferentes tipos de sessões não afetem uns aos outros e para
que, quando uma determinada sessão terminar, seu canal possa ser fechado
sem interromper a conexão SSH primária.
Configurando OpenSSH
Para executar as tarefas descritas nesta seção, você deve ter privilégios de
superusuário. Para obtê-los, faça login root digitando:
su-
Arquivos de configuração
Existem dois conjuntos diferentes de arquivos de configuração: aqueles para
programas clientes (ou seja, ssh , scp e sftp ) e aqueles para o servidor (o
daemon sshd ). As informações de configuração SSH de todo o sistema são
armazenadas no /etc/ssh/ diretório conforme descrito em Arquivos de
configuração de todo o sistema . As informações de configuração SSH
específicas do usuário são armazenadas no ~/.ssh/ diretório inicial do
usuário, conforme descrito em Arquivos de configuração específicos do
usuário .
Para obter informações sobre várias diretivas que podem ser usadas nos
arquivos de configuração SSH, consulte as páginas de manual ssh_config (5)
e (5). sshd_config
Iniciando um servidor OpenSSH
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@
@ AVISO: A IDENTIFICAÇÃO DO HOST REMOTO MUDOU! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@
É POSSÍVEL QUE ALGUÉM ESTEJA FAZENDO ALGO DESAGRADÁVEL!
Alguém pode estar espionando você agora mesmo (ataque man-in-the-middle)!
Também é possível que a chave do host RSA tenha acabado de ser alterada.
Para evitar isso, você pode fazer backup dos arquivos relevantes
do /etc/ssh/ diretório (consulte Arquivos de configuração de todo o
sistema para obter uma lista completa) e restaurá-los sempre que reinstalar o
sistema.
Exigindo SSH para conexões remotas
Para que o SSH seja realmente eficaz, o uso de protocolos de conexão
inseguros deve ser proibido. Caso contrário, a senha de um usuário poderá
ser protegida usando SSH para uma sessão, apenas para ser capturada
posteriormente durante o login usando Telnet. Alguns serviços a serem
desativados incluem telnet , rsh , rlogin e vsftpd .
Esses serviços não são instalados por padrão no Fedora. Se necessário, para
garantir que esses serviços não estejam em execução, digite os seguintes
comandos em um prompt do shell:
SenhaAutenticação não
Para poder usar ssh , scp ou sftp para conectar-se ao servidor a partir de uma
máquina cliente, gere um par de chaves de autorização seguindo as etapas
abaixo. Observe que as chaves devem ser geradas para cada usuário
separadamente.
O Fedora 38 usa o Protocolo SSH 2 e chaves RSA por padrão (veja Versões do
Protocolo para mais informações).
Para gerar um par de chaves ECDSA para a versão 2 do protocolo SSH, siga
estas etapas:
Isso copiará o
conteúdo ~/.ssh/id_ecdsa.pub na ~/.ssh/authorized_keys máquina à qual
você deseja se conectar. Se o arquivo já existir, as chaves serão anexadas
ao seu final.
Consulte Configurando o ssh-agent para obter informações sobre como
configurar seu sistema para lembrar a senha.
Para salvar sua senha para um determinado prompt do shell, use o seguinte
comando:
~]$ ssh-adicionar
Digite a senha para /home/USER/.ssh/id_rsa:
Observe que quando você sair, sua senha será esquecida. Você deve
executar o comando sempre que fizer login em um console virtual ou janela
de terminal.
Usando autenticação de
certificado OpenSSH
Introdução aos certificados SSH
O uso da criptografia de chave pública para autenticação requer a cópia da
chave pública de cada cliente para cada servidor no qual o cliente pretende
fazer login. Este sistema não é bem dimensionável e pode ser um fardo
administrativo. Usar uma chave pública de uma autoridade de
certificação ( CA ) para autenticar certificados de cliente elimina a
necessidade de copiar chaves entre vários sistemas. Embora o sistema de
certificado de infraestrutura de chave pública X.509 forneça uma solução
para esse problema, há um processo de envio e validação, com taxas
associadas, para obter um certificado assinado. Como alternativa, o OpenSSH
suporta a criação de certificados simples e infraestrutura de CA associada.
~]#ls -l /etc/ssh/ssh_host*
-r-------. 1 raiz raiz 668 9 de julho de 2014 /etc/ssh/ssh_host_dsa_key
-rw-r--r--. 1 raiz raiz 590 9 de julho de 2014 /etc/ssh/ssh_host_dsa_key.pub
-r-------. 1 raiz raiz 963 9 de julho de 2014 /etc/ssh/ssh_host_key
-rw-r--r--. 1 raiz raiz 627 9 de julho de 2014 /etc/ssh/ssh_host_key.pub
-r-------. 1 raiz raiz 1671 9 de julho de 2014 /etc/ssh/ssh_host_rsa_key
-rw-r--r--. 1 raiz raiz 382 9 de julho de 2014 /etc/ssh/ssh_host_rsa_key.pub
Por exemplo:
TrustedUserCAKeys /etc/ssh/ca_user_key.pub
gato ~/.ssh/ca_host_key.pub
ssh-rsa AAAAB5Wm. == root@ca-server.example.com
~]# vi /etc/ssh/ssh_known_hosts
# Uma chave CA, aceita para qualquer host em *.example.com
@cert-authority *.example.com ssh-rsa AAAAB5Wm.
Onde está o conteúdo de . O acima configura o sistema para confiar na
chave pública do host dos servidores CA. Isto permite a autenticação
global dos certificados apresentados pelos hosts aos usuários
remotos. ssh-rsa AAAAB5Wm. ca_host_key.pub
~]#ls -l /etc/ssh/ssh_host*
-r-------. 1 root root 668 6 de maio 14:38 /etc/ssh/ssh_host_dsa_key
-rw-r--r--. 1 root root 590 6 de maio 14:38 /etc/ssh/ssh_host_dsa_key.pub
-r-------. 1 root root 963 6 de maio 14:38 /etc/ssh/ssh_host_key
-rw-r--r--. 1 root root 627 6 de maio 14:38 /etc/ssh/ssh_host_key.pub
-r-------. 1 root root 1679 6 de maio 14:38 /etc/ssh/ssh_host_rsa_key
-rw-r--r--. 1 root root 382 6 de maio 14:38 /etc/ssh/ssh_host_rsa_key.pub
Copie a chave pública escolhida para o servidor designado como CA. Por
exemplo, do host:
Alternativamente, da CA:
No servidor CA, assine a chave pública do host. Por exemplo, como root :
HostCertificate /etc/ssh/ssh_host_rsa_key-cert.pub
-n "nome1[,nome2,...]"
~]#vi ~/.ssh/authorized_keys
# Uma chave CA, aceita para qualquer host em *.example.com
@cert-authority principais="nome1,nome2" *.example.com ssh-rsa AAAAB5Wm.
No servidor, crie um AuthorizedPrincipalsFile arquivo, por usuário ou
globalmente, e adicione os nomes dos princípios ao arquivo para os
usuários com permissão para efetuar login. Em seguida, no
arquivo, /etc/ssh/sshd_config especifique o arquivo usando
a diretiva AuthorizedPrincipalsFile .
~]$ ls -l ~/.ssh/
Copie a chave pública escolhida para o servidor designado como CA. Por
exemplo:
e para anfitriões:
RevokedKeys /etc/ssh/revoked_keys
Observe que se este arquivo não for legível, a autenticação de chave pública
será recusada para todos os usuários.
Uma nova lista de revogação de chaves pode ser gerada da seguinte forma:
Para testar se uma chave foi revogada, consulte a lista de revogação para
verificar a presença da chave. Use um comando como segue:
Clientes OpenSSH
Da mesma forma que o comando telnet , faça login em uma máquina remota
usando o seguinte comando:
Isso fará o login com o mesmo nome de usuário que você está usando na
máquina local. Se desejar especificar um nome de usuário diferente, use um
comando no seguinte formato:
Na primeira vez que você iniciar uma conexão, será apresentada uma
mensagem semelhante a esta:
Digite yes para aceitar a chave e confirmar a conexão. Você verá um aviso de
que o servidor foi adicionado à lista de hosts conhecidos e um prompt
solicitando sua senha:
Por exemplo, se você deseja transferir taglist.vim para uma máquina remota
chamada penguin.example.com , digite o seguinte em um prompt do shell:
coloque arquivo local [ arquivo remoto ] Transfira o arquivo local para uma máquina
remota.
obter arquivo remoto [ arquivo local ] Transferir arquivo remoto de uma máquina
remota.
Encaminhamento X11
Para abrir uma sessão X11 por meio de uma conexão SSH, use um comando
no seguinte formato:
Observe que o sistema X Window deve ser instalado no sistema remoto antes
que o encaminhamento X11 possa ocorrer. Digite o seguinte comando
para root instalar o grupo de pacotes X11:
~]# dnf grupo instalar "X Window System"
Encaminhamento de porta
O SSH pode proteger TCP/IP protocolos que de outra forma seriam inseguros
por meio do encaminhamento de porta. Ao usar esta técnica, o servidor SSH
se torna um canal criptografado para o cliente SSH.
ssh -L porta local : nome do host remoto : nome de usuário da porta remota @ nom
Recursos adicionais
Para obter mais informações sobre como configurar ou conectar-se a um
servidor OpenSSH no Fedora, consulte os recursos listados abaixo.
Documentação instalada
sshd (8) — A página de manual do sshd daemon documenta as opções de
linha de comando disponíveis e fornece uma lista completa de arquivos e
diretórios de configuração suportados.
ssh (1) — A página de manual do aplicativo cliente ssh fornece uma lista
completa de opções de linha de comando disponíveis e arquivos e
diretórios de configuração suportados.
scp (1) — A página de manual do utilitário scp fornece uma descrição mais
detalhada deste utilitário e seu uso.
sftp (1) — A página de manual do utilitário sftp .
ssh-keygen (1) — A página de manual do utilitário ssh-keygen documenta
detalhadamente como usá-lo para gerar, gerenciar e converter chaves de
autenticação usadas por ssh .
ssh_config (5) — A página de manual nomeada ssh_config documenta as
opções de configuração do cliente SSH disponíveis.
sshd_config (5) — A página de manual nomeada sshd_config fornece uma
descrição completa das opções de configuração do daemon SSH
disponíveis.
Documentação on-line
Página inicial do OpenSSH — A página inicial do OpenSSH contendo
documentação adicional, perguntas frequentes, links para listas de
discussão, relatórios de bugs e outros recursos úteis.
Página inicial do OpenSSL — A página inicial do OpenSSL contendo
documentação adicional, perguntas frequentes, links para listas de
discussão e outros recursos úteis.
1 . Uma conexão multiplexada consiste em vários sinais enviados por um
meio comum e compartilhado. Com o SSH, diferentes canais são
enviados por uma conexão segura comum.