Script Bash para cifrar automáticamente archivos de registro

Script Bash para cifrar automáticamente archivos de registro

Tengo algunos registros que se utilizan como prueba en cuestiones de privacidad del RGPD. La aplicación maneja datos personales y registra quién los usa para hacer qué. Nadie debe leer los registros a menos que haya una investigación de abuso en curso.

¿Cómo puedo almacenar estos registros que se rotarán todos los días, de forma cifrada y segura (localmente)? Estoy pensando en un trabajo crontab raíz, pero la contraseña no debe estar en texto sin formato. Todas las sugerencias son muy 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

Respuesta1

Puede cifrar los archivos utilizando una clave pública que se encuentra en el servidor, que sólo se puede descifrar utilizando una clave privada que no está en el servidor. De esta manera, incluso si el servidor está comprometido, los registros cifrados deberían seguir estando seguros.

Ejemplo:

Cree un directorio para trabajar y cree un nuevo par de claves públicas y privadas:

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

Convierta la clave pública al pemformato:

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

Cree un archivo de prueba, llamado file, con el contenido hello:

$ echo hello > file

Cifre el archivo usando el pemformato de clave pública y escriba el resultado en un archivo llamado encrypted:

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

Descifre el archivo usando la clave privada:

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

Obviamente, querrás sacar la clave privada del servidor y podrías poner los comandos de cifrado en un 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

Respuesta2

Cualquiera que esté remotamente familiarizado con el tema probablemente podría hacer cientos de preguntas para establecer cuál sería un marco realista para una solución. Dicho esto, ¿ha considerado el cifrado de disco completo? Es realmente,en realidadsimple en comparación con los gastos generales que implica construir cualquier tipo de automatización o procedimiento, y probablemente sea lo suficientemente bueno para cubrir su responsabilidad (no soy abogado) a menos que esté rooteado de forma remota.

información relacionada