Criptografia — LUKS, GPG e OpenSSL
Aula 4 de 6
LUKS (Criptografia de Disco)
# Criar partição criptografada
cryptsetup luksFormat /dev/sdb1
cryptsetup luksFormat --type luks2 --cipher aes-xts-plain64 \
--key-size 512 --hash sha256 /dev/sdb1
# Abrir e fechar
cryptsetup open /dev/sdb1 dados
mkfs.ext4 /dev/mapper/dados
mount /dev/mapper/dados /mnt/dados
cryptsetup close dados
# Informações
cryptsetup luksDump /dev/sdb1
# Adicionar chave (slot)
cryptsetup luksAddKey /dev/sdb1
cryptsetup luksRemoveKey /dev/sdb1 # remover slot
# Backup do header LUKS
cryptsetup luksHeaderBackup /dev/sdb1 --header-backup-file luks-header.backup
cryptsetup luksHeaderRestore /dev/sdb1 --header-backup-file luks-header.backup
Criptografia de Disco Completo (FDE)
# Durante instalação: marcar "encrypt entire disk"
# Pós-instalação com LVM:
cryptsetup luksFormat /dev/sda5
cryptsetup open /dev/sda5 cryptroot
pvcreate /dev/mapper/cryptroot
vgcreate vg /dev/mapper/cryptroot
lvcreate -L 50G -n root vg
lvcreate -L 10G -n swap vg
GPG (Criptografia de Arquivos)
# Gerar par de chaves
gpg --full-generate-key
# Criptografar (simétrica)
gpg -c arquivo.txt # com senha
gpg --output arquivo.txt.gpg \
--symmetric --cipher-algo AES256 arquivo.txt
# Criptografar (assimétrica)
gpg --encrypt --recipient email@exemplo arquivo.txt
gpg --decrypt arquivo.txt.gpg
# Assinar
gpg --sign arquivo.txt # assinatura + documento
gpg --detach-sign arquivo.txt # assinatura separada
gpg --verify arquivo.txt.sig arquivo.txt
# Gerenciar chaves
gpg --list-keys
gpg --list-secret-keys
gpg --export --armor email@exemplo > chave-publica.asc
gpg --import chave-publica.asc
OpenSSL
# Gerar CSR e certificado auto-assinado
openssl req -x509 -newkey rsa:4096 \
-keyout key.pem -out cert.pem -days 365 -nodes
# Verificar certificado
openssl x509 -in cert.pem -text -noout
# Criptografar arquivo
openssl enc -aes-256-cbc -salt -in arquivo.txt -out arquivo.enc
openssl enc -d -aes-256-cbc -in arquivo.enc -out arquivo.txt
# Hash (checksum)
openssl dgst -sha256 arquivo.txt
sha256sum arquivo.txt
# Testar conexão TLS
openssl s_client -connect google.com:443 -tls1_3
SSH Hardening
# /etc/ssh/sshd_config
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
AuthenticationMethods publickey
AllowUsers usuario1 usuario2
Protocol 2
Port 2222 # porta não padrão
MaxAuthTries 3
ClientAliveInterval 300
ClientAliveCountMax 2
LUKS protege dados em repouso. GPG protege arquivos individuais. OpenSSL gerencia TLS para tráfego em trânsito. Use todos juntos.