Sécuriser un serveur Leçon 5
Mises à jour et sauvegardes
Laisser Debian installer seul les correctifs de sécurité, et sauvegarder le site chaque nuit.
À la fin de cette leçon, tu sauras
- Activer les mises à jour de sécurité automatiques
- Créer et lire une archive avec tar
- Programmer une sauvegarde chaque nuit
Les failles se corrigent vite… si on installe les correctifs
Quand une faille est découverte dans OpenSSL, PHP ou le noyau Linux, Debian publie un correctif en quelques heures ou quelques jours. Les attaques automatiques arrivent tout aussi vite. Un serveur qu'on oublie de mettre à jour devient une cible facile en quelques semaines.
Le paquet unattended-upgrades installe tout seul, chaque jour, les mises à jour de sécurité (et seulement elles, par défaut : pas de changement de version risqué).
sudo apt install unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgrades # répondre « Oui » : crée 20auto-upgrades
cat /etc/apt/apt.conf.d/20auto-upgrades
sudo unattended-upgrade --dry-run # essai à blanc : ce qui serait installéAstuce : certaines mises à jour (le noyau) demandent un redémarrage. Le fichier /var/run/reboot-required apparaît alors : un petit script de surveillance peut te prévenir par e-mail.
Pour les conteneurs Docker, c'est différent : il faut retélécharger les images (docker compose pull) puis recréer les conteneurs (docker compose up -d). On le voit dans le cours Docker.
Sauvegarder : la règle 3-2-1
Un disque peut lâcher, un hébergeur peut fermer, une commande peut tout effacer. La règle classique : 3 copies des données, sur 2 supports différents, dont 1 hors du serveur (sur ton PC, par exemple).
tar rassemble des dossiers dans une seule archive compressée :
sudo tar -czf /var/backups/site.tar.gz /var/www/monsite /etc/nginx # c = créer, z = compresser, f = fichier
tar -tzf /var/backups/site.tar.gz # t = lister le contenu
sudo tar -xzf /var/backups/site.tar.gz -C /tmp/restauration # x = extraire, ailleurs
sudo chmod 600 /var/backups/site.tar.gz # elle contient des mots de passe !Chaque nuit, automatiquement
cron lance des commandes à heure fixe. Un fichier dans /etc/cron.d/ contient une ligne par tâche : minute, heure, jour du mois, mois, jour de la semaine, utilisateur, commande.
# m h jour mois jsem utilisateur commande
30 23 * * * root tar -czf /var/backups/site.tar.gz /var/www/monsite* veut dire « tous » : ici, tous les jours à 23 h 30. Les machines récentes utilisent aussi les timers de systemd, qui font la même chose avec plus d'options.
Attention : une sauvegarde qu'on n'a jamais essayé de relire n'est qu'un espoir. Liste au moins son contenu avec tar -tzf de temps en temps.
À retenir
unattended-upgradesinstalle chaque jour les correctifs de sécurité de Debian.- Activation :
sudo dpkg-reconfigure -plow unattended-upgrades; essai :sudo unattended-upgrade --dry-run. - Règle 3-2-1 : 3 copies, 2 supports, 1 hors du serveur.
tar -czfcrée,tar -tzfliste,tar -xzf … -C dossierextrait.- cron :
minute heure jour mois jour-semaine utilisateur commandedans/etc/cron.d/.
Voir la fiche de révision de cette leçon (à imprimer ou à relire avant un contrôle)
Exercice 1 · Les correctifs en automatique
Facile ✓ Réussi- installe
unattended-upgrades; - active-le avec
dpkg-reconfigure(priorité basse,-plow) ; - vérifie le contenu de
/etc/apt/apt.conf.d/20auto-upgrades; - fais un essai à blanc pour voir ce qui serait installé.
Tape tes commandes ici ou dans le fichier à gauche : chaque commande tapée dans le terminal est ajoutée au fichier.
Consignes à réussir
- À faire : unattended-upgrades est installé
- À faire : Les mises à jour automatiques sont activées
- À faire : Le fichier 20auto-upgrades est vérifié
- À faire : Un essai à blanc est lancé
Bravo, cet exercice est réussi !
- Indice 1 :
sudo apt install unattended-upgrades. - Indice 2 :
sudo dpkg-reconfigure -plow unattended-upgradescrée le fichier20auto-upgrades. - Indice 3 :
cat /etc/apt/apt.conf.d/20auto-upgrades, puissudo unattended-upgrade --dry-run.
Toujours bloqué ? Voir une solution
sudo apt install unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgrades
cat /etc/apt/apt.conf.d/20auto-upgrades
sudo unattended-upgrade --dry-run Exercice 2 · Une archive du site
Moyen ✓ Réussi- crée l'archive compressée
/var/backups/monsite.tar.gzqui contient/var/www/monsiteet/etc/ssh(certains fichiers ne sont lisibles qu'en administrateur) ; - liste son contenu pour vérifier que
config.phpy est ; - elle contient un mot de passe : mets-lui les droits
600.
Tape tes commandes ici ou dans le fichier à gauche : chaque commande tapée dans le terminal est ajoutée au fichier.
Consignes à réussir
- À faire : L'archive /var/backups/monsite.tar.gz existe
- À faire : Elle contient le site, config.php compris
- À faire : Elle contient la configuration SSH
- À faire : Son contenu est listé
- À faire : Elle est en 600
Bravo, cet exercice est réussi !
- Indice 1 :
config.phpn'est lisible que par www-data : il fautsudo tar …. - Indice 2 :
sudo tar -czf /var/backups/monsite.tar.gz /var/www/monsite /etc/ssh, puistar -tzf /var/backups/monsite.tar.gz. - Indice 3 : L'archive appartient à root :
sudo chmod 600 /var/backups/monsite.tar.gz.
Toujours bloqué ? Voir une solution
sudo tar -czf /var/backups/monsite.tar.gz /var/www/monsite /etc/ssh
tar -tzf /var/backups/monsite.tar.gz
sudo chmod 600 /var/backups/monsite.tar.gz Exercice 3 · Chaque nuit à 2 h 15
Pour aller plus loin ✓ RéussiProgramme la sauvegarde : crée le fichier /etc/cron.d/sauvegarde avec une ligne qui lance, en root, tous les jours à 2 h 15 :
tar -czf /var/backups/monsite.tar.gz /var/www/monsite
Affiche ensuite le fichier pour vérifier.
Tape tes commandes ici ou dans le fichier à gauche : chaque commande tapée dans le terminal est ajoutée au fichier.
Consignes à réussir
- À faire : /etc/cron.d/sauvegarde existe
- À faire : La tâche tourne à 2 h 15 tous les jours
- À faire : Elle est lancée en root
- À faire : Elle crée la bonne archive
- À faire : Le fichier est affiché
Bravo, cet exercice est réussi !
- Indice 1 : L'ordre des colonnes : minute, heure, jour du mois, mois, jour de la semaine, utilisateur, commande.
- Indice 2 : À 2 h 15 tous les jours :
15 2 * * * root tar …. - Indice 3 :
echo "15 2 * * * root tar -czf /var/backups/monsite.tar.gz /var/www/monsite" | sudo tee /etc/cron.d/sauvegarde.
Toujours bloqué ? Voir une solution
echo "15 2 * * * root tar -czf /var/backups/monsite.tar.gz /var/www/monsite" | sudo tee /etc/cron.d/sauvegarde
cat /etc/cron.d/sauvegarde