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) :
- Déplacer tous les scripts inline vers des fichiers
.jsexternes. - Supprimer
'unsafe-inline'de la directivescript-src. - 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 :
- Security Headers
- Mozilla Observatory
- Commande locale :
curl -I https://votre-domaine.com
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.mddocumente 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, activerContent-Security-Policystricte 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é:
Servernon verbeux; pas deX-Powered-By