MediaWiki pour débutants/Sécuriser son Wiki

Un livre de Wikilivres.
Aller à : navigation, rechercher
Introduction Installer Utiliser Naviguer Configurer Extensions Fonctions Maintenance Sécuriser Ressources Miscellanées


Il est probable que peu de temps après l'installation de votre wiki et sa mise en ligne, il soit l'objet de vandalismes et surtout de spam (introduction de liens vers des sites commerciaux ou au contenu choquant). Il existe plusieurs solutions pour se prémunir de ces activités malveillantes.

Gérer les droits

Interdire l'édition aux utilisateurs non enregistrés

La première solution, très efficace, consiste à interdire l'édition aux utilisateurs non enregistrés. Dans le fichier LocalSettings.php, ajoutez la ligne :

$wgGroupPermissions['*']['edit'] = false;

Cette solution éradique évidemment le problème des IP malveillantes, mais celui des comptes créés pour nuire demeure. Pour un site à faible trafic, qui a peu de chances d'être une cible d'attaques élaborées, cette solution est donc satisfaisante, mais pas à 100 pour cent du fait de l'existence de robots capables d'opérer en tant que compte enregistré. Il est difficile d'évaluer la réalité de ce risque pour un site modeste ; il faut savoir que l'utilisation d'un robot est à la portée de tous. Mais l'auteur de cette page ne peut parler que de son expérience, et après plusieurs années comme administrateur de petits sites, je n'ai jamais subi ce genre d'attaques, seulement les désagréments des IP introduisant des liens.

Exiger une confirmation d'email après la création d'un compte

Pour élever la sécurité de votre wiki par la gestion des droits, vous pouvez fermer encore un peu plus l'accès à l'édition, par exemple en exigeant une confirmation d'email après la création d'un compte. Il faut dans ce cas ajouter dans le fichier LocalSettings.php :

$wgEmailConfirmToEdit = true;

Nommer un "patroller" ou patrouilleur

A venir (Coming soon ...)

Autres aspects

Il est en outre possible de définir des groupes ; un utilisateur qui s'enregistre peut par exemple ne pas encore avoir le droit d'éditer toutes les pages de votre wiki. Ou bien, selon les spécificités de votre Wiki, vous pouvez définir quels contributeurs a le droit d'éditer quelles pages, et ainsi de suite, les possibilités sont infinies. Pour ce type de configurations (qui dépasse le propos de cette page), vous pouvez consulter le site MediaWiki ou laisser un message ici en page de discussion.

Extensions pour prévenir le vandalisme et le spam

Néanmoins, l'idée d'un wiki est de permettre à tous de modifier les pages, aussi pouvez-vous refuser de recourir à ce genre de restrictions. Il existe de nombreuses extensions qui permettent d'éviter d'en arriver à cette dernière extrémité malgré la malveillance des vandales et des spammeurs. Toutes ces extensions s'installent selon la méthode usuelle expliquée précédemment, mais il faut dans certains cas faire un peu de configuration.

ConfirmEdit

Cette extension est très utile, car elle empêche les utilisateurs non-enregistrés de publier directement des liens, ceci par l'utilisation d'un captcha basique. Voir ConfirmEdit. Configurée par défaut pour afficher le captcha quand un utilisateur non-enregistré tente d'introduire un lien.

Force Preview

Cette extension oblige les utilisateurs non-enregistrés à prévisualiser avant de sauvegarder. C'est une sorte de garde-fou qui a un effet dissuasif. Pas de configuration nécessaire. Voir ForcePreview.

SpamBlacklist

Cette extension bloque l'édition d'une page quand un utilisateur tente de publier un lien interdit. Tous les liens interdits sont sur une liste noire. Vous pouvez faire votre propre liste, utiliser celle de wikimedia, ou les deux en même temps. L'extension doit être configurée. Voir SpamBlacklist.

Pour utiliser la liste noire de wikimedia et pouvoir créer votre propre liste, ajoutez dans le fichier LocalSettings.php :

require_once( "$IP/extensions/SpamBlacklist/SpamBlacklist.php" );
$wgSpamBlacklistFiles = array(
   "http://meta.wikimedia.org/w/index.php?title=Spam_blacklist&action=raw&sb_ver=1", // Wikimedia's list
   //  database      title
   "DB: wikidb MediaWiki:Spam-blacklist",    
);

L'intérêt de l'utilisation de la liste noire de wikimedia est qu'elle contient des liens de sites qui ont été reconnus indésirables et qui sont susceptibles de vous spammer.

D'un autre côté, ce sont des sites qui peuvent avoir tenté de spammer un site comme Wikipédia, c'est-à-dire un site à fort trafic, ce qui peut limiter l'intérêt de cette liste pour votre site s'il est de taille modeste. De plus, certains liens interdits ne sont pas forcement des liens de sites commerciaux, mais de sites interdits pour des raisons propres aux différents sites de WikiMedia. Vous pourriez donc avoir besoin d'autoriser ces liens ; pour ce faire, il faut se rendre sur la page MediaWiki:Spam-whitelist et ajouter le lien.

Title Blacklist

Cette extension interdit la création de page avec des titres sans aucun sens (type : ééééé) ou injurieux. Vous pouvez définir votre propre liste noire, ou utiliser celle de Wikimedia, ou les deux. Voir : Title Blacklist.

