PhpLDAPPasswd Stratégie Backup
L'application phpLDAPPasswd est utilisée afin de proposer une interface de modification du mot de passe des comptes LDAP. Son installation est assez simple, mais elle nécessite quelques configurations. Cet article présente la mise en place d'une telle stratégie, sous Ubuntu, permettant de réaliser:
- 1 sauvegarde complète une fois tous les quinze jours.
- Export des sauvegardes vers un serveur "externe" via FTP.
- Conservation des trois dernières sauvegardes complètes, et des incrémentales.
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 des installations resteront disponibles.
Sommaire
Votre avis
Nobody voted on this yet
|
|
Objectif
L'installation faite sous Ubuntu met en place différents répertoires / fichiers:
- Répertoire
/var/opt/phpLdapPasswd
: Contient les installations de l'application. - Lien
/etc/apache2/conf.d/phpldappasswd.conf
: Contient la déclaration de la publication sous Apache.
Sous Ubuntu, il existe le répertoire /var/backups
, utilisé par aptitude, dpkg, OpenLDAP ... Cependant, il ne sera pas utilisé dans le cadre de cet article, pour ne pas engendrer d'éventuels effets de bord.
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/phpLDAPPasswd
pour phpLDAPPasswd.
Concernant les logs, elles seront toutes placées dans le répertoire /var/log/backups
.
#sudo mkdir -p /var/opt/backups/phpLDAPPasswd #sudo chmod 740 /var/opt/backups/phpLDAPPasswd #sudo chown root:root /var/opt/backups/phpLDAPPasswd #sudo mkdir /var/log/backups
Sauvegardes
Les configurations, et installations, sont sauvegardées à l'aide de l'outil Duplicity.
Source
Le script phpLDAPPasswd_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/phpLDAPPasswd
avec le code suivant:
#!/bin/bash
dateLogFormat="+%Y-%m-%d %H:%M";
# Backup log
pathLog="/var/log/backups/phpLDAPPasswd_backup.log";
echo "[$(date "$dateLogFormat")] Start backup" >> $pathLog;
echo "[$(date "$dateLogFormat")] Start upload with duplicity" >> $pathLog;
export PASSPHRASE="DUPLICITY PASSPHRASE"
export FTP_PASSWORD=USER_PASSWORD
duplicity remove-all-but-n-full 3 --force ftp://FTP_LOGIN@HOST/backup/phpldappasswd >> $pathLog;
duplicity --include '/var/opt/phpLdapPasswd*' --include /etc/apache2/conf.d/phpldappasswd.conf --exclude '**'
--full-if-older-than 15D / ftp://FTP_LOGIN@HOST/backup/phpldappasswd >> $pathLog;
unset PASSPHRASE
unset FTP_PASSWORD
echo "[$(date "$dateLogFormat")] End upload with duplicity" >> $pathLog;
echo "[$(date "$dateLogFormat")] End backup" >> $pathLog;
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/phpLDAPPasswd/phpLDAPPasswd_backup.sh #sudo chown root:root /var/opt/backups/phpLDAPPasswd/phpLDAPPasswd_backup.sh
Le fonctionnement de ce script est assez simple. 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-all-but-n-full 3
, va conserver uniquement les trois dernières sauvegardes complètes. Puis la seconde instruction, avec l'argument --full-if-older-than 15D
effectue une sauvegarde incrémentale uniquement si la précédente complète n'est pas plus ancienne de quinze jours.
Les instructions --include
permettent de spécifier les emplacements à sauvegarder à partir de la racine du serveur, argument /
. A noter, les emplacements sont placés entre apostrophe, permet d'utiliser le caractère *
.
La sauvegarde doit se faire à partir de la racine, car les répertoires se situent dans plusieurs sous niveaux. L'instruction --exclude '**'
permet de s'affranchir de tous sauvegarder, et seuls les répertoires des instructions --include
sont pris en compte.
Les sauvegardes sont envoyées sur un serveur FTP, à l'emplacement backup/phpldappasswd
. Le serveur FTP est configuré par la value HOST
, en utilisant le login FTP_LOGIN
et le mot de passe USER_PASSWORD
placé dans la variable FTP_PASSWORD
.
Enfin, les exécutions sont tracées dans la log /var/log/backups/phpLDAPPasswd_backup.log
.
Exemples
Le script n'accepte aucun argument. L'exécution s'effectue simplement par la ligne suivante:
#./phpLDAPPasswd_backup.sh
Planification
Une fois que le script de sauvegarde est mis en place, il est possible de l'exécuter manuellement. Mais l'objectif est de l'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 )
35 1 * * 1 root cd / && /var/opt/backups/phpLDAPPasswd/phpLDAPPasswd_backup.sh
#
Les sauvegardes sont planifiées à 1h35 AM, le premier jour de chaque semaine (1 pour l'argument dow), par l'exécution de la commande cd / && /var/opt/backups/phpLDAPPasswd/phpLDAPPasswd_backup.sh
.
Gestions des logs
Un fichier de log est créé par le script mis en place, à l'emplamcent /var/log/backups/phpLDAPPasswd_backup.log
. Comme pour l'ensemble des produits, une rotation de ces logs est mise en place, à l'aide de l'outil Logrotate.
La configuration permet une rotation hebdomadaire, en conservant 3 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 phpLDAPPasswd_backup
, sous le répertoire /etc/logrotate.d
/var/log/backups/phpLDAPAdmin_backup.log {
weekly
missingok
rotate 3
compress
delaycompress
notifempty
create 640 root root
}