The Joomla! Community Magazine™

Bloquer les robots; diminuer le nombre d'utilisateurs fantômes

Written by | Sunday, 01 September 2013 10:00 | Published in 2013 September
Trop souvent, nous sommes attaqués par des scripts malveillants qui tentent de pénétrer notre site Joomla! afin d'injecter du spam dans les commentaires du site, les forums, pages d'or, ... et, bien sûr, pour générer des utilisateurs fantômes qui, s'ils sont automatiquement approuvés, disposeront alors d'un niveau "utilisateur enregistré" qui leur permettra probablement de poster des données et donc, du spam. Il y a quelques techniques efficaces à mettre en place sur son site Joomla! afin de diminuer cette menace. Deux techniques concernent le fichier .htaccess et l'autre, la gestion des utilisateurs.    

1. Protection par .htaccess

Le fichier .htaccess est probablement méconnu de la plupart des webmasters.  Ce fichier ne permet pas seulement d'activer la réécriture des urls sous Joomla (après avoir renommé le fichier préexistant htaccess.txt en .htaccess) mais peut, aussi, servir de premier élément de protection de l'accès à votre site.

Dans tous les cas de figures, ce fichier est lu par le serveur web avant d'accéder à la page ciblée de votre site.

Il s'agit donc, ici, de simplement refuser l'accès à l'url dès lors qu'il s'agit d'un robot ou si l'on détecte qu'il s'agit d'une url type "spam" càd celles qui contiendraient certains mots que vous considérez comme étant sur une "liste noire".

A. Bloquer les robots

Chaque requête effectuée vers votre site l'est depuis un programme; généralement un navigateur web mais pas seulement : vous pouvez accéder à une url depuis p.ex. un éditeur web, un logiciel de traitement de textes, etc. mais aussi depuis des logiciels malveillants qui ont été programmés pour p.ex. spammer votre site, mettre sa sécurité à mal, ...   Il y a quelques années, il y avait aussi les aspirateurs de sites web qui permettaient de les télécharger pour les avoir "hors-ligne". 

Ces programmes ont généralement une signature : le code mentionné dans la variable "HTTP_USER_AGENT"; variable qui est transmise par le programme qui initie la connexion vers votre site.  L'un des plus connus (et haïs) est l'agent "MSIE" qui permet de savoir que votre visiteur n'est pas très, euh?, comment le dire gentiment, exigeant quant à la qualité du navigateur.

Cette variable peut être changée par le programme (un script quelconque peut se faire passer pour Firefox) aussi elle n'est pas une garantie quant à savoir qui accède à votre site.

Bloquer les robots signifie donc d'identifier les user_agent qui sont connus comme étant des scripts malveillants et de les bloquer.   Une liste (non exhaustive) est proposée sur le site docs.joomla.org : Block bad user agents.

RewriteCond %{HTTP_USER_AGENT} ^BlackWidow [OR] 
RewriteCond %{HTTP_USER_AGENT} ^Bot\ mailto:This email address is being protected from spambots. You need JavaScript enabled to view it. [OR] 
RewriteCond %{HTTP_USER_AGENT} ^ChinaClaw [OR] 
RewriteCond %{HTTP_USER_AGENT} ^Custo [OR] 
RewriteCond %{HTTP_USER_AGENT} ^DISCo [OR] 
## Liste simplifiée ... 
RewriteCond %{HTTP_USER_AGENT} ^Zeus 
## Note: The final RewriteCond must NOT use the [OR] flag.   ## Return 403 Forbidden error. 
RewriteRule .* - [F]

Il vous faut éditer votre fichier .htaccess se trouvant à la racine de votre site web et ajouter toutes lignes RewriteCond jusqu'à la dernière "RewriteRule .* - [F]" permettant de rediriger les malveillants vers une page 403.

