🔒 Labo – Sécurisez le serveur nginx!

Dans ce labo, vous devrez appliquez les meilleures pratiques pour configurer et 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.

Dans votre répertoire home, vous trouverez un répertoire nginx. Dans le répertoire se trouve le fichier nginx.conf contenant la configuration nginx pour votre site web.

Vous trouverez aussi un répertoire public_html qui contient les fichiers statiques hébergés par votre serveur web.

Bien! Maintenant que nous avons identifié l’arborescence, commençons les manipulations.

Avant d’apporter des modifications au fichier de configuration nginx, il vaut mieux en faire une copie pour pouvoir le restaurer en cas de problème. Utiliser la commande cp pour copier le fichier nginx.conf et ajoutez l’extension .bak au fichier pour signifier qu’il s’agit d’un fichier de backup.

Vous devez maintenant modifier le fichier de configuration nginx pour changer le port http par défaut (80) par un numéro de port de votre choix entre 1025 et 49151. Choisissez-le au hasard!

Vous devez aussi changer la directive root pour que le chemin d’accès absolu pointe vers le répertoire public_html dans votre répertoire utilisateur.

Vous utiliserez l'outil de conteneurisation open source podman pour gérer votre propre serveur nginx. Des scripts ont été conçus pour vous faciliter la tâche. Pour démarrer le serveur nginx, ouvrez un deuxième onglet sur serveurprof.com et entrez la commande suivante:

nginx_start -p <no de port>

Remplacez <no de port> par le numéro de port que vous avez choix. Si un message d'erreur s'affiche, c'est qu'un autre utilisateur est déjà connecté sur ce port. Choisissez-en alors un autre et modifiez votre configuration en conséquence.

Le serveur reste actif tant que vous ne terminez pas le processus avec la commande CTRL+C ou en fermant l'onglet. Le processus affiche log de sortie du serveur.

Dans un autre onglet, vous pouvez vérifier si le serveur a bien démarré avec la commande suivante :

podman ps

Pour recharger la configuration nginx après tout changement, vous devez entrez la commande suivante:

nginx_reload

Si un message d'erreur s'affiche, un problème avec votre configuration empêche le serveur de redémarrer.

Ouvrez maintenant Firefox votre espace web dans un navigateur. Pour y accéder, ouvrez le lien suivant dans votre navigateur en remplaçant par le numéro de port que vous avez choisi. (ex. : http://serveurprof.com:7431)

http://serveurprof.com:<no de port>

Attention à ne pas utiliser https. Le site n’est pas encore sécurisé. Si tout a bien fonctionné, vous devriez voir le titre 403 Forbidden. Il y a encore quelques problèmes à régler…

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.

Étape 1 - Permissions des répertoires et fichiers

La première étape du labo consiste à sécuriser les dossiers et fichiers en leur assignant les bonnes permissions. Vous devrez utiliser la commandes chgrp pour changer le groupe et chmod pour modifier les permissions. Vous pouvez vérifier les permissions accordées aux fichiers et dossiers avec la commande ls -l.

Changez le groupe et les permissions du répertoire public_html et tout son contenu (de façon récursive) de la façon suivante:

Si vous avez réussi, un message de confirmation devrait apparaître lorsque vous recharger le site.

Tip

Consultez ce tutoriel pour vous rafraîchir la mémoire concernant les utilisateurs linux et la gestion des permissions.

Étape 2 - Encodage des pages

Ouvrez le lien vers etape2.html :

http://serveurprof.com:<no de port>/etape2.html

Il semblerait qu’il y ait un problème d’encodage des caractères. Le serveur ne spécifie pas le format d’encodage qui devrait être UTF-8.

Pour corriger le problème, vous devez modifier la configuration nginx et ajouter une directive pour spécifier le bon encodage qui doit être UTF-8.

Une fois la directive ajoutée, utilisez la commande mentionnée plus haut pour recharger le serveur.

Si tout a bien fonctionné, les réponses du serveur incluent maintenant le bon encodage dans l’en-tête de réponse Content-Type.

Vous pouvez recharger la page dans le navigaeur. Il se peut que vous deviez faire une «actualisation forcée» avec la combinaison des touches CTRL+MAJ+R pour forcer le navigateur à ne pas utiliser la cache et recharger la page à partir du serveur.

Étape 3 - Chiffrement du site avec SSL

Vous devez maintenant sécuriser le site web pour que celui-ci fonctionne en https. Voici les emplacements du certificat et de la clé privée pour serveurprof.com :

nginx/certs/fullchain.pem

nginx/certs/privkey.pem

À partir de ces informations, trouvez comment modifier la configuration nginx pour permettre les connections sécurisées. Les seules manipulations à faire sont dans le fichier de configuration nginx.conf.

Warning

La configuration ssl se fait normalement sur le port 443. Dans ce cas-ci, vous devrez configurer SSL sur le port que vous avez choisi. Vous devrez aussi indiquer les chemins d’accès absolu vers les fichiers

Si vous avez réussi, vous verrez un message de confirmation en ouvrant etape3.html en https:// dans votre navigateur.

Étape 4 - Sécurisation du rapport financier avec un mot de passe

Dans le répertoire public_html, créez un nouveau répertoire nommé rapports. Déplacez le fichier bilan.html dans le répertoire rapports avec la commande mv.

Ce répertoire ne doit pouvoir être accédé que par les personnes autorisées. Il est actuellement disponible et indexable par les moteurs de recherches à l’URL suivant :

http://serveurprof.com:<no de port>/rapports/bilan.html

Utilisez l’authentification de base http (auth_basic) pour protéger le répertoire. Créez le nom d’utilisateur et le mot de passe de votre choix à l’aide de la commande htpasswd. Le fichier de mots de passe doit être créé à l’emplacement suivant :

nginx/passwords.txt

Modifiez les droits d'accès du répertoire nginx pour qu'il puisse être exécuté et lu par tous.

Rechargez le serveur et testez votre configuration. Une fenêtre contextuelle devrait vous demander d'entrer le mot de passe. Le mot de passe est ensuite garder en cache. Si vous voulez tester à nouveau votre configuration, vous devrez fermer et réouvrir votre navigateur.

Bravo! Vous avez terminé le labo!