Saltar para o conteúdo
102 · LPIC-1 (parte 2)

110.3 Proteção de dados com criptografia

TópicoT19ObjetivoProteger dados usando criptografiaPeso2PáginasLPIC-1 (102) - Version 5.0

Resumo Conciso

OpenSSH — Configuração e uso básico do cliente

ComandoFunção
ssh user@hostConexão remota via SSH
ssh user@host cmdExecutar comando remoto e voltar
ssh hostConectar com mesmo utilizador local
ssh-keygen -t tipoGerar par de chaves (RSA, DSA, ecdsa, ed25519)
ssh-keygen -R hostRemover chave de um host de known_hosts
ssh-copy-id user@hostCopiar chave pública para o servidor
ssh-agent /bin/bashIniciar agente de autenticação
ssh-addAdicionar chave privada ao agente

Algoritmos de chave pública SSH

AlgoritmoBitsEstado
RSA1024+ (padrão 2048)Seguro, amplamente usado
DSA1024 fixoInseguro, preterido desde OpenSSH 7.0
ecdsa256, 384 ou 521Seguro, baseado em curvas elípticas
ed25519256 fixoMais seguro, implementação EdDSA

Chaves de host do servidor OpenSSH

FicheiroConteúdoPermissão
/etc/ssh/ssh_host_*_keyChave privada do host0600 (rw-------)
/etc/ssh/ssh_host_*_key.pubChave pública do host0644 (rw-r--r--)
~/.ssh/known_hostsChaves públicas de hosts conhecidos
~/.ssh/authorized_keysChaves públicas autorizadas no servidor

Túneis de porta SSH

TipoOpçãoDiretivas relevantes no sshd_configFunção
Local-LAllowTcpForwarding, PermitOpenPorta local → host destino via SSH
Remoto-RAllowTcpForwarding, GatewayPortsPorta remota → host local via SSH
X11-XX11ForwardingEncaminhar X Window System

Nota (a correspondência não é 1:1): AllowTcpForwarding ativa/desativa ambos os encaminhamentos TCP (-L e -R) — não é exclusiva do túnel local. GatewayPorts controla a interface de bind dos encaminhamentos remotos: por omissão, os túneis -R ficam ligados a loopback no servidor (inacessíveis a outros hosts); com GatewayPorts yes passam a aceitar ligações externas.

bash
# Túnel local: porta 8585 → www.gnu.org:80 via host localssh -L 8585:www.gnu.org:80 host# Túnel local remoto: via servidor intermediáriossh -L 8585:www.gnu.org:80 -Nf user@server# Túnel remoto: porta 8585 do servidor → localhost:80ssh -R 8585:localhost:80 -Nf user@server# X11 forwardingssh -X user@host

GNU Privacy Guard (GnuPG / GPG)

ComandoFunção
gpg --gen-keyGerar par de chaves
gpg --list-keysListar chaves públicas
gpg --fingerprint USER-IDMostrar impressão digital
gpg --export USER-ID > ficheiroExportar chave pública
gpg --export -a USER-ID > ficheiroExportar em formato ASCII
gpg --import ficheiroImportar chave pública
gpg --encrypt -r USER-ID ficheiroCriptografar ficheiro
gpg --decrypt ficheiroDescriptografar ficheiro
gpg --sign ficheiroAssinar ficheiro (binário)
gpg --clearsign ficheiroAssinar em texto legível
gpg --verify ficheiro.sigVerificar assinatura
gpg --gen-revoke USER-IDCriar certificado de revogação
gpg --output rev.asc --gen-revoke USER-IDGerar revogação em ficheiro
gpg --edit-key USER-IDGerir chaves (menu interativo)

Estrutura do directório ~/.gnupg

Ficheiro/DirectórioFunção
pubring.kbxChaveiro público
private-keys-v1.dChaves privadas
trustdb.gpgBanco de dados de confiabilidade
openpgp-revocs.dCertificados de revogação

Tipos de criptografia GPG

ComponenteFunção
Chave públicaUsada para criptografar / verificar assinaturas
Chave privadaUsada para descriptografar / assinar
USER-IDNome + email do titular da chave
KEY-IDÚltimos 8 dígitos hexadecimais da impressão digital
Local-LAllowTcpForwarding
Remoto/Reverso-RGatewayPorts
X-XX11Forwarding

Exercício Guiado 4 — Túnel local e navegador

Enunciado: Após ssh -L 8888:localhost:80 -Nf ina@halof, o que aparece em http://localhost:8888?

Solução: A página inicial do servidor web (Apache) em execução no host remoto halof, pois localhost é entendido da perspetiva do servidor.

Exercícios Exploratórios

Exercício Exploratório 1 — Diretivas de segurança do SSH

Enunciado: Quais diretivas em /etc/ssh/sshd_config permitem logins de root e restringem a contas locais?

bash
# Permitir logins de rootPermitRootLogin# Restringir a contas locais (exemplo)AllowUsers user1 user2# ouAllowGroups groupname

A diretiva PermitRootLogin controla se o root pode aceder via SSH. A diretiva AllowUsers ou AllowGroups restringe quais utilizadores/grupos podem conectar-se.

Exercício Exploratório 2 — ssh-copy-id

Enunciado: Qual comando transfere a chave pública do cliente para o servidor, sendo possível login por chave pública?

bash
ssh-copy-id user@server

Este comando adiciona a chave pública do cliente ao ~/.ssh/authorized_keys do utilizador remoto de forma automática e segura.

Exercício Exploratório 3 — Dois túneis locais num comando

Enunciado: Crie dois túneis locais (portas 8080 e 8585) para www.gnu.org e www.melpa.org via halof, com opções -Nf.

bash
ssh -L 8080:www.gnu.org:80 -L 8585:www.melpa.org:80 -Nf ina@halof
  • Porta local 8080 encaminha para www.gnu.org:80
  • Porta local 8585 encaminha para www.melpa.org:80
  • -N impede login interativo
  • -f executa o SSH em segundo plano

Exercício Exploratório 4 — GPG: opções curtas

Enunciado: Complete a tabela com a versão curta de cada opção do GPG.

Versão longaVersão curta
--armor-a
--output-o
--recipient-r
--decrypt-d
--encrypt-e
--sign-s

Exercício Exploratório 5 — Exportar chaves GPG

Enunciado: Exporte todas as chaves públicas para all.key e todas as chaves privadas para all_private.key.

bash
# Chaves públicasgpg --export --output all.key# ougpg --export -o all.key# Chaves privadasgpg --export-secret-keys --output all_private.key# ougpg --export-secret-keys -o all_private.key

Exercício Exploratório 6 — GPG: --edit-key e --clearsign

Enunciado: Qual opção permite gerenciar chaves por menu interativo? E qual faz assinatura em texto não criptografado?

  • Menu de gestão: --edit-key
  • Assinatura em texto legível: --clearsign
bash
# Gerir chavesgpg --edit-key USER-ID# Assinar em texto legívelgpg --clearsign ficheiro.txt# Gera ficheiro.txt.asc com texto legível e assinatura