Retour au cours

projet : installer et sécuriser un serveur web simple

Objectif du Projet

Mettre en pratique les compétences acquises (gestion de paquets, services, pare-feu) pour installer, configurer et sécuriser un serveur web Nginx fonctionnel sur un système de type Debian/Ubuntu.

Le Scénario

Vous disposez d’un nouveau serveur Linux fraîchement installé. Votre mission est de le transformer en un serveur web capable de servir une page HTML simple sur Internet, de manière sécurisée.

Les Étapes

Ce projet est une séquence de commandes que vous avez apprises dans les chapitres précédents.

Étape 1 : Mettre à jour le système

Avant d’installer quoi que ce soit, il est crucial de s’assurer que le système est à jour.

sudo apt update
sudo apt upgrade -y

Étape 2 : Installer Nginx

Nginx est un serveur web moderne, performant et très populaire. On l’installe depuis les dépôts officiels.

sudo apt install nginx

Étape 3 : Configurer le pare-feu (ufw)

Par défaut, le trafic web est bloqué. Nous devons configurer notre pare-feu ufw pour autoriser les connexions entrantes sur les ports HTTP (80) et HTTPS (443).

  1. Autoriser le trafic Nginx. ufw connaît les profils d’application courants.

    # Affiche les profils d'application connus
    sudo ufw app list
    
    # Autorise Nginx sur tous les ports nécessaires (HTTP, HTTPS)
    sudo ufw allow 'Nginx Full'

    Si vous ne vouliez que le HTTP, vous utiliseriez 'Nginx HTTP'.

  2. Vérifier que SSH est autorisé (TRÈS IMPORTANT).

    sudo ufw allow ssh
  3. Activer le pare-feu.

    sudo ufw enable
  4. Vérifier le statut.

    sudo ufw status
    # Status: active
    #
    # To                         Action      From
    # --                         ------      ----
    # Nginx Full                 ALLOW       Anywhere
    # 22/tcp                     ALLOW       Anywhere

Étape 4 : Vérifier le service Nginx

Le gestionnaire de paquets a normalement déjà démarré et activé le service Nginx. Vérifions-le avec systemctl.

systemctl status nginx

Vous devriez voir Active: active (running). Si ce n’est pas le cas, vous pouvez le démarrer et l’activer avec :

sudo systemctl start nginx
sudo systemctl enable nginx

Étape 5 : Créer une page d’accueil personnalisée

Par défaut, Nginx sert les fichiers situés dans /var/www/html. Le fichier index.html est la page affichée par défaut. Nous allons remplacer la page par défaut d’Ubuntu par la nôtre.

# On crée le contenu de notre page
PAGE_HTML="<h1>Bonjour depuis mon serveur Nginx !</h1><p>Ce serveur a été configuré avec succès.</p>"

# On utilise 'tee' avec 'sudo' pour écrire dans le fichier protégé
echo "$PAGE_HTML" | sudo tee /var/www/html/index.html

Étape 6 : Tester le résultat

Vous avez maintenant un serveur web fonctionnel. Pour le tester :

  1. Trouvez l’adresse IP de votre serveur avec ip a.
  2. Depuis une autre machine sur le même réseau (ou votre propre machine si c’est une VM), ouvrez un navigateur web.
  3. Entrez l’adresse IP de votre serveur dans la barre d’adresse.

Vous devriez voir votre page “Bonjour depuis mon serveur Nginx !”.

Résumé du projet

En quelques étapes, vous avez :

  • Installé un logiciel avec apt.
  • Configuré un pare-feu avec ufw.
  • Géré un service avec systemctl.
  • Modifié un fichier dans un répertoire système de manière sécurisée.

C’est une excellente synthèse des compétences de base en administration système sous Linux.

Exercices et améliorations

  1. Créer un deuxième site (avancé) :

    • Créez un nouveau dossier /var/www/monsite2.
    • Créez un index.html différent à l’intérieur.
    • Copiez le fichier de configuration par défaut de Nginx (/etc/nginx/sites-available/default) vers un nouveau fichier /etc/nginx/sites-available/monsite2.
    • Modifiez ce nouveau fichier pour qu’il pointe vers votre nouveau dossier et écoute sur un autre “server_name”.
    • Activez ce nouveau site en créant un lien symbolique vers sites-enabled.
    • Rechargez la configuration de Nginx avec sudo systemctl reload nginx.
  2. Passer en HTTPS :

    • Recherchez comment utiliser l’outil certbot pour obtenir un certificat SSL/TLS gratuit de Let’s Encrypt et configurer automatiquement Nginx pour le HTTPS.