Script Bash para criptografar automaticamente arquivos de log

Script Bash para criptografar automaticamente arquivos de log

Tenho alguns registros usados ​​como prova em questões de privacidade do GDPR. O aplicativo lida com dados pessoais e registra quem os usa para fazer o quê. Os registros não devem ser lidos por ninguém, a menos que haja uma investigação de abuso em andamento.

Como posso armazenar esses logs que serão rotacionados todos os dias, de forma criptografada segura (localmente)? Estou pensando em um trabalho root crontab, mas a senha não deve estar em texto simples. Todas as sugestões são muito apreciadas.

$ ls -ltrh
-rw-r----- 1 appuser appuser  83K May 27 23:55 gdpr.log.2018-05-27
-rw-r----- 1 appuser appuser 905K May 28 23:55 gdpr.log.2018-05-28
-rw-r----- 1 appuser appuser 3.0M May 29 23:40 gdpr.log.2018-05-29
-rw-r----- 1 appuser appuser 462K May 30 09:49 gdpr.log

Responder1

Você pode criptografar os arquivos usando uma chave pública que reside no servidor, que só pode ser descriptografada usando uma chave privada que não está no servidor. Dessa forma, mesmo que o servidor esteja comprometido, os logs criptografados ainda deverão estar seguros.

Exemplo:

Crie um diretório para trabalhar e crie um novo par de chaves pública e privada:

$ mkdir /tmp/1
$ cd /tmp/1
$ ssh-keygen -f key
$ ls
key
key.pub

Converta a chave pública para pemo formato:

$ openssl rsa -in key -pubout > key.pub.pem

Crie um arquivo de teste, chamado file, com o conteúdo hello:

$ echo hello > file

Criptografe o arquivo usando o pemformato de chave pública e grave a saída em um arquivo chamado encrypted:

$ cat file | openssl rsautl -encrypt -pubin -inkey key.pub.pem > encrypted_file

Descriptografe o arquivo usando a chave privada:

$ cat encrypted_file | openssl rsautl -decrypt -inkey key
hello

Obviamente, você desejaria mover a chave privada para fora do servidor e poderia colocar os comandos de criptografia em um cronjob. Algo como:

for file in /var/log/dir/*;do
    cat "${file}" | openssl rsautl -encrypt -pubin -inkey /path/to/key.pub.pem > "${file}.encrypted" && rm "${file}"
done

Responder2

Qualquer pessoa remotamente familiarizada com o assunto provavelmente poderia fazer uma centena de perguntas para estabelecer o que seria uma estrutura realista para uma solução. Dito isto, você já considerou a criptografia de disco completo? É realmente,realmentesimples em comparação com a sobrecarga de construção de qualquer tipo de automação ou procedimento e provavelmente é bom o suficiente para cobrir sua responsabilidade (não sou advogado), a menos que você tenha acesso remoto.

informação relacionada