Defense en profondeur¶
Empiler les couches de protection — aucune mesure unique n'est infaillible.
Le principe¶
La defense en profondeur part du constat qu'aucune mesure de sécurité n'est infaillible. Chaque couche de protection peut être contournee — mais l'attaquant doit franchir toutes les couches successivement. Chaque couche ralentit, détecté ou stoppe l'attaque.
Ce n'est pas une liste de technologies a déployer. C'est un principe de conception : pour chaque menace identifiée, plusieurs mécanismes indépendants la contrent. Si l'un échoué, les autres prennent le relais.
graph TD
Reseau["Reseau\nFirewall, segmentation, WAF"]
Plateforme["Plateforme\nHardening, patch, runtime"]
Application["Application\nValidation, encoding, CSRF"]
Donnees["Donnees\nChiffrement, masking, tokenization"]
Identite["Identite\nMFA, rotation, audit"]
Reseau --> Plateforme --> Application --> Donnees --> Identite Les couches de protection¶
Couche réseau¶
La première ligne de defense. Elle filtre et inspecte le trafic avant qu'il n'atteigne les applications.
| Mesure | Rôle | Outils |
|---|---|---|
| Firewall L3/L4 | Filtrage par IP, port, protocole | iptables, AWS Security Groups, NSG Azure |
| WAF (L7) | Inspection du trafic HTTP, règles OWASP | ModSecurity, AWS WAF, Cloudflare WAF |
| IDS/IPS | Détection et prevention d'intrusion | Suricata, Snort, AWS GuardDuty |
| DDoS protection | Absorption des attaques volumetriques | Cloudflare, AWS Shield, Azure DDoS |
| Network Policies | Micro-segmentation pod-to-pod (Kubernetes) | Calico, Cilium, native Kubernetes |
Couche plateforme¶
Le durcissement de l'infrastructure et du runtime.
| Mesure | Rôle | Outils |
|---|---|---|
| Hardening OS | Désactiver les services inutiles, config sécurisée | CIS Benchmarks, OpenSCAP |
| Patch management | Mise à jour des vulnérabilités connues | Renovate, Dependabot, OS auto-update |
| Isolation runtime | Limiter les capacités des processus | seccomp, AppArmor, SELinux |
| Image minimale | Réduire la surface d'attaque du container | distroless, Alpine, scratch |
| Runtime monitoring | Détecter les comportements anormaux | Falco, Tetragon, Sysdig |
Couche application¶
La validation et la protection au niveau du code applicatif.
| Mesure | Rôle | Exemples |
|---|---|---|
| Input validation | Rejeter les entrees malformees | Schéma validation, type checking |
| Output encoding | Prévenir les injections dans les sorties | HTML encoding, SQL parameterisation |
| CSRF protection | Empêcher les requêtes forgees | CSRF tokens, SameSite cookies |
| Rate limiting | Limiter le volume de requêtes par client | Token bucket, leaky bucket |
| Security headers | Durcir le navigateur | CSP, HSTS, X-Frame-Options |
Couche données¶
La protection des données au repos et en transit.
| Mesure | Rôle | Exemples |
|---|---|---|
| Chiffrement at-rest | Protéger les données stockees | AES-256, LUKS, cloud KMS |
| Chiffrement in-transit | Protéger les données en communication | TLS 1.3, mTLS |
| Column-level encryption | Chiffrer les colonnes sensibles | pgcrypto, application-level |
| Tokenization | Remplacer les données sensibles par des jetons | Vault, custom tokenization |
| Data masking | Masquer les données dans les environnements non-prod | Dynamic masking, static masking |
Couche identité¶
Le contrôle des accès et la traçabilite des actions.
| Mesure | Rôle | Exemples |
|---|---|---|
| MFA | Second facteur d'authentification | TOTP, WebAuthn, FIDO2 |
| Rotation credentials | Renouveler régulièrement les secrets | Vault rotation, cert-manager |
| Audit logging | Tracer toutes les actions sensibles | CloudTrail, Audit logs Kubernetes |
| UEBA | Détecter les comportements utilisateur anormaux | Analyse statistique, ML |
| JIT access | Accès privilegie temporaire et trace | HashiCorp Boundary, CyberArk |
Détection vs prevention¶
Chaque couche a deux rôles : prévenir les attaques et détecter celles qui passent. La prevention bloque. La détection alerte. Les deux sont nécessaires.
Une couche qui previent sans détecter ne donne pas de visibilité sur les tentatives. Une couche qui détecté sans prévenir ne protégé pas mais permet de reagir.
| Couche | Prevention | Détection |
|---|---|---|
| Réseau | Firewall, WAF, blocage IP | IDS/IPS, alertes sur anomalies trafic |
| Plateforme | seccomp, AppArmor, read-only FS | Falco, audit syscalls, EDR |
| Application | Validation input, rate limiting | Logs d'erreurs, alertes 4xx/5xx |
| Données | Chiffrement, ACL | Audit log accès, alertes accès inusuel |
| Identité | MFA, politique de mots de passe | Alertes connexions suspectes, UEBA |
Zones de sécurité¶
Les frontieres de sécurité découpent le système en zones de niveaux de confiance différents. Le trafic entre zones est filtre et inspecte. Le trafic intra-zone obeit a des règles plus souples, mais n'est jamais implicitement de confiance absolue.
Architecture en zones¶
graph TD
subgraph Internet
EXT[Clients externes]
end
subgraph DMZ
WAF[WAF]
LB[Load Balancer]
GW[API Gateway]
end
subgraph Internal
SVC_A[Service Commandes]
SVC_B[Service Catalogue]
SVC_C[Service Notifications]
QUEUE[Message Queue]
end
subgraph Restricted
DB_A[(DB Commandes)]
DB_B[(DB Catalogue)]
VAULT[Secrets Vault]
end
EXT --text--> WAF --text--> LB --text--> GW
GW --text--> SVC_A
GW --text--> SVC_B
SVC_A --text--> QUEUE --text--> SVC_C
SVC_A --text--> DB_A
SVC_B --text--> DB_B
SVC_A --text--> VAULT Description des zones¶
Zone Internet — aucune confiance. Tout le trafic est inspecte et filtre avant d'entrer. Le WAF inspecte le trafic HTTP, le pare-feu filtre par IP et par port. Aucune connexion directe depuis Internet vers l'interne n'est autorisee.
DMZ (Demilitarized Zone) — zone exposee a Internet mais isolee de l'interne. Les composants en DMZ ne doivent pas avoir d'accès direct aux bases de données ou aux services internes sensibles. Toute communication vers l'interne passe par des points de contrôle. En cas de compromission d'un composant en DMZ, l'attaquant est contenu dans cette zone.
Internal — services applicatifs. Le trafic provient uniquement de la DMZ ou d'autres services internes. L'authentification mutuelle (mTLS) s'applique entre services. Les network policies limitent les communications au strict nécessaire.
Restricted — zone la plus protégée. Accès uniquement depuis les services internes autorises. Les secrets et les données sensibles vivent ici. Les connexions entrantes sont loggees et auditees. Toute tentative d'accès direct depuis la DMZ ou Internet est bloquee et alertee.
Règles de passage entre zones¶
Le passage d'une zone vers une zone plus protégée doit être explicitement autorise. Par défaut, le trafic est refuse.
| De | Vers | Règle |
|---|---|---|
| Internet | DMZ | Filtre WAF + pare-feu, HTTPS uniquement |
| DMZ | Internal | Authentification + autorisation, ports spécifiques |
| Internal | Restricted | Service-specific credentials, audit log obligatoire |
| Restricted | Internal | Réponses uniquement (pas d'initiation sortante) |
| Internal | DMZ | Interdit (aucun service interne ne doit appeler la DMZ) |
| Internet | Internal | Interdit (pas de bypass de la DMZ) |
Segmentation réseau¶
La segmentation divise le réseau en segments isoles avec des contrôles d'accès entre eux. C'est l'implémentation concrète des zones de sécurité.
Niveaux de segmentation¶
| Niveau | Granularité | Outils |
|---|---|---|
| VLAN | Par sous-réseau | Switches L2/L3, routeurs |
| Security Groups | Par instance / VM | AWS SG, Azure NSG, GCP Firewall Rules |
| Network Policies | Par pod (Kubernetes) | Calico, Cilium, native K8s Network Policies |
| Service mesh | Par service (L7) | Istio, Linkerd, Consul Connect |
Micro-segmentation en Kubernetes¶
La micro-segmentation dans Kubernetes utilise les Network Policies pour contrôler le trafic pod-to-pod :
# Politique : le service "orders" ne peut etre appele
# que par le service "api-gateway"
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: orders-ingress
namespace: production
spec:
podSelector:
matchLabels:
app: orders
policyTypes:
- Ingress
ingress:
- from:
- podSelector:
matchLabels:
app: api-gateway
ports:
- protocol: TCP
port: 8080
Warning
Les Network Policies Kubernetes ne sont effectives que si le CNI les supporte. Le CNI par défaut de nombreux clusters ne les implémenté pas. Vérifier que Calico, Cilium ou un CNI compatible est déployé.
Positionnement WAF / IDS / IPS¶
Le positionnement des dispositifs de détection et de prevention dans l'architecture est critique. Mal place, un WAF ne voit pas le trafic qu'il devrait inspecter.
WAF — Web Application Firewall¶
Le WAF inspecte le trafic HTTP au niveau applicatif (couche 7). Il se place devant les applications web, généralement en amont du load balancer ou intégré a celui-ci.
graph LR
CLIENT[Client] --text--> WAF[WAF] --text--> LB[Load Balancer] --text--> APP[Application] Fonctions principales : détection d'injections SQL, XSS, CSRF, protection contre les bots, rate limiting applicatif, virtual patching (bloquer l'exploitation d'une CVE avant le patch).
IDS — Intrusion Détection System¶
L'IDS analyse le trafic réseau pour détecter les comportements suspects. Il ne bloque pas — il alerte. Place en mode "tap" ou "mirror", il observe une copie du trafic sans l'impacter.
IPS — Intrusion Prevention System¶
L'IPS combine la détection de l'IDS avec la capacité de bloquer le trafic malveillant. Place "inline" (dans le chemin du trafic), il peut dropper les paquets suspects.
| Dispositif | Position | Mode | Action | Impact performance |
|---|---|---|---|---|
| WAF | Devant les apps | Inline | Bloque + alerte | Moyen (L7) |
| IDS | En parallèle | Tap/mirror | Alerte seule | Nul |
| IPS | Inline | Inline | Bloque + alerte | Moyen (L3/L4) |
Note
Dans un modèle zero trust, les zones de sécurité restent utiles comme defense en profondeur — elles ne sont simplement plus la seule ligne de defense. La segmentation est une couche parmi d'autres.
Chapitre suivant : mTLS — authentification mutuelle entre services, PKI interne et rotation automatique.