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
Dernière révisionLes deux révisions suivantes
fr:securite_sysadmin [2018/08/06 15:54] – [Faire suivre les IP derrière les reverse proxy] correction du tag zatalyzfr:securite_sysadmin [2021/12/03 19:19] – modification externe 127.0.0.1
Ligne 173: Ligne 173:
 # Interdire l'embarquement de tout ou partie de votre site dans un site ou logiciel tiers  # Interdire l'embarquement de tout ou partie de votre site dans un site ou logiciel tiers 
 Header set X-Permitted-Cross-Domain-Policies none Header set X-Permitted-Cross-Domain-Policies none
 +# X-Clacks, ça sert à rien, c'est donc vital.
 +header set X-Clacks-Overhead "GNU Terry Pratchett"
 # Enfin, les CSP permettent de vérifier l'origine des éléments du site # Enfin, les CSP permettent de vérifier l'origine des éléments du site
-# CSP, pour eviter de charger des scripts d'ailleurs. +# CSP, pour eviter de charger des scripts d'ailleurs. /!\ partie complexe à gérer suivant vos CMS 
-Header set Content-Security-Policy "default-src 'self' "+Header set Content-Security-Policy "default-src 'self' *.monsite.org 'unsafe-eval' 'unsafe-inline' "
 </code> </code>
  
 Les explications : Les explications :
   * 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 
  
-<WRAP center round info 90%> +== Content Security Policy (CSP) == 
-Note à propos de CSP :+Les CSP améliorent grandement la sécurité d'une installation, en interdisant à certaines ressources de s'exécuter, par exemple des scripts malicieux injectés dans vos sites webs.
  
-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. 
  
-L'option suivante permet à Dokuwiki et Simple Machine Forum de marcher, mais pas à Etherpad, et ne vaut rien aux yeux de [[https://observatory.mozilla.org/|l'Observatoire Mozilla]]. +Le site de référence est [[https://content-security-policy.com/]]. En anglais, mais il contient toute la documentation officielle sur le sujet. 
 + 
 +  * Premier cas : pas de politique CSP. Certains CMS permettent aux utilisateurs d'appeler "des bouts de web" venant d'ailleurs, généralement les images, mais dans certains cas aussi du code... Un attaquant peut se servir de ça pour appeler sur le serveur un code malicieux. Un CMS sécurisé réduit beaucoup les possibilités, mais le risque zéro n'existe pas, et la plupart des CMS ont des failles, c'est un fait. 
 +  * Second cas : une politique CSP stricte (paramétrée uniquement sur ''self''). Ici, plus moyen d'appeler un truc d'ailleurs. Par contre cela va bloquer le fonctionnement légitime de certains CMS, entre autre ce qui concerne les scripts (pourquoi, je n'ai pas pas encore bien compris, mais c'est un fait). 
 +  * Troisième cas : ajouter des règles comme ''unsafe-eval'' et ''unsafe-inline''. Cela va permettre aux scripts en question de fonctionner MAIS cela permet aussi à certains attaquant d'utiliser des failles : comme leur nom l'indique, cela est considéré comme "non sécurisé". Ils autorisent explicitement certains trucs à marcher, sans plus de vérification. Cela ouvre la porte à des injections. Cependant, d'après mes tests, les scripts ayant une adresse externe ne sont PAS exécutés sur le domaine. Ne vous sentez pas en confiance pour autant. 
 +  * Quatrième cas : exécuter localement uniquement les scripts validés explicitement. Cela demande de rajouter la variable ''nonce'' ou ''hash'', puis d'ajouter dans chacun des scripts de notre serveur la clé associée (un hash sur les scripts, ou bien une clé dans ces derniers). Cela veut donc dire : avoir la main sur tout... c'est assez irréaliste dans la majorité des cas, et entre autre pour les CMS qui embarquent trop de scripts et qui écraseront nos modifications à chaque mise à jour. Cela demande aussi un certain niveau de développement, or la plupart des sysadmin/webmestres sont surtout des bidouilleuses, pas des développeuses. 
 + 
 +== Quelques exemples == 
 + 
 +L'option suivante permet à Dokuwiki et Simple Machine Forum de marcher, mais pas à Etherpad, et ne vaut rien aux yeux de [[https://observatory.mozilla.org/|l'Observatoire Mozilla]]. Cependant, même l'etherpad de Mozilla ne fait pas mieux.
   Header set Content-Security-Policy "default-src 'self' *khaganat.net; script-src 'self' 'unsafe-inline' *khaganat.net; style-src 'self' 'unsafe-inline'; img-src * "   Header set Content-Security-Policy "default-src 'self' *khaganat.net; script-src 'self' 'unsafe-inline' *khaganat.net; style-src 'self' 'unsafe-inline'; img-src * "
      
