Retracer et corriger une fuite de sauvegarde

LinuxBeginner
Pratiquer maintenant

Introduction

Le site d'assistance de Northstar propose des pages d'aide et des téléchargements autorisés. Un téléchargement inhabituel d'archive laisse penser qu'une sauvegarde interne a été placée par erreur parmi les fichiers publics. Vous êtes l'ingénieur d'astreinte disposant d'un accès de maintenance au site.

Vous retracerez la requête, relierez son URL à un fichier du serveur web, déplacerez la sauvegarde vers un stockage privé et vérifierez que le site fonctionne toujours. Une connaissance élémentaire du terminal suffit ; les codes d'état HTTP et la correspondance avec la racine web sont présentés ici. Toutes les données et tout le trafic sont synthétiques.

Enquêter sur le téléchargement suspect

Dans cette étape, vous retracerez un téléchargement suspect, récupérerez l'archive et vérifierez si elle contient des données internes.

Votre environnement est prêt. Workstation est votre terminal client, déjà placé dans /home/labex/project. Web Server est un terminal de maintenance déjà connecté au serveur du site. Passez d'un onglet à l'autre selon les instructions. Topology montre leur relation et l'accessibilité actuelle du site.

Ouvrez Topology pour repérer le client et le serveur, puis revenez à Workstation. L'état indique si la page d'accueil répond ; il ne dit pas si les fichiers privés sont protégés.

Topologie de Workstation et Web Server

Vérifier les accès normaux

Utilisez Workstation. curl envoie une requête HTTP et affiche sa réponse. -sS masque la progression tout en affichant les erreurs de connexion. L'adresse 127.0.0.1:8081 est le point d'accès au site depuis Workstation. 127.0.0.1 désigne la machine locale : dans Web Server, cette même adresse désigne le serveur lui-même, et non Workstation.

curl -sS http://127.0.0.1:8081/

La réponse contient Northstar Support et des liens vers l'aide et le guide du produit. Un répertoire public, ou racine web, est le répertoire du système de fichiers dont le serveur rend le contenu accessible par des URL.

Le guide du produit est volontairement public. Récupérez-le avant toute modification :

curl -sS http://127.0.0.1:8081/downloads/product-guide.txt

La première ligne est Northstar Product Guide. L'exemple autorisé à l'adresse /downloads/public-examples.tar est également public et doit rester accessible, même si son nom évoque une archive.

Retracer le téléchargement

Passez à Web Server. cat affiche un fichier texte :

cat /var/log/nginx/site-access.log

Nginx est le serveur web qui traite ces requêtes. Chaque ligne du journal d'accès contient une adresse client, une date et une heure, une requête, un code d'état, la taille de la réponse en octets et un agent utilisateur. GET demande une ressource ; l'agent utilisateur identifie le logiciel à l'origine de la requête. 200 indique une réponse réussie ; 404 indique que la ressource demandée est introuvable. La redirection réseau peut modifier l'adresse client enregistrée : ne supposez pas qu'elle identifie une personne. Les entrées TopologyHealth/1.0 sont les contrôles de santé de la vue de l'environnement elle-même.

Repérez des requêtes échouées comme /admin, suivies d'une requête réussie vers /backups/support-backup.tar. Pour filtrer le journal, utilisez grep, qui affiche les lignes correspondant au texte fourni :

grep 'support-backup.tar' /var/log/nginx/site-access.log

La ligne correspondante doit inclure GET /backups/support-backup.tar et le code 200. Cela suggère un téléchargement, mais il faut examiner la réponse avant de conclure à l'exposition de données internes. Par exemple, les champs stables de la ligne pertinente ressemblent à ceci :

... "GET /backups/support-backup.tar HTTP/1.1" 200 10240 ... "ExternalClient/1.0"

L'adresse et l'horodatage varieront. Le chemin, la réponse réussie et le contenu de l'archive sont les indices utiles.

Confirmer l'exposition de la sauvegarde

Revenez à Workstation. -o écrit la réponse dans le fichier indiqué au lieu de l'afficher :

