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 17:01] – [Cacher la version d'apache] zatalyz | fr:apache [2025/06/26 20:41] (Version actuelle) – [Faire des pages d'erreurs personnalisées] 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 | ||
| + | # Cache la signature de " | ||
| ServerSignature Off | ServerSignature Off | ||
| + | # Désactive la méthode HTTP TRACE utilisée dans des attaques XST | ||
| TraceEnable Off | TraceEnable Off | ||
| </ | </ | ||
| Ligne 168: | Ligne 169: | ||
| sudo apachectl a2enconf security | sudo apachectl a2enconf security | ||
| - | À 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 221: | 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 227: | 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' | ||
| Ligne 276: | 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 287: | 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 365: | 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 378: | 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 390: | 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 396: | 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 417: | 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 ==== | ||
| Ligne 654: | Ligne 644: | ||
| On peut se faire un fichier de configuration appelant diverses modifs sur tous les sites, par exemple dans ''/ | On peut se faire un fichier de configuration appelant diverses modifs sur tous les sites, par exemple dans ''/ | ||
| - | Ensuite on peut l' | + | Ensuite on peut l' |
| + | sudo a2enconf bidouilles | ||
| + | sudo systemctl reload apache2 | ||
| + | Cela évite de réécrire les mêmes règles partout. | ||
| + | |||
| + | On peut aussi l' | ||
| Include / | Include / | ||
| + | Mais attention, suivant ce qu'on met dedans, cela peut mettre un peu de bazar (genre, la partie sur les logs plus bas, je ne sais pas trop comment les logs seront écrits avec l' | ||
| - | Cela évite de réécrire les mêmes règles partout. | ||
| ==== Virer le tracker de Facebook ==== | ==== Virer le tracker de Facebook ==== | ||
| Ligne 742: | Ligne 737: | ||
| Doc : https:// | Doc : https:// | ||
| + | |||
| + | === Partager les pages entre serveurs === | ||
| + | Là, je ne sais pas si c'est la bonne idée. Mais le plus efficace serait de monter le dossier des pages d' | ||
| + | |||
| + | Une autre solution est de faire un rsync, un truc Ansible... C'est sans doute aussi bien. | ||
| + | |||
| + | |||
| + | ==== Personnaliser les logs d' | ||
| + | |||
| + | Par défaut sur Debian (et sans doute d' | ||
| + | |||
| + | Cela peut se personnaliser au niveau du vhost en mettant par exemple ces deux lignes : | ||
| + | |||
| + | < | ||
| + | CustomLog ${APACHE_LOG_DIR}/ | ||
| + | |||
| + | En effet, un fichier de log par " | ||
| + | |||
| + | Finalement, tout laisser dans un seul fichier générique est aussi bien. On va donc laisser le fonctionnement par défaut. D' | ||
| + | |||
| + | === Un peu de théorie === | ||
| + | <WRAP center round todo 60%> | ||
| + | En cours de rédaction, mais je fais une pause. | ||
| + | </ | ||
| + | |||
| + | Avant tout : à quoi correspond les deux formats de fichiers ? | ||
| + | * error.log (lié à la directive [[https:// | ||
| + | * Si j'ai bien compris, ce qui s' | ||
| + | * access.log (lié à la directive [[https:// | ||
| + | * Ici on peut utiliser '' | ||
| + | |||
| + | Dans '' | ||
| + | < | ||
| + | LogFormat "%v:%p %h %l %u %t \" | ||
| + | LogFormat "%h %l %u %t \" | ||
| + | LogFormat "%h %l %u %t \" | ||
| + | LogFormat " | ||
| + | LogFormat " | ||
| + | </ | ||
| + | |||
| + | Le format est : | ||
| + | LogFormat " | ||
| + | |||
| + | Pour les arguments, ce n'est pas évident à déchiffrer ; la syntaxe détaillée est expliquée sur [[https:// | ||
| + | |||
| + | Ainsi par exemple, pour '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | |||
| + | La proposition pratique sera épurée par rapport à ce modèle. | ||
| + | === Et un exemple pratique === | ||
| + | Alors, on met quoi, dans nos logs ? | ||
| + | |||
| + | Oublions les logs déclarés dans les vhosts, on va faire ça de façon générale, dans notre '' | ||
| + | |||
| + | < | ||
| + | # Logs au format comme on veut | ||
| + | LogFormat "%h ☆ %v ☆ %t ☆ %>s ☆ %O ☆ \" | ||
| + | CustomLog ${APACHE_LOG_DIR}/ | ||
| + | </ | ||
| + | |||
| + | * l'ip en premier, c'est ainsi super facile d' | ||
| + | * ☆ pour séparer les arguments (ou tout autre caractère unicode). Aucun risque que ce soit utilisé dans les logs, sauf à la limite le Referer ou l' | ||
| + | * Je garde la requête en format long. Une alternative serait : | ||
| + | * '' | ||
| + | * Je garde l' | ||
| + | * Le Referer n'a pas forcément d' | ||
| + | |||
| + | Attention, ce format de log n'a rien de classique ; il ne sera pas facilement interprété par les logiciels à moins d' | ||
| ==== Could not reliably determine the server' | ==== Could not reliably determine the server' | ||
| À chaque modif du serveur, vous avez sans doute droit à ce message d' | À chaque modif du serveur, vous avez sans doute droit à ce message d' | ||