-En effet, le paramètre ''unsafe-inline'' est, comme son nom l'indique, pas vraiment sécurisé, sans parler de ''img-src *'' qui accepte tout (mais sans ça, bonjour pour accepter les images en lien...) +''img-src *'' ici accepte toutmais sans ça, on n'affiche plus les images en lien, par exemple dans le forum, ce qui demande une solution interne pour les héberger. 
-</WRAP> + 
-<WRAP center round todo 60%> +Pour onlyoffice, après de nombreuses galères : la solution a été la CSP frame-ancestors pour permettre l'accès à une autre instance Onlyoffice par plusieurs instances nextcloudDans ce cas sur nginx avec le module more_headers, ça a donné ça : 
-Travail en courson va trouver l'option ultime pour CSPqui permette sécurité, A+ et fonctionnalités :-)+  more_set_headers "Content-Security-Policy : frame-ancestors https://site1.example.com/nextcloud https://site2.example.com/ https://site3.example.com/nextcloud "; 
 + 
 +La règle suivante, assez générique, va "fonctionner" pour la plupart des CMS. La mettre dans une règle sur le proxyappelée par les diverses configurations : 
 +  add_header Content-Security-Policy "default-src 'self' *.monsite.org 'unsafe-eval' 'unsafe-inline'; ";
  
-Pour le moment, cependant, etherpad bloque un csp de qualité. Même l'etherpad de Mozilla ne fait pas mieux.</WRAP> 
  
  
Ligne 209: Ligne 222:
   * 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>
-SSLProtocol TLSv1.2+SSLProtocol +TLSv1.2
 SSLCompression off SSLCompression off
 SSLCipherSuite HIGH:!aNULL:!eNULL:!LOW:!MEDIUM:!EXP:!RC4:!3DES:!MD5:!PSK:!kRSA:!SRP:-DH:+ECDH SSLCipherSuite HIGH:!aNULL:!eNULL:!LOW:!MEDIUM:!EXP:!RC4:!3DES:!MD5:!PSK:!kRSA:!SRP:-DH:+ECDH
Ligne 236: Ligne 249:
 Ce qui suit est extrait d'une conversation avec TychoBrahe ; j'ai conservé son style fleuri si savoureux.  Ce qui suit est extrait d'une conversation avec TychoBrahe ; j'ai conservé son style fleuri si savoureux. 
  
- --- //[[wiki:user:zatalyz|zatalyz]] 2016/12/30 13:27//+ --- //[[user:zatalyz|zatalyz]] 2016/12/30 13:27//
 </WRAP> </WRAP>
  