curl -sS -o /home/labex/project/support-backup.tar http://127.0.0.1:8081/backups/support-backup.tar

tar lit les archives. -t en liste les membres et -f sélectionne l'archive :

tar -tf /home/labex/project/support-backup.tar

Vous devez voir internal-customers.txt. -x extrait un membre ; -O envoie son contenu au terminal sans créer de fichier extrait :

tar -xOf /home/labex/project/support-backup.tar internal-customers.txt

Le contenu commence par INTERNAL ONLY et décrit des données clients synthétiques. Cela confirme que la réponse réussie contenait des données internes, et non une archive publique autorisée.

Déplacer la sauvegarde vers un stockage privé

Dans cette étape, vous retirerez la sauvegarde interne du site public tout en conservant son contenu pour la maintenance. Utilisez Web Server pour localiser le fichier public et appliquer la correction.

Localiser le fichier public

Passez à Web Server et lisez la configuration du site :

cat /etc/nginx/conf.d/default.conf

root /srv/site; associe /backups/support-backup.tar à /srv/site/backups/support-backup.tar. autoindex off; désactive les listes de répertoires, mais ne bloque pas l'accès direct à un nom de fichier connu. Un fichier sans lien n'est pas privé pour autant.

L'option -l affiche une liste détaillée avec la taille, le propriétaire et les droits d'accès. Utilisez-la pour examiner le fichier public :

ls -l /srv/site/backups/support-backup.tar

Le chemin affiché confirme que l'archive se trouve sous la racine web configurée.

Conserver la sauvegarde en dehors du site

Le répertoire privé /srv/private-backups existe déjà en dehors de /srv/site. Vous disposez de droits de maintenance dans ce conteneur cible. mv déplace un fichier en conservant son contenu :

mv /srv/site/backups/support-backup.tar /srv/private-backups/support-backup.tar

Le site ne peut plus servir ce fichier par sa correspondance habituelle avec le répertoire public. La sauvegarde est ainsi conservée pour la maintenance autorisée plutôt que supprimée. Aucun rechargement de Nginx n'est nécessaire : seul l'emplacement du fichier a changé, pas la configuration du serveur.

Vérifiez depuis Web Server que la copie privée reste lisible :

tar -xOf /srv/private-backups/support-backup.tar internal-customers.txt

Vous devez retrouver les mêmes données de test internes.

Vérifier la confidentialité et la disponibilité du site

Dans cette étape, vous testerez la limite d'accès finale et confirmerez que les ressources publiques autorisées fonctionnent toujours.

Revenez à Workstation. -o /dev/null ignore le corps de la réponse et -w affiche les informations de réponse demandées. %{http_code} sélectionne le code HTTP ; \n ajoute un saut de ligne :

curl -sS -o /dev/null -w '%{http_code}\n' http://127.0.0.1:8081/backups/support-backup.tar

Le résultat attendu est 404. Cette commande curl se termine tout de même avec succès : une réponse d'erreur HTTP est différente d'un échec de connexion. Arrêter le serveur ferait échouer les contrôles de disponibilité du cours.

Contrôlez les pages normales et les téléchargements autorisés de la même manière :

curl -sS -o /dev/null -w '%{http_code}\n' http://127.0.0.1:8081/
curl -sS -o /dev/null -w '%{http_code}\n' http://127.0.0.1:8081/help.html
curl -sS http://127.0.0.1:8081/downloads/product-guide.txt
curl -sS -o /home/labex/project/public-examples.tar http://127.0.0.1:8081/downloads/public-examples.tar
tar -xOf /home/labex/project/public-examples.tar example.txt

Les pages renvoient 200. Le guide commence par Northstar Product Guide et le membre de l'archive d'exemple contient Public support examples. Dans Topology, Website reachable confirme que la page d'accueil répond, pas que la fuite est corrigée. Les contrôles finaux vérifient séparément la confidentialité et la disponibilité.

Résumé

Vous avez relié un téléchargement public au fichier correspondant sur le serveur, déplacé les données internes hors de la racine web et vérifié que les téléchargements privés échouent tandis que les services publics restent disponibles.