Travail pratique
ID : A04-TP04
But du TP
- Installation d'un serveur web sur Linux (pour la production)
- Sécurisation d'un serveur web sur Internet
Travail à réaliser
SSH
- Connectez-vous à votre VPS (Virtual Private Server) en SSH.
-
Configurez l'affichage automatique du message suivant avant chaque connexion SSH (le message doit être absolument identique à celui ci-dessous au niveau contenu et mise en forme).
*************************************************************************** NOTICE TO USERS This computer system is the private property of its owner, whether individual, corporate or government. It is for authorized use only. Users (authorized or unauthorized) have no explicit or implicit expectation of privacy. Any or all uses of this system and all files on this system may be intercepted, monitored, recorded, copied, audited, inspected, and disclosed to your employer, to authorized site, government, and law enforcement personnel, as well as authorized officials of government agencies, both domestic and foreign. By using this system, the user consents to such interception, monitoring, recording, copying, auditing, inspection, and disclosure at the discretion of such personnel or officials. Unauthorized or improper use of this system may result in civil and criminal penalties and administrative or disciplinary action, as appropriate. By continuing to use this system you indicate your awareness of and consent to these terms and conditions of use. LOG OFF IMMEDIATELY if you do not agree to the conditions stated in this warning. **************************************************************************** -
Configurez l'authentification SSH par clé publique et désactivez l'authentification par mot de passe.
- Avant de redémarrer le service SSH, testez la configuration avec
sudo sshd -t: une erreur pourrait vous empêcher de vous reconnecter au VPS.
- Avant de redémarrer le service SSH, testez la configuration avec
Questions
- À quoi cela sert-il (quelle est la finalité de ce message dans notre contexte) ?
- Y a-t-il plusieurs « façons » de l'afficher, lesquelles et pourquoi choisir l'une plutôt que l'autre ?
- Comment tester que l'authentification par mot de passe est effectivement désactivée ?
Date et heure
- Vérifiez que la date, l'heure et le fuseau horaire sont corrects, configurez-les si besoin.
Firewall
- Configurez et activez le firewall ufw.
- Seuls les ports nécessaires doivent être ouverts.
- Attention : votre seul accès au VPS passe par SSH. Si vous activez ufw sans l'avoir autorisé au préalable, vous perdrez l'accès au serveur.
Questions
- Comment vérifier et tester que la configuration est correcte ?
- Comment s'assurer que seuls les ports ouverts le sont effectivement ?
Redirection des emails
- Installez et configurez le package
mailutils.- Envoyez un email à l'utilisateur
rootavec la commandeecho "Test email to root" | mail -s "Test email" root. - Accédez à la boîte de réception des emails de l'utilisateur
rootavec la commandesudo mail.
- Envoyez un email à l'utilisateur
- Configurez la redirection des emails de l'utilisateur
rootvers votre adresse email@edu.hefr.ch.- Envoyez un nouvel email à l'utilisateur
rootavec la commandeecho "Test email to root" | mail -s "Test email" rootet vérifiez que vous l'avez bien reçu sur votre adresse@edu.hefr.ch. - Il y a de bonnes chances que cet email de test soit bloqué dans la quarantaine.
- Envoyez un nouvel email à l'utilisateur
Tip
Pour réduire le risque que les emails envoyés depuis le VPS se retrouvent dans les spams ou en quarantaine sur le serveur de messagerie de l'école :
-
Ouvrez le fichier
/etc/mailutils.confavec les droits administrateur, dans votre éditeur préféré (vim ou nano) :sudo nano /etc/mailutils.conf -
Ajoutez ceci à la fin du fichier :
address { email-domain <fqdn>; # Remplacez <fqdn> par le nom de domaine complet (FQDN) de votre VPS }; -
Enregistrez le fichier.
Source : GNU Mailutils - Sender Address Statements
Si vous ne recevez pas les emails, vérifiez dans Microsoft Defender - Quarantine.
Questions
- Quels types d'emails l'utilisateur
rootreçoit-il et pourquoi les rediriger ?
Rapport d'analyse des fichiers de log
- Installez et configurez le package
logwatch.- Le fichier
/usr/share/doc/logwatch/HOWTO-Customize-LogWatch.gzpeut être utile pour comprendre comment configurer correctement logwatch.
- Le fichier
- Configurez et testez l'envoi des rapports d'analyse des fichiers de log sur la messagerie interne de l'utilisateur
root.- Envoyez automatiquement un rapport avec un haut niveau de détails, chaque semaine, pour les logs des 7 derniers jours écoulés.
- Configurez une règle dans votre messagerie afin de déplacer ces rapports dans un répertoire dédié. (optionnel)
Questions
- Quel jour de la semaine et à quelle heure sont envoyés les rapports d'analyse des fichiers de log ?
Rapport des mises à jour
- Installez et configurez le package
apticron. - Configurez et testez l'envoi des rapports des mises à jour en attente sur la messagerie interne de l'utilisateur
root.- Envoyez automatiquement un rapport chaque jour à 7h00.
- Configurez une règle dans votre messagerie afin de déplacer ces rapports dans un répertoire dédié. (optionnel)
Mise à jour automatique
- Vérifiez que les mises à jour de sécurité sont bien installées automatiquement par l'utilitaire
unattended-upgrades. - Configurez l'envoi d'emails en cas de problèmes ou lors de mises à jour des paquets par l'utilitaire
unattended-upgradessur la messagerie interne de l'utilisateurroot.
nginx
- Installez et configurez le package
nginx. - Sécurisez nginx selon les éléments listés dans le support de cours.
- Vérifiez que tout fonctionne correctement et adaptez la configuration si besoin.
HTTPS
- Installez et configurez un certificat TLS (HTTPS).
- Utilisez Certbot.
- Vérifiez que la redirection de tout le trafic HTTP vers HTTPS est bien configurée.
- Il ne doit plus être possible d'afficher une page web avec HTTP.
Questions
- Comment fonctionne la redirection HTTP vers HTTPS au niveau de la configuration du serveur web nginx ?
HTTP/2
- Configurez nginx pour qu'il utilise le protocole HTTP/2.
Questions
- Comment fait-on pour vérifier, dans le navigateur web, que le protocole HTTP/2 est bien utilisé et donc bien configuré sur le serveur web ?
Vérification
- Vérifiez que tout fonctionne correctement et testez votre site :
- Security Headers : Note A+
- Pour le header
Permissions-Policy, désactivez la géolocalisation, la caméra et le microphone
- Pour le header
- Mozilla HTTP Observatory : Note A+
- SSL Server Test : Note A+
- Testez avant et après la configuration des en-têtes HTTP.
- Security Headers : Note A+
Audit de sécurité
- Installez le package
lyniset lancez un audit de votre serveur avec la commandesudo lynis audit system.- Lynis est un outil open source qui analyse la configuration du système et propose des pistes de durcissement (hardening).
- Notez l'indice de durcissement (
Hardening index) affiché à la fin de l'audit. - Avec l'aide d'un chatbot (ChatGPT, Claude, Gemini, …), déterminez les trois suggestions de l'audit (section
Suggestions) les plus pertinentes dans le contexte de ce TP : un serveur web exposé sur Internet, à sécuriser.- Avant de transmettre le résultat de l'audit au chatbot, retirez les informations sensibles (nom de domaine, adresses IP, noms d'utilisateurs, …).
- Indiquez dans votre manuel technique le chatbot utilisé et la question (prompt) que vous lui avez posée.
- Appliquez ces trois suggestions, expliquez-les avec vos propres mots et documentez leur mise en place.
- Vérifiez chaque modification proposée par le chatbot dans la documentation officielle avant de l'appliquer : un chatbot peut se tromper.
- Assurez-vous de toujours pouvoir vous connecter en SSH à votre VPS après chaque modification.
- Relancez l'audit et comparez l'indice de durcissement avant et après vos modifications.
Manuel technique
Rédigez un manuel technique permettant de reproduire à l'identique le travail pratique que vous avez réalisé. Le document devra inclure des explications sur les éléments importants à comprendre, notamment les points abordés dans les sections Questions des parties précédentes.
Directives générales
-
Référencez toutes les sources d'informations utilisées pour réaliser le travail pratique et pour la rédaction de votre document. Privilégiez l'utilisation de citations en fin de chapitres et/ou en notes de bas de page, plutôt qu'une liste de sources en fin de document.
-
Prenez des notes au fur et à mesure de la réalisation du travail pratique si vous ne rédigez pas le manuel en parallèle.
-
Ajoutez des images, des illustrations et des captures d'écran pour aider le lecteur à mieux comprendre et suivre les étapes.
-
Utilisez uniquement la forme impersonnelle dans le manuel technique.
Structure du manuel
Votre manuel technique devra inclure les éléments suivants :
Page de garde (sans en-tête ni pied de page)
- Le logo de la HEIA-FR
- Le nom de la formation : Année Passerelle Ingénierie ISC
- Le nom du cours : Technologies Internet
- L'ID du travail pratique : A04-TP04
- Une illustration graphique représentant ce travail pratique
- Vos informations personnelles (nom, prénom, adresse email)
- La date du travail pratique
En-tête (à partir de la deuxième page)
- Le logo de la HEIA-FR
- Le nom de la formation : Année Passerelle Ingénierie ISC
- Le nom du cours : Technologies Internet
- L'ID du travail pratique : A04-TP04
- Vos informations personnelles (nom, prénom, adresse email)
Pied de page (à partir de la deuxième page)
- La numérotation automatique des pages (N° de la page / nombre total de pages)
- La date du travail pratique
Contenu supplémentaire
- Une table des matières (avec des liens cliquables) après la page de garde.
- Une table des illustrations (avec des liens cliquables) à la fin du document.
Rendu du TP
Le document, au format PDF, est à rendre pour le jeudi 8 octobre à 23h59, au plus tard, par email (joel.dacomo@hefr.ch).
Le document PDF aura le nom de fichier : API-TI - A04-TP04 - Nom Prénom.pdf
Le TP sera évalué.