Ou, pour le fun, remplacer cette dernière ligne par celle ci-dessous qui fait une redirection vers une image (ne redirigez pas sur une image de votre site puisque le robot n'y aura pas accès).

RewriteRule (.*) http://www.distilnetworks.com/wp-content/themes/distil/images/theft-bot-home.png [L,QSA]

Lorsque vous aurez mis en place votre .htaccess bloquant les robots, vous pouvez le tester sur wannaBrowser : http://www.wannabrowser.com/index.php.  Il s'agit d'un de ces scripts qui permettent d'initier une connexion vers un site mais ici, l'idée est de vous proposer d'introduire une url et de choisir un User_Agent de votre choix : si vous choisissez l'un de ces que vous avez bloqué, vous pourrez voir que l'accès à votre page sera refusée.

B. Identifier les urls suspectes

Une URL suspecte est celle qui contient des mots "dangereux" (comme "DROP" qui pourrait signifier une tentative de suppression d'une table de votre base de données (il s'agirait ici d'une attaque dite "SQL injection")) ou des mots qui se retrouvent tant et tant dans les spams que vous voyez fleurir sur votre site.

Il faut donc compléter cette liste et l'alimenter.   Certains sites vous en proposer plusieurs listes.  Si vous installez CrawlProtect, vous constaterez que le fichier .htaccess qu'il génère contient une liste impressionnante de mots-clefs.

RewriteCond %{QUERY_STRING} ^.*(curl|wget|drop|truncate).* [NC]
RewriteRule ^(.*)$ index.php [F,L]

2. Gestion des utilisateurs

Après avoir bloqué les robots et certains mots clefs se trouvant dans les urls, il convient d'interdire la création des utilisateurs depuis une url type de Joomla.  En effet, lorsque vous avez autorisé la création de comptes utilisateurs sur votre site, il est possible d'accéder à l'url http://votre_site/index.php?option=com_users&view=registration.   Cette url est celle qui permet d'afficher le formulaire de création d'un compte et donc, si un script malveillant accède à l'url, ce script peut compléter les différents champs et soumettre le formulaire.  

Dans le cas où vous avez activé l'approbation automatique des comptes, vous voilà avec un nouvel utilisateur, et un second, et un troisième, ... autant que le script souhaitera en créer.

Une fois approuvé, ce script dispose donc d'un accès utilisateur à votre site; un accès type enregistré qui, fort probablement, disposera de certains droits supplémentaires comme la possibilité de poster un commentaire, d'écrire un nouveau sujet dans votre forum, ....  Et vous voilà avec du spam à n'en plus finir.

Pour limiter fortement cela, rien de plus simple : désactivez la création des comptes utilisateurs sur votre site Joomla.

Ensuite, si vous désirez quand même proposer à vos visiteurs de s'inscrire, optez pour p.ex. Community Builder.   C'est ce que j'ai fait sur mon blog (http://allevents.avonture.be) : Community Builder est paramétré pour autoriser les inscriptions et ce, indépendamment du paramètre global du site.   J'autorise donc les inscriptions au travers de CB mais je les interdits depuis com_users.   Pour l'utilisateur final, cela ne change rien du tout : il accède à la page de création d'un compte qu'il complète et soumet et son compte est créé.   Pour le script malveillant, cela change tout puisque la page qu'il tente d'accéder (com_users) lui interdit la création de comptes.

Et, pour encore accroître cette protection, sachez qu'il existe un plugin captcha pour CB.  Ce captcha s'affiche dans la page d'inscription CB et semble être très efficace.

Si vous désirez accroître la sécurité de votre site Joomla!, je vous recommande également de prendre connaissance de la présentation "La sécurité et Joomla!®"

 

Read 24024 times
Tagged under French
Christophe Avonture

Christophe Avonture

Christophe Avonture

Développeur d'aeSecure, logiciel de protection, d'optimisation et de nettoyage (après hack) de sites web Apache.

Modérateur pour l'Association Francophone des Utilisateurs de Joomla (AFUJ), pseudo cavo789.

Membre fondateur de la JUG Wallonie.

Language Switcher

Current Articles