AlexNogard: Tutos IT

Linux & Opensource : Supervision : Centreon, Nagios, Owncloud ..

By

Backup SQL automatique et securise

Backup Mysql Securisé

Backup Mysql Securisé

Comme beaucoup d’autres, j’en ai marre de me connecter en SSH sur mon serveur pour faire un backup MySQL et de me l’envoyer en SCP.
Il existe des solutions pour backup sur wordpress ou tout autre contenu, mais beaucoup ne sont pas sécurisés, il suffit de faire un “google hack” pour wordpress par exemple :

Je trouve ça assez honteux … J’ai donc décidé de publier un article sur le sujet, sur la création d’un script shell crypté qui va nous créer un fichier de backup zippé et protégé par mot de passe puis nous envoyer tout ça par mail, de manière sécurisé.

Pour se faire, nous avons besoin de shc: un soft qui va encrypter notre script shell, et de sendmail que nous allons utiliser en relais SMTP : Relay SMTP avec Sendmail -> gmail + certificat ssl

Installation de shc :

# yum install -y shc

Ensuite, nous allons créer notre petit script :

#!/bin/bash
echo ‘backup sql’
mysqldump -u root -p”” –all-databases > database_`date +%Y%m%d`.sql
zip -P password`date +%Y%m%d`  database_`date +%Y%m%d`.sql.zip database_`date +%Y%m%d`.sql
rm -f database_`date +%Y%m%d`.sql
echo ‘compression effectuee’
echo “backup du `date +%Y%m%d`” | mail -s ‘file attached’ -a database_`date +%Y%m%d`.sql.zip adresse@mail.com
sleep 20
rm -f database_`date +%Y%m%d`.sql.zip
echo “mail envoyé, fichier supprimé”

Explications :
- On récupère toutes nos bases SQL dans un fichier.
- On compresse notre base avec un mot de passe, celui-ci est composé d’une base statique + la date du jour.
- On supprime notre fichier sql.
- On envoie notre backup par mail.
- On attend 20 secondes.
- On supprime notre backup en local.

Nous allons maintenant encrypter notre script bash :

# shc -v -r -f backup.sh

nous obtenons 3 fichiers :
- backup.sh
- backup.sh.x
- backup.sh.x.c

En effet, notre fichier backup a été compilé en C.
Nous supprimons donc les deux fichiers qui ne nous servent plus :

# rm -f backup.sh.x.c
# rm -f backup.sh

Ajout d’un cron Job pour automatiser les backups :

00 4 * * 0 root /root/backup.sh.x

Vous pouvez maintenant vous envoyer vos backups par mail de manière un peu plus sécurisé :).

Si vous avez des remarques concernant cet article ou un problème, n’hésitez surtout pas à commenter !

2 Responses to Backup SQL automatique et securise

  1. Jeremy says:

    Sympa le script shell, c’est vrai qu’on trouve beaucoup de blogs WordPress non sécurisés :/

  2. Florent says:

    Super article, mis en place, merci encore.

    Pour les utilisateurs de Debian, remplacez cette ligne :

    echo « backup du `date +%Y%m%d` » | mail -s ‘file attached’ -a database_`date +%Y%m%d`.sql.zip adresse@mail.com

    Par :

    echo « backup du `date +%Y%m%d` » | mutt -s “file attached” -a database_`date +%Y%m%d`.sql.zip — adresse@mail.com

    ;)

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>