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:12] – [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' | ||
Ligne 595: | Ligne 698: | ||
</ | </ | ||
- | Mes diverses pages sont statiques et toutes simples. Il serait possible de faire des pages incluant des éléments SSI (Apache ajoutant des informations) mais cela ne me semble pas vital. Et bonus : tout cela est logué normalement. | + | Mes diverses pages sont statiques et toutes simples. Il serait possible de faire des pages [[https:// |
<code html5 / | <code html5 / |