Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
fr:apache [2025/02/09 16:36] – [Vhost avec variables] bonnes pratiques zatalyz | fr:apache [2025/02/09 17:34] (Version actuelle) – [Content Security Policy (CSP)] Encore mieux zatalyz | ||
---|---|---|---|
Ligne 158: | Ligne 158: | ||
En principe nos serveurs sont à jours, hein. Mais en cas d' | En principe nos serveurs sont à jours, hein. Mais en cas d' | ||
- | nano / | + | <code bash / |
- | + | # Cacher la version d' | |
- | < | + | |
ServerTokens Prod | ServerTokens Prod | ||
- | ServerSignature Off</ | + | # Cache la signature de " |
+ | ServerSignature Off | ||
+ | # Désactive la méthode HTTP TRACE utilisée dans des attaques XST | ||
+ | TraceEnable Off | ||
+ | </ | ||
+ | |||
+ | sudo apachectl a2enconf security | ||
- | service apache2 restart | ||
- | À refaire sur chacun de ses serveurs ! | ||
- | <WRAP center round tip 60%> | ||
- | On peut aussi paramétrer (et modifier) ces options dans ''/ | ||
- | </ | ||
- | <WRAP center round help 60%> | ||
- | Il faut activer le fichier, non ? Cette partie du tuto demande à être vérifiée. | ||
- | </ | ||
==== Vhost avec variables ==== | ==== Vhost avec variables ==== | ||
Ligne 219: | Ligne 216: | ||
< | < | ||
# Déclare la macro, son appel et la variable pour le nom de domaine | # Déclare la macro, son appel et la variable pour le nom de domaine | ||
- | Use macro_common_config_80 | + | Use common_config_80 |
# Déclare les sous-domaines qui sont en réalité le même site | # Déclare les sous-domaines qui sont en réalité le même site | ||
ServerAlias www.exemple.org | ServerAlias www.exemple.org | ||
Ligne 225: | Ligne 222: | ||
< | < | ||
- | Use macro_common_config_443 | + | Use common_config_443 |
ServerAlias www.exemple.org | ServerAlias www.exemple.org | ||
# Si besoin d' | # Si besoin d' | ||
- | Alias /app / | + | #Alias /machin |
DocumentRoot / | DocumentRoot / | ||
< | < | ||
Ligne 239: | Ligne 236: | ||
On active ensuite : | On active ensuite : | ||
- | < | + | < |
- | sudo a2enconf macro_common_config_80.conf | + | sudo a2enconf macro_common_config_80 |
sudo a2ensite exemple.org.conf | sudo a2ensite exemple.org.conf | ||
sudo apachectl -t | sudo apachectl -t | ||
Ligne 274: | Ligne 271: | ||
* Le dernier morceau concerne OCSP qui accélère un peu les échanges en https, voir aussi [[https:// | * Le dernier morceau concerne OCSP qui accélère un peu les échanges en https, voir aussi [[https:// | ||
- | < | + | < |
SSLProtocol +TLSv1.2 | SSLProtocol +TLSv1.2 | ||
SSLCompression off | SSLCompression off | ||
Ligne 285: | Ligne 282: | ||
SSLStaplingReturnResponderErrors off | SSLStaplingReturnResponderErrors off | ||
SSLStaplingCache | SSLStaplingCache | ||
+ | #À partir de la version 2.4.11 d' | ||
+ | SSLSessionTickets Off | ||
</ | </ | ||
- | | ||
Pour la liste '' | Pour la liste '' | ||
- | À partir de la version 2.4.11 d' | ||
- | |||
- | < | ||
- | SSLSessionTickets Off | ||
- | </ | ||
Ligne 363: | Ligne 356: | ||
Puis modifiez le fichier ''/ | Puis modifiez le fichier ''/ | ||
- | < | + | < |
# Ce qui suit vient de | # Ce qui suit vient de | ||
# https:// | # https:// | ||
# Contrôler l’accès des bots de facon plus fine qu' | # Contrôler l’accès des bots de facon plus fine qu' | ||
- | Header set X-Robots-Tag " | + | Header set X-Robots-Tag " |
# Évite que le contenu soit interprété différemment que définit dans le mime Type | # Évite que le contenu soit interprété différemment que définit dans le mime Type | ||
Header set X-Content-Type-Options nosniff | Header set X-Content-Type-Options nosniff | ||
Ligne 376: | Ligne 369: | ||
# Faille spécifique IE8, on espère que plus personne ne l' | # Faille spécifique IE8, on espère que plus personne ne l' | ||
Header set X-Download-Options noopen; | Header set X-Download-Options noopen; | ||
- | # Interdire l' | + | # Interdire l' |
Header set X-Permitted-Cross-Domain-Policies none | Header set X-Permitted-Cross-Domain-Policies none | ||
+ | # Protège la vie privée en évitant de transmettre trop d' | ||
+ | Header set Referrer-Policy " | ||
# X-Clacks, ça sert à rien, c'est donc vital. | # X-Clacks, ça sert à rien, c'est donc vital. | ||
header set X-Clacks-Overhead "GNU Terry Pratchett" | header set X-Clacks-Overhead "GNU Terry Pratchett" | ||
- | # Enfin, les CSP permettent de vérifier l' | ||
- | # CSP, pour éviter de charger des scripts d' | ||
- | Header set Content-Security-Policy " | ||
</ | </ | ||
Ligne 388: | Ligne 380: | ||
* Header set X-Robots-Tag : http:// | * Header set X-Robots-Tag : http:// | ||
* CSP : https:// | * CSP : https:// | ||
+ | |||
=== Content Security Policy (CSP) === | === Content Security Policy (CSP) === | ||
Ligne 394: | Ligne 387: | ||
Mais il est difficile de faire marcher les CMS tout en ayant une politique sécurisée sur les CSP. | Mais il est difficile de faire marcher les CMS tout en ayant une politique sécurisée sur les CSP. | ||
+ | |||
+ | Je conseille de faire des règles CSP différentes suivant les CMS... | ||
Le site de référence est [[https:// | Le site de référence est [[https:// | ||
Ligne 415: | Ligne 410: | ||
add_header Content-Security-Policy " | add_header Content-Security-Policy " | ||
- | Et voici une autre façon d' | + | Et voici une autre façon d' |
< | < | ||
Header set Content-Security-Policy " | Header set Content-Security-Policy " | ||
- | # Tout provient du même domaine sauf mention contraire. | ||
default-src ' | default-src ' | ||
- | | + | script-src ' |
- | # Permet les scripts inline et eval(), nécessaires pour certaines applications. | + | style-src ' |
- | # script-src 'self' ' | + | |
- | # Cette version est sécurisée mais... ben potentiellement certaines applis ne fonctionneront pas | + | |
- | # Celles avec des potentielles failles :P | + | |
- | script-src ' | + | |
- | # L' | + | |
- | | + | |
- | # Pour faire marcher les sites mal branlés (style dans le html) | + | |
- | #style-src 'self' ' | + | |
- | # Sinon : | + | |
- | style-src ' | + | |
- | # Autorise les images venant du même domaine et de certaines sources externes via https. | + | |
img-src ' | img-src ' | ||
- | # Autorise les polices venant du même domaine. | ||
font-src ' | font-src ' | ||
- | # Permet les connexions vers des ressources externes suivantes | ||
connect-src ' | connect-src ' | ||
- | # Autorise l' | ||
frame-src https:// | frame-src https:// | ||
- | # Limite l' | ||
object-src ' | object-src ' | ||
- | # Interdit les soumissions de formulaire et le changement de base URL depuis un autre domaine. | ||
base-uri ' | base-uri ' | ||
form-action ' | form-action ' | ||
- | # Empêche le site d' | ||
frame-ancestors ' | frame-ancestors ' | ||
" | " | ||
</ | </ | ||
+ | Ces règles sont un compromis entre " | ||
+ | * '' | ||
+ | * Les scripts, au choix... | ||
+ | * '' | ||
+ | * '' | ||
+ | * L' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | |||
==== Activer la réécriture des URLs ==== | ==== Activer la réécriture des URLs ==== |