Projet 4 : Mise en place d'une architecture N-tiers
Contexte et objectifs
Dans le cadre de la mise en œuvre d'une architecture N-tiers sécurisée, l'entreprise souhaite scinder les rôles applicatifs sur plusieurs serveurs.
Cette approche facilite la maintenance, améliore la résilience et renforce la sécurité en séparant les services (base de données, DNS, Web) dans différentes zones réseaux (LAN, DMZ).
Architecture générale
1. Pare-feu (PARE-FEU)
- Trois interfaces : WAN, LAN et DMZ.
- Gère l'accès Internet et la répartition des flux vers les différents serveurs.
- Assure la séparation des services entre DMZ et LAN.
2. Serveur Web (LX01)
- Déployé dans la DMZ.
- Utilise Apache ou Nginx (au choix), avec un vhost SSL obligatoire (HTTPS).
- Héberge un CMS (WordPress, Drupal, Joomla, Concrete5 ou DNN) avec recommandations de sécurité (configuration stricte, etc.).
- php-fpm ou module Apache selon les préférences d'optimisation.
- Fail2ban configuré avec une règle de protection "slow connection" (antibroot force, tentative d'attaques, etc.).
- NFtables avec un jeu de règles adapté (pour limiter les ports ouverts, ICMP, etc.).
3. Serveur SQL (LX02)
- Hébergé dans le LAN.
- Base de données MySQL, MariaDB ou PostgreSQL (au choix).
- Communique uniquement avec le serveur Web en DMZ (port SQL).
4. Serveur DNS (LX03)
- Hébergé dans le LAN.
- Service DNS (bind ou unbound) pour la résolution interne.
- NFtables configuré pour autoriser les requêtes DNS légitimes (sur port 53) depuis les machines autorisées.
5. Serveur de Backup (LX04)
- Hébergé dans le LAN.
- Centralise les sauvegardes du CMS (fichiers) et de la base SQL.
- Utilise des scripts BASH pour effectuer des sauvegardes Rsync distantes.
- Planification via cron :
- Sauvegarde complète une fois par semaine.
- Sauvegarde incrémentielle ou différentielle tous les soirs.
6. PC client (PC-CLIENT)
- Poste de travail interne permettant de se connecter à l'infrastructure pour l'administration et/ou les tests.
Aspects clés du projet
1. Architecture N-tiers
- Tier Web : Serveur Web en DMZ.
- Tier Base de données : Serveur SQL dans le LAN.
- Tier DNS : Serveur DNS dédié dans le LAN.
- Tier Backup : Serveur de sauvegarde dans le LAN.
La communication s'effectue de manière strictement contrôlée via le pare-feu et des règles NFtables sur chaque hôte.
2. Accès depuis l'extérieur
Le site Web doit être joignable publiquement :
- Possibilité de configurer un DNAT (NAT destination) sur le pare-feu pour rediriger le trafic HTTPS vers LX01.
- Alternative possible : Reverse Proxy HAproxy sur le pare-feu, redirigeant ensuite vers LX01 en DMZ.
3. SFTP sécurisé pour les développeurs
Mise en place d'un serveur SFTP (via OpenSSH) sur LX01 ou un autre serveur spécialisé, avec :
- Chroot de l'utilisateur développeur pour qu'il ne puisse accéder qu'au Document Root du CMS (avec montage via bindfs si nécessaire).
- Droits limités afin de garantir qu'aucun autre fichier système ne soit accessible.
4. Recommandations de sécurité
- Vhost SSL obligatoire : installation et configuration de certificats (certificat interne auto-signé ou Let's encrypt de testing).
- Fail2ban sur LX01 pour limiter le bruteforce ou autres attaques.
- NFtables pour chaque serveur Linux, autorisant uniquement les flux nécessaires (HTTPS vers le Web, MySQL vers le DB, DNS, SSH restreint, etc.).
- Backup externalisé (Rsync) :
- Sécurisation des transferts (SSH keys, passphrase).
- Vérification régulière de la restauration possible.
- CMS régulièrement mis à jour (core, modules, plugins).
5. Planification des sauvegardes
- Scripts BASH exécutés via cron :
- Sauvegarde des fichiers du CMS (documentroot, configuration, etc.)
- Sauvegarde de la base SQL (dump MySQL/MariaDB/PostgreSQL).
- Full backup (complète) : une fois par semaine.
- Incremental/differential : tous les soirs pour minimiser la fenêtre d'indisponibilité et économiser l'espace.
Livrables attendus
1. Schéma réseau
- Illustrant le pare-feu, la DMZ et le LAN, ainsi que les flux autorisés (DMZ → LAN, LAN → DMZ, WAN → DMZ).
2. Configurations
- Pare-feu (règles de DNAT ou reverse proxy + ACL internes).
- NFtables pour chaque serveur, avec les chaînes et règles essentielles (ports ouverts, filtrage, logging).
- Serveur Web : configuration d'Apache/Nginx, vhost SSL, CMS choisi et sécurisé, Fail2ban.
- Serveur SFTP (chroot, bindfs si nécessaire) permettant l'accès restreint pour les développeurs.
- Serveur SQL : configuration et sécurisation (accès limité au serveur Web).
- Serveur DNS : configuration bind/unbound, enregistrement(s) nécessaires.
- Serveur de Backup : scripts BASH pour Rsync, planification cron, etc.
3. Documentation et scripts
- Scripts de backup (BASH) + fichier(s) cron.
- Configuration Fail2ban : jail(s) spécifique(s) pour Apache/Nginx, configuration "slow connection".
- Gestion des certificats SSL (Let's Encrypt, etc.).
- Captures d'écran / logs prouvant :
- l'accessibilité du site depuis l'extérieur,
- la configuration du SFTP chroot,
- le fonctionnement des sauvegardes (réussite des jobs cron),
- l'application des règles NFtables.