Cette page vous donne les différences entre la révision choisie et la version actuelle de la page.
linux:dokuwiki:secu [2011/01/06 21:58] matthieu |
linux:dokuwiki:secu [2011/10/04 22:15] (Version actuelle) matthieu ancienne révision restaurée |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | {{tag>fr fr:linux fr:serveur fr:web fr:wiki}} | ||
====== Sécurité dans Dokuwiki ====== | ====== Sécurité dans Dokuwiki ====== | ||
- | Cette page détaille comment sécuriser [[linux:Dokuwiki]]. | + | Cette page détaille comment sécuriser les sections privées de [[linux:Dokuwiki]]. |
- | :!: Dernière mise à jour pour la version 2010-11-07. | + | :!: Dernière mise à jour pour la version 2011-05-25a. |
===== Créer une section privée ===== | ===== Créer une section privée ===== | ||
Ligne 24: | Ligne 25: | ||
:!: Afin de cacher les pages dans l'index, il faut activer l'option générale "sneaky_index" | :!: Afin de cacher les pages dans l'index, il faut activer l'option générale "sneaky_index" | ||
- | ===== Masquer l'existence des pages ===== | + | ===== Sécuriser la racine ===== |
Les messages indiquant si l'interdiction d'accès ou inexistante de la page sont différents, il est donc possible de savoir si la page existe. | Les messages indiquant si l'interdiction d'accès ou inexistante de la page sont différents, il est donc possible de savoir si la page existe. | ||
- | Pour contourner ce problème, il suffit de mettre par défaut le site en "deny" et d'autoriser spécifiquement les pages publiques. | + | Si certain namespace sont cachés, pour masquer complètement leur existence, il faut bloquer l'accès à la racine "*" puis autoriser les pages et namespace publique manuellement. |
- | ===== Failles de sécurité ===== | + | Par exemple : |
+ | ^ page ^ group ^ rights ^ | ||
+ | | * | @ALL | None | | ||
+ | | start | @ALL | Read | | ||
+ | | sidebar | @ALL | Read | | ||
+ | | linux:* | @ALL | Read | | ||
+ | | en:* | @ALL | Read | | ||
+ | |||
+ | |||
+ | ===== Masquer complètement l'existence des pages non autorisées ===== | ||
+ | Les ACL permettent de rendre les pages inaccessibles mais ne masquent pas complètement leur existence.\\ | ||
Cette section recense les failles de sécurité que j'ai détectée lorsque des sections privées sont utilisées et fournit un correctif. | Cette section recense les failles de sécurité que j'ai détectée lorsque des sections privées sont utilisées et fournit un correctif. | ||
Ligne 51: | Ligne 62: | ||
{{:linux:dokuwiki:doku_secu_1_4.png|}} | {{:linux:dokuwiki:doku_secu_1_4.png|}} | ||
- | Le détail des problèmes est décrit dans les paragraphes suivants. | + | Détail des problèmes : |
+ | * Même si le contenu d'une page est bloqué, il est malgré tout possible de connaitre son titre si l'option "use_heading" est activée. | ||
+ | * Le breadcrumb (ou piste en français) indique les pages visitées, permet de connaitre si une page existe (les pages inexistantes ne sont pas ajoutées). | ||
+ | * Lorsqu'une page contient des liens vers d'autres pages, ceux-ci indiquent si la page existe même lorsque l'accès y est interdit.\\ | ||
+ | De plus si useheading est activé, le titre de la page est également indiqué. | ||
+ | |||
+ | :!: Attention, les pages générées sont cachées par dokuwiki, un utilisateur peut donc voir les liens si la page cachée a été générée pour utilisateur qui dispose des autorisations pour ces liens.\\ | ||
+ | Il faut donc éviter d'insérer dans des pages "publiques" des liens vers des pages "privées" ou désactiver le cache des pages. | ||
- | ==== Affichage du titre des sections privées ==== | + | Correctif : {{:linux:dokuwiki:dokuwiki_2011-05-25_secu1.patch|}} |
- | Même si le contenu d'une page est bloqué, il est malgré tout possible de connaitre son titre si l'option "use_heading" est activée. | + | |
- | + | ||
- | Correctif : {{dokuwiki-2010-11-07_secu1.patch|}} | + | |
<code> | <code> | ||
- | :/opt/dokuwiki/inc# wget http://www.bouthors.fr/wiki/lib/exe/fetch.php?media=linux:dokuwiki:dokuwiki-2010-11-07_secu1.patch | + | :/opt/dokuwiki/inc# patch -p 1 < /root/dokuwiki_2011-05-25_secu1.patch |
- | :/opt/dokuwiki/inc# patch -p 1 < dokuwiki-2010-11-07_secu1.patch | + | |
- | patching file parserutils.php | + | |
- | :/opt/dokuwiki/inc# | + | |
- | </code> | + | |
- | + | ||
- | + | ||
- | ==== Le style utilisé dans youarehere indique si la page existe ==== | + | |
- | Il est possible de distinguer si une page existe ou non en fonction du style utilisé dans "youarehere" (il s'agit du texte en haut à gauche en titre dans la page). | + | |
- | + | ||
- | Correctif : {{dokuwiki-2010-11-07_secu2.patch|}} | + | |
- | + | ||
- | <code> | + | |
- | :/opt/dokuwiki/inc# patch -p 1 < /root/dokuwiki-2010-11-07_secu2.patch | + | |
- | patching file template.php | + | |
- | :/opt/dokuwiki/inc# | + | |
- | </code> | + | |
- | + | ||
- | ==== Le breadcrumb indique si la page existe ==== | + | |
- | Le breadcrumb (ou piste en français) indique les pages visitées, permet de connaitre si une page existe (les pages inexistantes ne sont pas ajoutées). | + | |
- | + | ||
- | Correctif : {{dokuwiki-2010-11-07_secu3.patch|}} | + | |
- | + | ||
- | <code> | + | |
- | :/opt/dokuwiki/inc# patch -p 1 < /root/dokuwiki-2010-11-07_secu3.patch | + | |
patching file common.php | patching file common.php | ||
- | :/opt/dokuwiki/inc# | ||
- | </code> | ||
- | |||
- | ==== Les liens vers les pages indiquent si une page existe et en indique le titre ==== | ||
- | Lorsqu'une page contient des liens vers d'autres pages, ceux-ci indiquent si la page existe même lorsque l'accès y est interdit.\\ | ||
- | De plus si useheading est activé, le titre de la page est également indiqué. | ||
- | |||
- | Correctif : {{dokuwiki-2010-11-07_secu4.patch|}} | ||
- | |||
- | <code> | ||
- | :/opt/dokuwiki/inc# patch -p 1 < /root/dokuwiki-2010-11-07_secu4.patch | ||
patching file parser/xhtml.php | patching file parser/xhtml.php | ||
:/opt/dokuwiki/inc# | :/opt/dokuwiki/inc# | ||
</code> | </code> | ||
- | :!: Attention, les pages générées sont cachées par dokuwiki, un utilisateur peut donc voir les liens si la page cachée a été générée pour utilisateur qui dispose des autorisations pour ces liens.\\ | ||
- | Il faut donc éviter d'insérer dans des pages "publiques" des liens vers des pages "privées". | ||
==== Démo corrigée ==== | ==== Démo corrigée ==== | ||
Ligne 136: | Ligne 114: | ||
</code> | </code> | ||
+ | === 2010-11-07 === | ||
+ | Patchs pour la version 2010-11-07. | ||
+ | == Affichage du titre des sections privées == | ||
+ | Même si le contenu d'une page est bloqué, il est malgré tout possible de connaitre son titre si l'option "use_heading" est activée. | ||
+ | |||
+ | Correctif : {{dokuwiki-2010-11-07_secu1.patch|}} | ||
+ | <code> | ||
+ | :/opt/dokuwiki/inc# patch -p 1 < /root/dokuwiki-2010-11-07_secu1.patch | ||
+ | patching file parserutils.php | ||
+ | :/opt/dokuwiki/inc# | ||
+ | </code> | ||
+ | |||
+ | |||
+ | == Le style utilisé dans youarehere indique si la page existe == | ||
+ | Il est possible de distinguer si une page existe ou non en fonction du style utilisé dans "youarehere" (il s'agit du texte en haut à gauche en titre dans la page). | ||
+ | |||
+ | Correctif : {{dokuwiki-2010-11-07_secu2.patch|}} | ||
+ | |||
+ | <code> | ||
+ | :/opt/dokuwiki/inc# patch -p 1 < /root/dokuwiki-2010-11-07_secu2.patch | ||
+ | patching file template.php | ||
+ | :/opt/dokuwiki/inc# | ||
+ | </code> | ||
+ | |||
+ | == Le breadcrumb indique si la page existe == | ||
+ | Le breadcrumb (ou piste en français) indique les pages visitées, permet de connaitre si une page existe (les pages inexistantes ne sont pas ajoutées). | ||
+ | |||
+ | Correctif : {{dokuwiki-2010-11-07_secu3.patch|}} | ||
+ | |||
+ | <code> | ||
+ | :/opt/dokuwiki/inc# patch -p 1 < /root/dokuwiki-2010-11-07_secu3.patch | ||
+ | patching file common.php | ||
+ | :/opt/dokuwiki/inc# | ||
+ | </code> | ||
+ | |||
+ | == Les liens vers les pages indiquent si une page existe et en indique le titre == | ||
+ | Lorsqu'une page contient des liens vers d'autres pages, ceux-ci indiquent si la page existe même lorsque l'accès y est interdit.\\ | ||
+ | De plus si useheading est activé, le titre de la page est également indiqué. | ||
+ | |||
+ | Correctif : {{dokuwiki-2010-11-07_secu4.patch|}} | ||
+ | |||
+ | <code> | ||
+ | :/opt/dokuwiki/inc# patch -p 1 < /root/dokuwiki-2010-11-07_secu4.patch | ||
+ | patching file parser/xhtml.php | ||
+ | :/opt/dokuwiki/inc# | ||
+ | </code> | ||
+ | |||
+ | :!: Attention, les pages générées sont cachées par dokuwiki, un utilisateur peut donc voir les liens si la page cachée a été générée pour utilisateur qui dispose des autorisations pour ces liens.\\ | ||
+ | Il faut donc éviter d'insérer dans des pages "publiques" des liens vers des pages "privées". | ||