Backup externo criptografado usando GPG com chave privada nunca no servidor de backup?


11

Eu tenho um servidor de backup, que cria arquivos xzcompactados tarde árvores de diretório para backup. Esses arquivos tar podem ficar enormes (vários TBs), splitdivididos em pedaços (2,5 TB), e cada pedaço é gravado em uma fita LTO-6, e as fitas ficam fora do local.

Agora eu quero adicionar criptografia. Posso GPG criptografar o arquivo tar antes de dividir, usando criptografia de chave pública-privada e com um ou mais destinatários (chaves públicas de administrador).

No entanto, em caso de recuperação, pelo menos um administrador precisa colocar sua chave privada no servidor de backup, pois os arquivos são grandes demais para serem descompactados em qualquer outro lugar.

O GPG usa um esquema de criptografia híbrida sob o capô, com uma cifra simétrica como AES com uma chave de sessão, e somente essa chave de sessão recebe a chave pública-privada criptografada para os destinatários.

Existe uma maneira de permitir que um administrador forneça a chave de sessão para descriptografar o arquivo a ser recuperado sem colocar a chave privada no servidor de backup ?


Eu poderia reinventar a roda, é claro:

  • crie uma chave de sessão aleatória no servidor de backup para cada arquivo a ser copiado
  • use criptografia simétrica GPG para criptografar o arquivo
  • use criptografia assimétrica GPG para criptografar a chave da sessão para cada destinatário

Mas existe uma maneira "padrão" ou embutida ou de práticas recomendadas de alcançar acima?

Respostas:


18

Definitivamente, isso é possível com as opções --show-session-keye --override-session-key.

Primeiro você precisa do início do seu arquivo criptografado. É aqui que a chave de sessão criptografada é armazenada.

root@qwerty:~/gpg# head -c 1024k bigfile.gpg > head.gpg

Em seguida, copie-o para sua estação de trabalho e recupere a chave da sessão

PS C:\Users\redacted\Downloads> gpg --show-session-key .\head.gpg
gpg: encrypted with 2048-bit RSA key, ID DC21D645, created 2016-02-01
  "admin <admin@domain.tld>"
gpg: session key: '9:926EC16DF1248A1C4401F5AD5D86C63C1BD4BF351ECEFB121C57EC209DE3933D'

Agora você pode descriptografar o arquivo usando sua chave de sessão

root@qwerty:~/gpg# gpg -d -o bigfile --override-session-key 9:926EC16DF1248A1C4401F5AD5D86C63C1BD4BF351ECEFB121C57EC209DE3933D bigfile.gpg
gpg: encrypted with 2048-bit RSA key, ID DC21D645, created 2016-02-01
  "admin <admin@domain.tld>"

que é uma solução muito legal para o problema
Lars

Obrigado!! Truque agradável com heade tal. A abordagem resolve minha coceira original.
oberstet

4

Parece que a maior parte da sua pergunta foi respondida, no entanto, se sua equipe de administradores tiver cuidado com as chaves privadas que acabam fora do controle local, você pode considerar sshfsmontar os backups remotos em uma sessão ssh.

Instale via apt no sistema de cada administrador remoto

sudo apt-get install sshfs

Supondo que a configuração ssh dos administradores seja semelhante a abaixo

# configuration for ssh login to remote server
Host Remote
    Hostname Remote.web.domain
    User admin
    IdentityFile ~/.ssh/private.key

Seus administradores podem usar algo como abaixo para montar

# make a mount point
mkdir -p /mnt/remote
# mount remote directory to local file system
sshfs Remote:/path/to/encrypted/dir /mnt/remote

Para desmontar após a inspeção, o administrador remoto pode usar o seguinte

fusermount -u /mnt/remote

O lado bom do uso do sshfs é que apenas as chaves públicas para o GnuPG e ssh são necessárias no servidor remoto, as chaves privadas relacionadas permanecem nos sistemas que os possuem. A segunda parte interessante é que, até ser lida ou acessada, a maioria das informações do arquivo permanece em seu sistema de arquivos relacionado.

Se você ainda estiver procurando ferramentas para facilitar a criptografia automática de logs ou diretórios, talvez queira verificar a ferramenta prof of concept que eu enviei para o GitHub (especificamente o Cenário Quatro escrito para sshsfuso) que, com uma pequena personalização, criptografará felizmente quase todos os dados via GnuPG. Mas esteja avisado de que é experimental e alguns de seus recursos podem causar corrupção de dados se forem mal utilizados. O código fonte é menor que ~ 1600 ~ linhas, portanto é muito possível auditar em menos de um fim de semana.

Pode-se obter segurança adicional configurando a configuração ssh do servidor remoto para chroot os usuários, permitindo apenas o acesso ao diretório criptografado e desativando o shell interativo das chaves de administrador usadas dessa maneira.


2

Se você quiser que a chave secreta seja mantida fora dos discos rígidos, crie um ramdisk (lembra-se deles?) E carregue as chaves secretas no local seguro, não no servidor, conforme necessário. Use-o para descriptografar e, quando terminar, substitua-o por / dev / random. O segredo precisa ser usado na RAM para ser usado pelo GPG, então por que não duas vezes?

Se você não pode permitir que uma chave secreta esteja no servidor, mesmo na RAM, há uma impossibilidade técnica. O GPG deve ter a chave secreta em algum lugar para descriptografar qualquer coisa.

Informações sobre o Ramdisk: /unix/66329/creating-a-ram-disk-on-linux


2
O GPG usa um segredo simétrico por mensagem ("chave de sessão") que é diferente para cada mensagem criptografada. É essa chave simétrica que tecnicamente precisa estar na máquina que descriptografa a respectiva mensagem. Quero manter a chave privada GPG (assimétrica) offline. O último é usado pelo GPG para criptografar a chave de sessão simétrica. Então, eu estou depois de um esquema que faz uso desses aspectos ...
oberstet
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.