Ligne 277: Ligne 290:
   man 1 ciphers   man 1 ciphers
  
 +== L'échange de clefs ==
 +
 +C'est un mécanisme permettant l'échange de clefs en toute confidentialité, sans qu'un tiers puisse avoir connaissance de celles-ci.
 +
 +== Le chiffrement a/symétrique ==
 +
 +La différence entre le chiffrement symétrique et le chiffrement asymétrique est que dans le premier cas, il n'y a besoin que d'une seule clef, qui permet aussi bien de chiffrer un message que de le déchiffrer. Pour le chiffrement asymétrique, on utilise une clef pour le chiffrement, et une autre clef différente de la première pour le déchiffrement. C'est pour cela qu'on parle de clef dite publique (celle que tout le monde peut voir et avec laquelle on va chiffrer les messages qui nous sont destinés) et de clef dite privée (celle avec laquelle on va déchiffrer notre message ; si on n'a pas accès à cette clef privée, on ne peut pas déchiffrer le message).
 +
 +== Le contrôle ==
 +
 +Afin de vérifier l'intégrité des messages que l'on transmet, on calcule une somme de contrôle que l'on envoie avec le message. Une fois le message et sa somme de contrôle réceptionnés, on peut recalculer la somme de contrôle du message et vérifier qu'elle correspond bien à celle qui a été transmise. Si elles diffèrent, c'est que le message a été altéré (ou qu'il y a une collision, c'est à dire que pour deux messages différents on obtient la même somme de contrôle, mais ce cas ne devrait quasiment presque jamais arriver).
 === Les fichiers de sites-enabled (vhost) === === Les fichiers de sites-enabled (vhost) ===
  
Ligne 320: Ligne 344:
 Je n'ai sans doute pas tout compris, ou alors ce n'est pas compatible avec ma version d'apache, mais si je l'ajoute ça me fait une erreur. Je n'ai sans doute pas tout compris, ou alors ce n'est pas compatible avec ma version d'apache, mais si je l'ajoute ça me fait une erreur.
  
- --- //[[wiki:user:zatalyz|zatalyz]] 2017/01/01 18:33//+ --- //[[user:zatalyz|zatalyz]] 2017/01/01 18:33//
 </WRAP> </WRAP>
  
Ligne 343: Ligne 367:
 Cela devrait marcher. À répeter sur chaque VM du réseau. Cela devrait marcher. À répeter sur chaque VM du réseau.
  
 +=== Virer les traqueurs de Facebook ===
 +Si vos liens se baladent sur Facebook, vos visiteurs vont visiter vos pages avec un tracker collé à l'url, du type ''https://monsite.fr/?fbclid=IwAR1RNFCx5Gu9SHRAbuj67ebqbu3Hc7YGgkOKh''. C'est pas propre, et puis ça peut mettre le bazar dans certains sites. 
 +
 +On se fait un petit fichier appelé "bidouilles.conf"((On peut y rajouter d'autres trucs, pour le moment y'a surtout du Facebook.)) avec ce contenu :
 +<code>
 +# Des bidouilles à inclure partout.
 +
 +# Pour virer le tracker de Facebook
 +<IfModule mod_rewrite.c>
 +  RewriteEngine On
 +  RewriteCond %{QUERY_STRING} ^(.*)(?:^|&)fbclid=(?:[^&]*)((?:&|$).*)$ [NC]
 +  RewriteCond %1%2 (^|&)([^&].*|$)
 +  RewriteRule ^(.*) $1?%2 [R=301,L]
 +</IfModule>
 +
 +</code>
 +
 +Ensuite on appelle ce fichier dans nos vhost actifs :
 +<code>
 +<VirtualHost *:443>
 +        ServerName monsite.fr
 +
 +# toute configuration utile en rab...
 +        
 +# bidouilles perso
 +        Include /etc/apache2/bidouilles.conf
 + 
 +</code>
 +
 +
 +Relancer apache et voilà, ça marche.
 +
 +Astuce tirée de [[https://blog.paranoidpenguin.net/2018/12/how-to-remove-facebooks-fbclid-parameter-using-mod_rewrite-on-apache-2-4/|ce site]] avec quelques aménagements. 
 {{tag> Serveur Sysadmin Sécurité }} {{tag> Serveur Sysadmin Sécurité }}
CC Attribution-Share Alike 4.0 International Driven by DokuWiki
fr/securite_sysadmin.txt · Dernière modification : 2023/06/21 08:30 de zatalyz

Licences Mentions légales Accueil du site Contact