03-comment-je-travaille/guides/security-headers.md

Headers de Sécurité (Apache / Ubuntu)

Ce guide décrit la configuration des en-têtes (headers) HTTP pour sécuriser les sites hébergés sur le VPS Codexia (Apache).

1. Configuration Globale (Recommandée)

PlutĂ´t que de configurer chaque VirtualHost individuellement, nous utilisons un fichier de configuration globale.

Étape 1 : Activer le module headers

sudo a2enmod headers

Étape 2 : Créer le fichier de configuration

Fichier : /etc/apache2/conf-available/security-headers.conf

# Configuration globale des headers de sécurité Codexia
<IfModule mod_headers.c>
    # 1. X-Frame-Options (Protection Clickjacking)
    Header always set X-Frame-Options "DENY"

    # 2. X-Content-Type-Options (EmpĂŞche le MIME sniffing)
    Header always set X-Content-Type-Options "nosniff"

    # 3. Referrer-Policy (ContrĂ´le des infos de provenance)
    Header always set Referrer-Policy "strict-origin-when-cross-origin"

    # 4. Permissions-Policy (Désactivation fonctions navigateur non utilisées)
    Header always set Permissions-Policy "geolocation=(), microphone=(), camera=()"

    # 5. Cross-Origin Policies (Isolation navigateur)
    Header always set Cross-Origin-Embedder-Policy "require-corp"
    Header always set Cross-Origin-Opener-Policy "same-origin"
    Header always set Cross-Origin-Resource-Policy "same-origin"

    # 6. Content-Security-Policy (CSP)
    # Note : Actuellement commentée pour éviter les blocages de scripts inline hérités
    # Header always set Content-Security-Policy "default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data:; font-src 'self'; connect-src 'self'; frame-ancestors 'none';"
</IfModule>

Étape 3 : Activer et appliquer

sudo a2enconf security-headers
sudo apache2ctl -t
sudo systemctl reload apache2

2. Le cas de la Content-Security-Policy (CSP)

La CSP est l'en-tĂŞte le plus puissant mais aussi le plus restrictif.

État actuel

La directive Content-Security-Policy est actuellement commentée dans la configuration globale pour permettre le fonctionnement des scripts inline hérités.

Évolution vers un score A+

Pour supprimer les avertissements de sécurité (ex: Security Headers) :

  1. Déplacer tous les scripts inline vers des fichiers .js externes.
  2. Supprimer 'unsafe-inline' de la directive script-src.
  3. Réactiver le header dans la configuration Apache.

3. Strict-Transport-Security (HSTS)

Le HSTS est géré séparément. Voir la documentation dédiée : HSTS (HTTP Strict Transport Security).

4. Outils de test

Pour vérifier la validité des headers :

Voir aussi — en production

  • vps/05-securite.md — SĂ©curitĂ© rĂ©elle dĂ©ployĂ©e sur Telaria (UFW, Fail2ban, headers Apache, tokens, uploads). Ce guide-ci est la rĂ©fĂ©rence gĂ©nĂ©rique ; vps/05-securite.md documente ce qui tourne.

5. CSP en mode « Report-Only » (pré-production)

Objectif: cartographier les besoins réels sans bloquer le fonctionnement, en vue d’une CSP stricte sans unsafe-inline.

Headers à ajouter (ex: globalement via conf-available ou dans un vhost de préprod):

# Déclaration d’un endpoint de rapports (adapter l’URL)
Header always set Reporting-Endpoints "csp-endpoint=\"https://logs.votre-domaine.tld/reports\""

# Politique en observation uniquement (aucun blocage)
Header always set Content-Security-Policy-Report-Only "default-src 'self'; object-src 'none'; frame-ancestors 'none'; report-to csp-endpoint"

Procédure:

  • DĂ©ployer en prĂ©production avec ces en-tĂŞtes
  • Naviguer sur les pages clĂ©s, observer la console navigateur et collecter les rapports
  • Lister les besoins (scripts/styles externes); remplacer l’inline par fichiers, ou autoriser via hash/nonce
  • Retirer Report-Only, activer Content-Security-Policy stricte quand prĂŞt

Références: MDN CSP, Reporting API.


6. Routine d’audit des headers (rapide)

curl -I https://votre-domaine
curl -sI https://votre-domaine | egrep -i "^(strict-transport-security|x-frame-options|x-content-type-options|referrer-policy|permissions-policy|cross-origin-.*|content-security-policy|content-security-policy-report-only|server|x-powered-by):"

Attendus:

  • PrĂ©sence: HSTS, XFO, XCTO, Referrer-Policy, Permissions-Policy, COEP/COOP/CORP
  • CSP active OU en report-only selon l’environnement
  • SobriĂ©tĂ©: Server non verbeux; pas de X-Powered-By

Assistant documentaire

Posez une question sur la documentation. Les réponses citent leurs sources — un clic ouvre le document à gauche.

Loading…
Loading the web debug toolbar…
Attempt #