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/01/19 09:13] – [Faire des pages d'erreurs personnalisées] zatalyz | fr:apache [2025/02/09 17:34] (Version actuelle) – [Content Security Policy (CSP)] Encore mieux zatalyz | ||
---|---|---|---|
Ligne 32: | Ligne 32: | ||
Cela ressemblera à quelque chose comme ça : | Cela ressemblera à quelque chose comme ça : | ||
- | <code>txt / | + | <code txt / |
< | < | ||
ServerName monsite.org | ServerName monsite.org | ||
Ligne 51: | Ligne 51: | ||
Le vhosts en https a un port différent, et c'est là qu'on configurera toutes les options : alias, etc. | Le vhosts en https a un port différent, et c'est là qu'on configurera toutes les options : alias, etc. | ||
- | <code>txt / | + | <code txt / |
< | < | ||
ServerName monsite.org | ServerName monsite.org | ||
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 | ||
+ | </ | ||
- | | + | |
- | À 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 ==== | ||
+ | On peut utiliser des macros, ce qui va permettre d' | ||
+ | |||
+ | sudo a2enmod macro | ||
+ | |||
+ | On crée ensuite les fichiers de " | ||
+ | <code bash / | ||
+ | <Macro common_config_80 $domain> | ||
+ | # Les parties "tout le monde pareil" | ||
+ | # Pour vhost 80 | ||
+ | ServerName $domain | ||
+ | |||
+ | # Redirection tout le trafic HTTP vers HTTPS | ||
+ | RewriteEngine On | ||
+ | RewriteCond %{REQUEST_URI} !.well-known/ | ||
+ | RewriteRule ^(.*)$ https:// | ||
+ | |||
+ | </ | ||
+ | |||
+ | <code bash / | ||
+ | |||
+ | <Macro common_config_443 $domain> | ||
+ | # Les parties "tout le monde pareil" | ||
+ | ServerName $domain | ||
+ | |||
+ | # Logs | ||
+ | ErrorLog ${APACHE_LOG_DIR}/ | ||
+ | CustomLog ${APACHE_LOG_DIR}/ | ||
+ | |||
+ | # Configuration SSL avec Let’s Encrypt | ||
+ | SSLEngine On | ||
+ | SSLCertificateFile / | ||
+ | SSLCertificateKeyFile / | ||
+ | |||
+ | # Redirection pour les sous-domaines non déclarés (à condition d' | ||
+ | RewriteEngine On | ||
+ | RewriteCond %{HTTP_HOST} !^%{SERVER_NAME}$ [NC] | ||
+ | RewriteRule ^ https:// | ||
+ | </ | ||
+ | |||
+ | Un vhost d'un site précis va ensuite ressembler à ceci (remplacez '' | ||
+ | <code bash / | ||
+ | < | ||
+ | # Déclare la macro, son appel et la variable pour le nom de domaine | ||
+ | Use common_config_80 exemple.org | ||
+ | # Déclare les sous-domaines qui sont en réalité le même site | ||
+ | ServerAlias www.exemple.org | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | Use common_config_443 exemple.org | ||
+ | ServerAlias www.exemple.org | ||
+ | # Si besoin d' | ||
+ | #Alias /machin / | ||
+ | DocumentRoot / | ||
+ | < | ||
+ | Options FollowSymLinks MultiViews | ||
+ | AllowOverride All | ||
+ | Require all granted | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | On active ensuite : | ||
+ | < | ||
+ | sudo a2enconf macro_common_config_80 | ||
+ | sudo a2ensite exemple.org.conf | ||
+ | sudo apachectl -t | ||
+ | sudo apachectl graceful</ | ||
+ | |||
+ | <WRAP center round tip %> | ||
+ | Cette configuration concerne un serveur " | ||
+ | </ | ||
===== Activation et paramétrage des modules ===== | ===== Activation et paramétrage des modules ===== | ||
Ligne 201: | 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 212: | 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 290: | 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 303: | 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 315: | 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 321: | 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 342: | Ligne 410: | ||
add_header Content-Security-Policy " | add_header Content-Security-Policy " | ||
+ | Et voici une autre façon d' | ||
+ | < | ||
+ | Header set Content-Security-Policy " | ||
+ | default-src ' | ||
+ | script-src ' | ||
+ | style-src ' | ||
+ | img-src ' | ||
+ | font-src ' | ||
+ | connect-src ' | ||
+ | frame-src https:// | ||
+ | object-src ' | ||
+ | base-uri ' | ||
+ | form-action ' | ||
+ | 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 ==== | ||
Ligne 497: | Ligne 596: | ||
Créer ''/ | Créer ''/ | ||
< | < | ||
+ | RemoteIPInternalProxy 10.0.0.10 | ||
RemoteIPHeader X-Forwarded-For | RemoteIPHeader X-Forwarded-For | ||
- | RemoteIPInternalProxy 192.168.20.35 | ||
</ | </ | ||
- | Remplacer '' | + | Remplacer '' |
+ | |||
+ | Si le proxy est externe, on le déclare autrement : | ||
+ | |||
+ | < | ||
Activer le [[https:// | Activer le [[https:// | ||
Ligne 570: | Ligne 673: | ||
==== Faire des pages d' | ==== Faire des pages d' | ||
- | Les pages par défaut d' | + | Les pages par défaut d' |
J' | J' |