Logo Khaganat

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
fr:apache [2025/02/08 11:01] – [Un serveur pare-feu et d'autres derrière] zatalyzfr: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 /etc/apache2/sites-available/monsite-org.conf+<code txt /etc/apache2/sites-available/monsite-org.conf>
 <VirtualHost *:80> <VirtualHost *:80>
     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 /etc/apache2/sites-available/monsite-org-ssl.conf+<code txt /etc/apache2/sites-available/monsite-org-ssl.conf>
 <VirtualHost *:443> <VirtualHost *:443>
     ServerName monsite.org     ServerName monsite.org
Ligne 158: Ligne 158:
 En principe nos serveurs sont à jours, hein. Mais en cas d'oubli, ne facilitons pas la tâche des observateurs : En principe nos serveurs sont à jours, hein. Mais en cas d'oubli, ne facilitons pas la tâche des observateurs :
  
-  nano /etc/apache2/conf-available/security.conf +<code bash /etc/apache2/conf-available/security.conf> 
- +# Cacher la version d'Apache2
-<code># Cacher la version d'Apache2+
 ServerTokens Prod ServerTokens Prod
-ServerSignature Off</code>+# Cache la signature de "Apache" dans les pages d'erreurs et répertoires 
 +ServerSignature Off 
 +# Désactive la méthode HTTP TRACE utilisée dans des attaques XST 
 +TraceEnable Off 
 +</code> 
 + 
 +  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 ''/etc/apache2/apache2.conf'' mais c'est moins élégant. 
-</WRAP> 
-<WRAP center round help 60%> 
-Il faut activer le fichier, non ? Cette partie du tuto demande à être vérifiée. 
-</WRAP> 
  
 ==== Vhost avec variables ==== ==== Vhost avec variables ====
Ligne 181: Ligne 178:
  
 On crée ensuite les fichiers de "macros" On crée ensuite les fichiers de "macros"
-<code bash /etc/apache2/sites-available/common_config_80.conf>+<code bash /etc/apache2/conf-available/macro_common_config_80.conf>
 <Macro common_config_80 $domain> <Macro common_config_80 $domain>
 # Les parties "tout le monde pareil" dans les configs apache.  # Les parties "tout le monde pareil" dans les configs apache. 
Ligne 194: Ligne 191:
 </Macro></code> </Macro></code>
  
-<code bash /etc/apache2/sites-available/common_config_443.conf>+<code bash /etc/apache2/conf-available/macro_common_config_443.conf>
  
 <Macro common_config_443 $domain> <Macro common_config_443 $domain>
Ligne 228: Ligne 225:
  ServerAlias www.exemple.org  ServerAlias www.exemple.org
  # Si besoin d'alias   # Si besoin d'alias 
- Alias /app /var/www/html+ #Alias /machin /var/www/html
  DocumentRoot /var/www/exemple.org  DocumentRoot /var/www/exemple.org
  <Directory /var/www/exemple.org/ >  <Directory /var/www/exemple.org/ >
Ligne 239: Ligne 236:
  
 On active ensuite : On active ensuite :
-<code>sudo a2ensite common_config_443.conf +<code>sudo a2enconf macro_common_config_443 
-sudo a2ensite 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://www.octopuce.fr/accelerer-votre-ssl-tls-avec-ocsp-stapling/|Accélérer votre réponse SSL/TLS avec l’OCSP Stapling]]   * Le dernier morceau concerne OCSP qui accélère un peu les échanges en https, voir aussi [[https://www.octopuce.fr/accelerer-votre-ssl-tls-avec-ocsp-stapling/|Accélérer votre réponse SSL/TLS avec l’OCSP Stapling]]
  
-<code>+<code bash /etc/apache2/mods-available/ssl.conf>
 SSLProtocol +TLSv1.2 SSLProtocol +TLSv1.2
 SSLCompression off SSLCompression off
Ligne 285: Ligne 282:
 SSLStaplingReturnResponderErrors off SSLStaplingReturnResponderErrors off
 SSLStaplingCache        shmcb:/var/run/ocsp(128000) SSLStaplingCache        shmcb:/var/run/ocsp(128000)
 +#À partir de la version 2.4.11 d'apache
 +SSLSessionTickets Off
 </code> </code>
-   
  
 Pour la liste ''SSLCipherSuite'', consulter les préconisations de [[https://mozilla.github.io/server-side-tls/ssl-config-generator/|Mozilla SSL Configuration Generator]] et lire tranquillement l'explication si dessous avant de modifier la proposition <wrap hi>mise à jour le 29 novembre 2017.</wrap> Pour la liste ''SSLCipherSuite'', consulter les préconisations de [[https://mozilla.github.io/server-side-tls/ssl-config-generator/|Mozilla SSL Configuration Generator]] et lire tranquillement l'explication si dessous avant de modifier la proposition <wrap hi>mise à jour le 29 novembre 2017.</wrap>
  
  
-À partir de la version 2.4.11 d'apache, vous pouvez ajouter dans le fichier ''/etc/apache2/mods-available/ssl.conf'' : 
- 
-<code> 
-SSLSessionTickets Off 
-</code> 
  
  
Ligne 363: Ligne 356:
 Puis modifiez le fichier ''/etc/apache2/mods-available/headers.conf'' : Puis modifiez le fichier ''/etc/apache2/mods-available/headers.conf'' :
  
-<code>+<code bash /etc/apache2/mods-available/headers.conf>
 # Ce qui suit vient de # Ce qui suit vient de
 # https://blog.adminrezo.fr/2016/12/securiser-serveur-apache-https-headers/ # https://blog.adminrezo.fr/2016/12/securiser-serveur-apache-https-headers/
 # Contrôler l’accès des bots de facon plus fine qu'avec robots.txt : # Contrôler l’accès des bots de facon plus fine qu'avec robots.txt :
-Header set X-Robots-Tag "index,follow,noarchive"+Header set X-Robots-Tag "index,follow,noarchive,notranslate"
 # É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'utilise, mais... # Faille spécifique IE8, on espère que plus personne ne l'utilise, mais...
 Header set X-Download-Options noopen; Header set X-Download-Options noopen;
-# Interdire l'embarquement de tout ou partie de votre site dans un site ou logiciel tiers +# Interdire l'embarquement de tout ou partie du site dans un site ou logiciel tiers 
 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'infos lorsqu'on naviguer vers une autre page.
 +Header set Referrer-Policy "strict-origin-when-cross-origin"
 # 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'origine des éléments du site 
-# CSP, pour éviter de charger des scripts d'ailleurs. /!\ partie complexe à gérer suivant vos CMS 
-Header set Content-Security-Policy "default-src 'self' *.monsite.org 'unsafe-eval' 'unsafe-inline' " 
 </code> </code>
  
Ligne 388: Ligne 380:
   * Header set X-Robots-Tag : http://robots-txt.com/x-robots-tag/   * Header set X-Robots-Tag : http://robots-txt.com/x-robots-tag/
   * CSP : https://ole.michelsen.dk/blog/secure-your-website-with-content-security-policy.html    * CSP : https://ole.michelsen.dk/blog/secure-your-website-with-content-security-policy.html 
 +
  
 === 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://content-security-policy.com/]]. En anglais, mais il contient toute la documentation officielle sur le sujet. Le site de référence est [[https://content-security-policy.com/]]. En anglais, mais il contient toute la documentation officielle sur le sujet.
Ligne 415: Ligne 410:
   add_header Content-Security-Policy "default-src 'self' *.monsite.org 'unsafe-eval' 'unsafe-inline'; ";   add_header Content-Security-Policy "default-src 'self' *.monsite.org 'unsafe-eval' 'unsafe-inline'; ";
  
 +Et voici une autre façon d'écrire les Content-Security-Policy, un peu plus "lisible". Cela couvre des besoins normaux de façon relativement sécurisée, mais comme on l'a vu, il faudra adapter aux pads, à OnlyOffice... 
 +<code> 
 +Header set Content-Security-Policy " 
 +  default-src 'self'; 
 +  script-src 'self';  
 +  style-src 'self'; 
 +  img-src 'self' https: ; 
 +  font-src 'self'; 
 +  connect-src 'self' https://bosh.jabberfr.org/ *.numenaute.org; 
 +  frame-src https://chat.jabberfr.org/ *.numenaute.org/; 
 +  object-src 'self'; 
 +  base-uri 'self'; 
 +  form-action 'self'; 
 +  frame-ancestors 'none'; 
 +
 +</code> 
 +Ces règles sont un compromis entre "fonctionnel" et "sécurisé" (avec quelques suggestions de "quoi mettre d'autre") :  
 +  * ''default-src 'self';''Tout provient du même domaine sauf mention contraire. 
 +  * Les scripts, au choix... 
 +    * ''script-src 'self' 'unsafe-inline' 'unsafe-eval';'' Permet les scripts inline et eval(), nécessaires pour certaines applications. 
 +    * ''script-src 'self';'' Cette version est sécurisée mais... ben potentiellement certaines applis ne fonctionneront pas. Celles avec des potentielles failles :P 
 +    * L'usage de Hashes et Nonces serait idéale mais avec les cms, c'est compliqué. 
 +  * ''style-src 'self';'' Permet les styles inline. 
 +    * ''style-src 'self' 'unsafe-inline';'' Pour faire marcher les sites mal branlés (style dans le html) 
 +  * ''img-src 'self' https: ;'' Autorise les images venant du même domaine et de certaines sources externes via https. 
 +  * ''font-src 'self';'' Autorise les polices venant du même domaine. 
 +  * ''connect-src 'self' https://bosh.jabberfr.org/ *.numenaute.org;'' Permet les connexions vers des ressources externes indiquées 
 +  * ''frame-src https://chat.jabberfr.org/ *.numenaute.org/;'' Autorise l'encadrement (frames) par certains domaines 
 +  * ''object-src 'self';'' Limite l'utilisation des éléments <object>, <embed>, et <applet> dans les pages à notre domaine. 
 +  * ''base-uri 'self';'' et ''form-action 'self';'' Interdit les soumissions de formulaire et le changement de base URL depuis un autre domaine. 
 +  * ''frame-ancestors 'none';'' Empêche le site d'être chargé dans un iframe 
 + 
  
 ==== Activer la réécriture des URLs ==== ==== Activer la réécriture des URLs ====
CC Attribution-Share Alike 4.0 International Driven by DokuWiki
fr/apache.1739012506.txt.gz · Dernière modification : 2025/02/08 11:01 de zatalyz

Licences Mentions légales Accueil du site Contact