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
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.
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:
student
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.
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.
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.
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!