← Retour aux projets

Déploiement & sécurisation d'un serveur web Debian

Technologies : Debian 12, Nginx, Netfilter/iptables, Fail2ban, SSL/TLS, Let's Encrypt
Durée : environ 3 semaines
Contexte : Projet académique BTS SIO / E4

1. Contexte & problématique

Dans le cadre de l'épreuve E4 du BTS SIO, l'objectif était de concevoir de bout en bout une infrastructure web capable d'être exposée sur Internet sans compromettre la sécurité du système. Les serveurs web mal configurés sont une cible privilégiée des scans automatisés : ports ouverts inutilement, comptes root accessibles en SSH, absence de chiffrement. Le cahier des charges imposait de repartir d'un système vierge plutôt que d'une image préconfigurée, afin de maîtriser chaque brique installée.

2. Architecture mise en place

Le serveur repose sur une machine virtuelle Debian 12 en édition Minimal, sans interface graphique, pour réduire la surface d'attaque et la consommation de ressources. Nginx sert de serveur web frontal, avec un unique reverse proxy exposé publiquement. Le pare-feu Netfilter filtre l'intégralité du trafic entrant et sortant avant même qu'il n'atteigne les services applicatifs.

3. Étapes de réalisation

4. Difficultés rencontrées

La principale difficulté a été de calibrer les règles Fail2ban sans provoquer de faux positifs lors des phases de test, où de nombreuses connexions légitimes échouaient à cause d'erreurs de configuration côté client. Le second point délicat a concerné la persistance des règles Netfilter au redémarrage, qui nécessitait un service dédié plutôt qu'un simple script.

5. Tests & validation

Le serveur a été testé face à des outils d'analyse de vulnérabilités (Nmap pour le scan de ports, Nikto pour l'analyse des failles web courantes). Seuls les ports strictement nécessaires apparaissent ouverts lors d'un scan externe. Des tentatives de connexion SSH par force brute simulées ont été bloquées après le seuil configuré, confirmant le bon fonctionnement de Fail2ban.

6. Résultat & compétences acquises

Le niveau de durcissement (hardening) atteint permet de bloquer 100 % des tentatives d'intrusion de niveau 1 lors des tests. Ce projet a permis de comprendre en profondeur le fonctionnement d'un pare-feu Linux au niveau des règles, au-delà de la simple configuration d'une interface graphique, ainsi que l'articulation entre plusieurs couches de sécurité complémentaires (réseau, authentification, chiffrement, détection d'intrusion).