Aller au contenu

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.