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 esteja no servidor. Dessa forma, mesmo que o servidor esteja comprometido, os registros criptografados ainda devem ser seguros.
Exemplo:
Crie um diretório para trabalhar e crie um novo par de chaves públicas e privadas:
$ mkdir /tmp/1
$ cd /tmp/1
$ ssh-keygen -f key
$ ls
key
key.pub
Converta a chave pública em pem
format:
$ 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 a chave pública pem
format 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ê iria querer mover a chave privada para fora do servidor, e você 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