Olhando para a criptografia do disco rígido. a solução parece ser dm-crypt com LUKS usando uma senha. Eu trabalho com vários discos rígidos independentes montados em um pool de discos para leitura. Nesse caso, tenho que digitar uma senha várias vezes.
Existe uma maneira de criptografar os discos rígidos com um arquivo de chave, talvez colocá-lo em uma unidade USB e conectá-lo quando necessário?
Responder1
Uma das melhores maneiras de fazer isso é usar um cartão inteligente com uma chave criptográfica para desbloquear as chaves dos seus dispositivos de bloco criptografados. Você só precisará inserir a senha (chamada de "PIN" pelas ferramentas, mas na verdade é uma senha) uma vez, após a qual ela será armazenada em cache. Isso tem a vantagem adicional de proteger os dados criptografados com algo que você tem (o próprio cartão inteligente, do qual a chave privada não pode ser extraída) e algo que você sabe (a senha).
Formate seu /etc/crypttab
assim:
mapper-name /dev/disk/raw-device /var/lib/filename-containing-encrypted-key \
luks,keyscript=/lib/cryptsetup/scripts/decrypt_opensc
No Debian e derivados, o initramfs-tools notará o keyscript e copiará automaticamente todas as ferramentas e daemons necessários para acessar o cartão inteligente para o initramfs.
Informações sobre como configurar o cartão inteligente e criar (e criptografar) as chaves são encontradas em /usr/share/doc/cryptsetup/README.opensc.gz
.
Você pode usar umYubikey 4ouYubikey NEOentre outros para esse fim.
Notas de implementação: Este recurso tem arestas e aparentemente não funciona imediatamente, então YMMV. A última vez que consegui isso, tive que adicionar os seguintes hacks:
- Desative
systemd
porque ele tenta desastrosamente assumir todo o processo de configuração de dispositivos criptografados,/etc/crypttab
mas não sabe nada sobrekeyscript
o que leva a uma grande FALHA. Felizmente, no Debian, você ainda pode cancelar osystemd
. Instale este script fixer-upper porque
/etc/initramfs-tools/hooks/yubipin
o recurso integrado não instalou suporte suficiente para fazer com que o Yubikey pudesse ser usado no initramfs. Talvez seja necessário ajustar isso.#!/bin/sh PREREQ=cryptroot prereqs() { echo "$PREREQ" } case $1 in prereqs) prereqs exit 0 ;; esac # /scripts/local-top/cryptopensc calls pcscd with the wrong path ln -s ../usr/sbin/pcscd ${DESTDIR}/sbin/pcscd mkdir -p "${DESTDIR}/usr/lib/x86_64-linux-gnu" # opensc-tool wants this dynamically, copy_exec doesn't know that cp -pL /usr/lib/x86_64-linux-gnu/libpcsclite.so.1 "${DESTDIR}/usr/lib/x86_64-linux-gnu/libpcsclite.so.1" mkdir -p "${DESTDIR}/lib/x86_64-linux-gnu" # without this, pcscd aborts with a pthread_cancel error cp -pL /lib/x86_64-linux-gnu/libgcc_s.so.1 "${DESTDIR}/lib/x86_64-linux-gnu/libgcc_s.so.1" # this gets copied as a dangling symlink, fix it rm "${DESTDIR}/usr/lib/pcsc/drivers/ifd-ccid.bundle/Contents/Info.plist" cp -pL /usr/lib/pcsc/drivers/ifd-ccid.bundle/Contents/Info.plist "${DESTDIR}/usr/lib/pcsc/drivers/ifd-ccid.bundle/Contents/Info.plist" # pcscd needs this to open the reader once it has found it cp -pL /lib/x86_64-linux-gnu/libusb-1.0.so.0 "${DESTDIR}/lib/x86_64-linux-gnu/libusb-1.0.so.0"
Instale outro script para
/etc/initramfs-tools/scripts/local-bottom/killpcscd
limpar:#!/bin/sh set -e PREREQ=cryptopensc prereqs() { echo "$PREREQ" } case $1 in prereqs) prereqs exit 0 ;; esac # because cryptopensc does not do it properly killall pcscd
Responder2
É possível simplesmente armazenar a senha do luks em um arquivo.
Eu uso isso no meu computador doméstico; O sistema de arquivos raiz reside em um volume luks regular que eu desbloqueio com minha senha na inicialização. Uma unidade adicional contém um volume luks com uma senha gerada.
Este volume adicional é desbloqueado por um arquivo de senha que reside no sistema de arquivos raiz criptografado. Ele é desbloqueado automaticamente durante a inicialização se o sistema de arquivos raiz estiver desbloqueado.
Meu /etc/crypttab
fica assim:
crypt-root UUID=c5a2cf25-0aae-457e-874f-fca7ea3d5742 none luks
crypt-data UUID=96d79323-246d-49e0-9149-ec3a4cfc1c1e /etc/crypt-data.key luks
O terceiro campo é o arquivo-chave, none
para o sistema de arquivos raiz, mas /etc/crypt-data.key
para o sistema de arquivos de dados. /etc/crypt-data.key
contém a senha do luks:
Tm90IHJlYWxseSBteSBwYXNzd29yZC4K
Observe que uma nova linha ou qualquer outro espaço em branco será usado como parte da senha! Tome cuidado para gerar este arquivo sem uma nova linha final. Além disso, certifique-se de ter permissões estritas:
-rw------- 1 root root 59 Sep 14 23:57 /etc/crypt-data.key
Você deve conseguir duplicar essa abordagem para vários volumes (com senhas distintas ou uma senha compartilhada, à sua escolha).