OpenLDAP Stratégie Backup

De EjnTricks

L'utilisation d'un serveur LDAP permet de centraliser la gestion des comptes utilisateurs. Ils sont régulièrement utilisés pour gérer l'authentification par les applications. Il serait donc dommage de perdre les déclaration de tous les comptes, rendant les accès aux applications impossible. Il est donc important d'effectuer régulièrement des sauvegardes des dépôts. Cet article présente la mise en place d'une telle stratégie, sous Ubuntu, permettant de réaliser:

  • 1 sauvegarde complète tous les mois.
  • Export des sauvegardes vers un serveur "externe" via FTP.
  • Suppression des sauvegardes plus anciennes d'un mois.

La synchronisation des sauvegardes s'effectue à l'aide de l'outil de backup Duplicity. Le fait d'externaliser les sauvegardes apporte une garantie supplémentaire. En effet, si le serveur venait à être en panne, les sauvegardes de OpenLDAP resteroent disponibles.


Hand-icon.png Votre avis

Nobody voted on this yet

 You need to enable JavaScript to vote


Viewer icon.png Objectif

Tous les scripts et données seront stockés dans un nouveau répertoire /var/opt/backups (pour l'ensemble des stratégies) et plus particulièrement dans le répertoire /var/opt/backups/ldap. Concernant les logs, elles seront toutes placées dans le répertoire /var/log/backups.

#sudo mkdir /var/opt/backups
#sudo mkdir /var/opt/backups/ldap
#sudo mkdir /var/opt/backups/ldap/dump
#sudo chmod -R 740 /var/opt/backups/ldap
#sudo chown -R root:root /var/opt/backups/ldap
#sudo mkdir /var/log/backups


Icon-database-process.png Export des données

Command-icon.png Source

Le script va effectuer un export de la structure et de l'ensemble des bases. Dans ce cas, il existe deux bases, la configuration et les données.

Le script ldap_dump.sh est mis en place, avec des sécurités autorisant uniquement le compte root à le modifier, dans le répertoire /var/opt/backups/ldap avec le code suivant:

Le fonctionnement de ce script est assez simple. Les exports sont stockés dans le répertoire /var/opt/backups/ldap/dump et automatiquement compressés à l'aide de l'outil gzip, lors de l'exécution de la commande slapcat. Les anciennes sauvegardes sont supprimées, avec un temps de rétention de un jour. En effet, il est prévu d'exécuter ce script très peu régulièrement.

Pour des raisons de sécurités, les permissions des fichiers générés donnent un droit d'écriture uniquement sur le compte root.

Enfin, les exécutions sont tracées dans la log /var/log/backups/ldap_dump.log.

Examples-icon.png Exemples

Le script n'accepte aucun argument. L'exécution s'effectue simplement par la ligne suivante:

#./ldap_dump.sh


Icon-database-backup.png Sauvegarde des exports

Command-icon.png Source

La seconde étape consiste à exécuter les export ldap, puis d'utiliser Duplicity afin de sauvegarder ces fichiers sur un serveur distant via FTP.

Le script ldap_backup.sh est mis en place, avec des sécurités autorisant uniquement le compte root à le modifier, dans le répertoire /var/opt/backups/ldap avec le code suivant:

Attention à l'utilisation de l'instruction export, surtout pour la PASSPHRASE. En effet, si celle-ci contient des espaces, il est impératif de la placer entre le caractère ".

Le script est créé avec un droit de modification et exécution uniquement pour le compte root:

#sudo chmod 740 /var/opt/backups/ldap/ldap_backup.sh
#sudo chown root:root /var/opt/backups/ldap/ldap_backup.sh

Le fonctionnement de ce script est assez simple. Le script ldap_dump.sh est exécuté. Puis deux variables d'environnement sont mises en place:

  • PASSPHRASE: Phrase pour le cryptage des données par duplicity.
  • FTP_PASSWORD: Le mot de passe FTP utilisé pour se connecté via duplicity

La première instruction, avec l'argument remove-older-than 1M, va purger les sauvegardes plus vieilles d'un mois. Puis la seconde instruction, avec l'argument full effectue une sauvegarde complète.

Le résultat de l'export est ensuite envoyé sur un serveur FTP, configuré par la value HOST, en utilisant le login FTP_LOGIN et le mot de passe USER_PASSWORD placé dans la variable FTP_PASSWORD. Les sauvegardes sont stockées à l'emplacement backup/ldap/dump à la racine du compte après connexion sur FTP.

Enfin, les exécutions sont tracées dans la log /var/log/backups/ldap_backup.log.

Examples-icon.png Exemples

Le script n'accepte aucun argument. L'exécution s'effectue simplement par la ligne suivante:

#./ldap_backup.sh


Scheduled-Tasks-icon.png Planification

Une fois que les scripts de sauvegarde sont mis en place, il est possible de les exécuter manuellement. Mais l'objectif est de les exécuter automatiquement et régulièrement sans s'en préoccuper. Dans le cadre de cette implémentation, la planification est réalisée à l'aide de l'outil Crontab disponible sur les systèmes Linux. L'outil Anacron n'a pas été utilisé car les planifications souhaitées doivent se faire à des heures et des jours particuliers.

La mise en place s'effectue en modifiant le fichier /etc/crontab pour y ajouter une ligne.

# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command
17 *    * * *   root    cd / && run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
15 1    * * 1   root    cd / && /var/opt/backups/ldap/ldap_backup.sh
#

Les sauvegardes sont planifiées à 1h15 AM, le premier jour de chaque semaine (1 pour l'argument dow), par l'exécution de la commande cd / && /var/opt/backups/ldap/ldap_backup.sh.

Icon-log.png Gestions des logs

Des fichiers de log sont créés par les deux scripts mis en place. Comme pour l'ensemble des produits, une rotation de ces logs est mise en place, à l'aide de l'outil Logrotate. L'ensemble des logs se trouvent donc dans le répertoire /var/log/backups avec le nom commençant par ldap_. La configuration permet une rotation annuel, en conservant 1 rotations. Les rotations sont compressées, en asynchrone, et créées avec un accès en modification au compte root.

Cette configuration est mise en place dans le fichier ldap_backup, sous le répertoire /etc/logrotate.d

/var/log/backups/ldap_*.log {
        yearly
        missingok
        rotate 1
        compress
        delaycompress
        notifempty
        create 640 root root
}