kb.erickguedes.com
Linux Segurança: Hardening e Proteção

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.