Cifrar backup de mysql con gpg y enviarlo por correo

From zerutek.com
Jump to: navigation, search

RECORDATORIO

Esto es el típico recordatorio, una anotación en un papel que siempre extravías.

Fuera de su contexto puede no tener ningún sentido.



10/11/2014

Cifrar backup de mysql con gpg y enviarlo por correo

Si no disponemos de un lugar adecuado donde almacenar el backup de BBDD, y la base de datos no es muy grande, podemos utilizar el correo para este fin. Como el correo no siempre viaja cifrado, el cifrado se convierte en una necesidad.

Herramientas utilizadas

  • mime-tool - Parte del proyecto Topal. Se utiliza para enviar el fichero con el backup. Hay múltiples alternativas que se pueden utiliar en su lugar
  • gnupg - El software de cifrado.
  • mysql - La base de datos utilizada.

El script que realiza el trabajo

 #!/bin/sh

USER=Usuario_BBDD
BBDD=La_BBDD
P=La_Password_de_la_BBDD
DIR=/srv/backup # Directorio donde se almacenen los backups
BACKUP_FILE=BBDD-$BBDD-$(date '+%d%m%Y').sql.gz
MAIL=foo@email.foo
FROM=foo@localhost.foo
ADMIN_MAIL=foo@otroemail.foo
SUBJECT="Backup - $BACKUP_FILE" 

/usr/bin/mysqldump -u $USER --password=$P $BBDD -c |
/bin/gzip -9 > $DIR/$BACKUP_FILE
ERROR=$?

if [ ${ERROR} -eq 0 ];then
    gpg -a --encrypt --trusted-key  A2EE9DF178180EF1 -r $MAIL $DIR/$BACKUP_FILE
    ERROR=$?
fi

if [ $ERROR -ne 0 ];then
	# Si se produce algún error
	echo -e "From: $ADMIN_MAIL\nSubject: Error $ERROR en Backup $BACKUP_FILE\n\nError $ERROR en Backup $BACKUP_FILE" |
	/usr/sbin/sendmail -f $FROM $ADMIN_MAIL
else
	# Si todo va bien
	mime-tool -S "$SUBJECT" -F $FROM $DIR/$BACKUP_FILE.asc |
	/usr/sbin/sendmail -f $FROM $MAIL
	rm $DIR/$BACKUP_FILE.*
fi

gpg

  • gpg -a --encrypt --trusted-key A2EE9DF178180EF1

Ésta opción nos permite cifrar el correo con una clave, aunque ésta no esté firmada, o lo que es lo mismo, que no se considere confiable. Para saber cual es es trusted-key de una clave se puede utilizar:

gpg --list-keys --with-colon

Referencias

http://homepage.ntlworld.com/phil.brooke/topal/rel-72/

http://www.gnupg.org/

http://www.mysql.com/