Dans ce labo, vous continuerez à appliquer les meilleures pratiques pour sécuriser un serveur web nginx sur serveurprof.com. Commencez par vous familiariser avec nginx en lisant ce court tutoriel.
Vous ĂȘtes prĂȘts? Allons-y! Pour ce labo, vous nâaurez pas besoin de machine virtuelle. Le serveur nginx est dĂ©jĂ installĂ© sur serveurprof.com et vous ferez toutes les manipulations directement sur le serveur. Vous pouvez ouvrir un terminal avec la combinaison des touches CTRL+ALT+T. Attention, il y aura des manipulations semblables Ă effectuer pour lâexamen pratique de la semaine 14 et vous n'aurez pas droit Ă Internet. Notez toutes vos manipulations et commandes et faites la remise sur Moodle. Assurez-vous de bien comprendre ce que vous faites.
Connectez-vous maintenant en SSH Ă serveurprof.com avec vos identifiants.
Tip
Pour faciliter votre travail, gardez trois onglets SSH ouverts. Un premier pour le processus actif du serveur, un deuxiÚme pour l'édition du fichier de config et finalement un troisiÚme pour les commandes du terminal.
Voici aussi un rappel des commandes disponibles pour contrĂŽler nginx dans le conteneur Podman :
Commande | Usage |
---|---|
nginx_start -p <no de port> | DĂ©marre ou redĂ©marre le serveur nginx sur le port de votre choix. Utilisez le mĂȘme port que dans votre configuration nginx, soit un port entre 1025 et 49151. Vous pouvez arrĂȘter le serveur avec les touches CTRL+C. |
nginx_reload | Recharge le serveur nginx aprĂšs une modification de la configuration. |
Si vous obtenez un message dâerreur 403 Forbidden lorsque vous ouvrez la page web, câest que vous devez modifier les permissions du rĂ©pertoire public_html pour permettre la lecture et lâexĂ©cution du rĂ©pertoire et les sous-rĂ©pertoires pour tout le monde.
Dans votre répertoire home, vous trouverez les fichiers
login.html
et recherche.php
. Copiez ces
deux fichiers dans le répertoire public_html
.
Attention de bien régler les permissions des fichiers.
Le script PHP qui permet dâeffectuer une recherche nâest pas sĂ©curisĂ©. Ouvrez la page dans votre navigateur et effectuez une attaque XSS en injectant le script suivant dans le champ de recherche :
<script>alert("hacked!")</script>
Appuyez le bouton Rechercher et assurez-vous que la fenĂȘtre contextuelle d'alerte s'affiche bien.
De quel type dâattaque XSS sâagit-il?
Modifiez maintenant le fichier recherche.php
pour
que la requĂȘte soumise par lâutilisateur soit «nettoyĂ©e» avant
dâĂȘtre affichĂ©e.
Une fois vos modifications effectuĂ©es, vĂ©rifiez qu'il n'est plus possible d'effectuer cette mĂȘme attaque.
Modifiez également la configuration nginx pour que seuls les
scripts provenant du mĂȘme hĂŽte puissent ĂȘtre exĂ©cutĂ©s Ă l'aide d'un
Content Security Policy
. De cette façon, un attaquant
ne pourra pas injecter un script provenant dâun domaine autre que
serveurprof.com.
Ouvrez maintenant le fichier login.html
dans votre
navigateur. Inspectez la source de la page en cliquant droit avec la
souris et en sélectionnant Code Source de la page dans le
menu contextuel. Regardez de plus prĂšs le code html du formulaire de
connexion.
Comment un attaquant récupÚre-t-il vos informations de login?
Modifiez la configuration du serveur pour que seuls les
iframe
provenant du mĂȘme domaine puissent ĂȘtre chargĂ©s.
Ajoutez la rĂšgle au Content Security Policy
créé Ă
l'étape 1.
Lorsque votre serveur rĂ©pond Ă une requĂȘte HTTP, il expose la version de nginx installĂ©e sur le serveur. Cela donne des informations prĂ©cieuses Ă un Ă©ventuel attaquant. Il pourrait exploiter une faille de sĂ©curitĂ© connue dans la version de votre serveur, surtout si celui-ci n'a pas Ă©tĂ© mis Ă jour depuis un certain temps.
Dans un premier temps, identifiez la version de votre serveur nginx. Pour se faire, ouvrez d'abord l'URL suivant (n'importe quel URL valide de votre site fera l'affaire) :
https://serveurprof.com:<no de port>/
Cliquez droit avec la souris n'importe oĂč sur la page et
sélectionnez l'option Inspecter du menu déroulant. Cela
ouvrira les outils de développeur. Cliquez l'onglet Réseau.
Rechargez maintenant la page. Cliquez le premier élément affichant
/
comme fichier. Ă droite se trouve une fenĂȘtre donnant
les informations sur la requĂȘte effectuĂ©e. Trouvez les en-tĂȘtes de
réponse. L'étiquette Server:
expose la version de votre
serveur nginx.
Quelle est la version du serveur?
Vous devez maintenant trouver la bonne directive Ă ajouter Ă
votre configuration nginx afin de masquer la version du serveur. Une
fois que vous aurez effectué la modification et rechargé le serveur,
consultez à nouveau la page et trouvez l'étiquette
Server:
. Si vous avez réussi, la version de nginx ne
s'affiche plus.
Bravo! Vous avez terminé le labo!