Autres extensions utilisées sur les sites de la Fondation Wikimedia

  • Abuse Filter : L’extension AbuseFilter (filtre anti-abus) permet aux utilisateurs privilégiés de positionner des contrôles spécifiques sur les actions des utilisateurs, telles que les contributions, et, de créer des réactions automatiques pour certains comportements. (ex : un filtre peut être créé pour empêcher que certains utilisateurs suppriment plus de 2000 caractères)
  • AntiSpoof : empêche la création de noms d'utilisateurs confus. Il bloque la création de comptes avec des noms d'utilisateur déroutants et similaires.
  • CheckUser : permet à un utilisateur (avec l'autorisation checkuser) de vérifier quelles IP sont utilisées par un nom d'utilisateur donné et quels noms d'utilisateur sont utilisés par une IP donnée, sans avoir à exécuter des requêtes directement à la base de données.
  • Flagged Revisions : L'extension des révisions signalées permet aux utilisateurs (éditeur et évaluateur), d'évaluer les révisions d'articles, et de les définir comme révision par défaut à afficher sur la page normale.
  • RenameUser : fournit une page spéciale qui permet aux utilisateurs autorisés de renommer des comptes d'utilisateurs. Cela entraînera la mise à jour des historiques de page, etc.
  • SimpleAntiSpam : Cette extension a été archivée. Elle est intégrée au logiciel MediaWiki depuis la version 1.22.0.
  • TorBlock : bloque les internautes qui tentent de se connecter de manière anonyme à votre site, par l'utilisation d'un réseau Tor.

Autres (efficacité pas vérifiée)

Bloquer les robots spammeurs

Le site http://www.stopforumspam.com propose une liste de plusieurs dizaines de milliers d'adresses de robots spammeurs que vous pouvez télécharger et utiliser pour leur bloquer l'accès à votre site.

Sous Linux, vous pouvez créer automatiquement un fichier bannedips.php, fichier que vous pourrez mettre à jour régulièrement, grâce à ce script :

#!/bin/bash
# This script is using data from http://www.stopforumspam.com/downloads/
# Updated once per day, limited to 3 downloads per IP per day$
# Usage:
# 1# run this script
# 2# Copy bannedips.php in your /extensions directory
# 3# Be sure to have the line:
#      require_once("$IP/extensions/bannedips.php");
#    in your LocalSettings.php
# Infos: http://fr.wikibooks.org/wiki/MediaWiki_pour_d%C3%A9butants/S%C3%A9curiser_son_Wiki#Bloquer_les_robots_spammeurs

wget "http://www.stopforumspam.com/downloads/bannedips.zip" -O bannedips.zip
unzip bannedips.zip
echo "<?php" > bannedips.php;
echo \$"wgProxyList = array(" >> bannedips.php; echo -n "'" >> bannedips.php;
cat bannedips.csv | awk 'gsub (",","\x27,\n\x27")' >> bannedips.php;
echo "');" >> bannedips.php;
rm bannedips.csv;
rm bannedips.zip;

Copiez ce script dans un traitement de texte et sauvegardez-le sous le nom updateBannedIPs.sh. Il doit être ensuite rendu exécutable (clic droit > propriétés > permissions > exécution). Dans un terminal, placez-vous dans le dossier où se trouve le script, et tapez :

sh updateBannedIPs.sh

Le résultat apparaît dans le même dossier, sous la forme d'un fichier nommé bannedips.php. Copiez bannedips.php dans le dossier /extensions de votre wiki, puis ajoutez dans le fichier LocalSettings.php, la ligne :

require_once("$IP/extensions/bannedips.php");

Fonction $wgSpamRegex

Cette fonction utilise des expressions régulières et se configure dans le fichier LocalSettings.php. Les expressions régulières sont des suites de caractères qui permettent de définir de manière économique un ensemble d'expressions. Ainsi, au lieu de faire la liste de toutes les pages d'un domaine à bannir, une expression régulière permet de résumer toutes ces pages.

Le site MediaWiki fournit l'exemple suivant qui interdit l'ajout de liens contenant des mots très fréquents dans les spams et qui empêche aussi l'ajout de contenu caché :

$wgSpamRegex = "/".                        # The "/" is the opening wrapper
               "s-e-x|zoofilia|sexyongpin|grusskarte|geburtstagskarten|animalsex|".
               "sex-with|dogsex|adultchat|adultlive|camsex|sexcam|livesex|sexchat|".
               "chatsex|onlinesex|adultporn|adultvideo|adultweb.|hardcoresex|hardcoreporn|".
               "teenporn|xxxporn|lesbiansex|livegirl|livenude|livesex|livevideo|camgirl|".
               "spycam|voyeursex|casino-online|online-casino|kontaktlinsen|cheapest-phone|".
               "laser-eye|eye-laser|fuelcellmarket|lasikclinic|cragrats|parishilton|".
               "paris-hilton|paris-tape|2large|fuel-dispenser|fueling-dispenser|huojia|".
               "jinxinghj|telematicsone|telematiksone|a-mortgage|diamondabrasives|".
               "reuterbrook|sex-plugin|sex-zone|lazy-stars|eblja|liuhecai|".
               "buy-viagra|-cialis|-levitra|boy-and-girl-kissing|". # These match spammy words
               "dirare\.com|".           # This matches dirare.com a spammer's domain name
               "overflow\s*:\s*auto|".   # This matches against overflow:auto (regardless of whitespace on either side of the colon)
               "height\s*:\s*[0-4]px|".  # This matches against height:0px (most CSS hidden spam) (regardless of whitespace on either side of the colon)
               "\<\s*a\s*href|".         # This blocks all href links entirely, forcing wiki syntax
               "display\s*:\s*none".     # This matches against display:none (regardless of whitespace on either side of the colon)
               "/i";                     # The "/" ends the regular expression and the "i" switch which follows makes the test case-insensitive
                                         # The "\s" matches whitespace
                                         # The "*" is a repeater (zero or more times)
                                         # The "\s*" means to look for 0 or more amount of whitespace

Ressources