1. Home
  2. Fichiers
  3. Utiliser .htaccess pour filtrer les robots et requêtes malveillants

Utiliser .htaccess pour filtrer les robots et requêtes malveillants

Dans cet article, nous verrons comment bloquer des robots et requêtes malveillants avec le fichier .htaccess.

Note : Le glossaire contient  des explications sur de multiples sujets et peut être consulté pour clarifier certains termes.

Introduction

Sur un site Web, le trafic ne provient pas uniquement de visiteurs humains. Une grande partie des requêtes sont générées par des robots : certains sont légitimes (comme les moteurs de recherche), mais d’autres sont malveillants. Ces derniers peuvent :

  • consommer inutilement les ressources du serveur;
  • tenter d’exploiter des failles de sécurité; ou même
  • participer à des attaques par déni de service (DDoS).

Il arrive aussi que certaines requêtes proviennent d’adresses IP suspectes ou d’agents utilisateurs (User-Agent) connus pour scanner, pirater ou perturber les services Web. Il est donc utile, dans certains cas, de mettre en place des règles simples pour bloquer ces accès indésirables avant même qu’ils n’atteignent vos scripts ou votre application.

Le fichier .htaccess, utilisé avec un serveur comme Apache, permet justement de filtrer ce type de trafic en amont, avec des règles faciles à adapter à vos besoins. Ce guide vous montrera comment mettre en place ces règles de manière sécuritaire et efficace.

Prérequis

Saisissez dans votre navigateur web l’adresse suivante : https://mg.n0c.com.

Marche à suivre pour filtrer le trafic en amont

Étape 1 — Repérez les requêtes malveillantes

Repérez les requêtes malveillantes dans le journal d’accès (veuillez vous référer à l’article Comment utiliser le journal d’accès).

  1. Commencez par analyser le journal d’accès (access log) du site.
  2. Dans l’exemple ci-dessous, on observe une adresse IP située en France qui envoie des requêtes vers wp-cron.php, avec un code de réponse HTTP 200 (succès).
    • Le pare-feu applicatif n’ayant pas bloqué cette requête, il peut être pertinent de l’intercepter directement via .htaccess, car elle n’est pas légitime dans le contexte de ce site web.
Journal d'accès requête malicieuse
  1. Dans l’exemple ci-dessous, on observe une requête provenant d’un agent utilisateur identifié comme GrandMechantRobot, accédant au fichier wp-cron.php avec un code de réponse HTTP 200 (succès).
    • Comme cette requête n’a pas été bloquée par le pare-feu applicatif et que cet agent est connu pour un comportement abusif ou non légitime, il peut être pertinent de le bloquer directement via .htaccess.
Blocage d'un robot avec .htacces

Étape 2 — Repérez le fichier .htaccess

Identifiez la racine du document pour le domaine ou sous-domaine sur lequel vous souhaitez bloquer des requêtes dans le gestionnaire de domaine (veuillez vous référer à l’article Comment gérer les domaines).

  1. Dans le gestionnaire de domaine, repérez la racine du document correspondant au domaine (ou sous-domaine) sur lequel vous souhaitez appliquer les blocages.
  1. Ouvrez le gestionnaire de fichier et localisez le fichier .htaccess (veuillez vous référer à l’article Comment utiliser le gestionnaire de fichiers).
  2. Accédez au gestionnaire de fichiers, puis naviguez jusqu’à la racine du document identifiée à l’étape précédente. Repérez le fichier .htaccess.
ht.access dans le gestionnaire de fichiers
  1. Comme .htaccess est un fichier caché, il peut être nécessaire d’activer l’affichage des fichiers cachés dans les paramètres du gestionnaire de fichiers.
Affichage des fichiers cachés

Étape 3 — Modifiez le fichier .htaccess

  1. Ouvrez le fichier .htaccess en mode édition. Voici, à titre d’exemple, le contenu d’un fichier .htaccess par défaut pour un site WordPress :
Modifiez le fichier .htaccess
  1. Ajoutez les règles de blocage nécessaires.
  2. Ajoutez ensuite les directives de blocage adaptées à votre cas, comme nous le verrons dans les exemples plus loin.

Étape 4 — Videz la cache LSCache

Pour que les règles prennent effet, il peut être nécessaire dans N0C de vider la cache pour le domaine en question (voir l’article Comment utiliser LSCache).

Important : évitez les conflits entre méthodes de blocage

Lorsque vous mettez en place des règles de blocage dans le fichier .htaccess, il est important de ne pas combiner plusieurs méthodes différentes pour bloquer une même cible (IP, User-Agent, etc.) dans un même contexte. Par exemple, mélanger des directives <Limit>, des règles mod_rewrite et SetEnvIfNoCase pour bloquer les mêmes adresses IP ou agents peut entraîner :

  • des conflits de priorité entre règles;
  • des comportements inattendus; ou voire
  • un blocage incomplet ou, à l’inverse, un blocage trop large.

Conseils pour éviter ces problèmes :

  • Choisissez une méthode de blocage adaptée à votre environnement et à vos besoins (souvent mod_rewrite ou SetEnvIfNoCase suffisent).
  • Regroupez vos règles dans la même logique, plutôt que de dupliquer les blocages.
  • Testez systématiquement après chaque modification.
  • Documentez clairement vos règles pour faciliter la maintenance.

En résumé, privilégiez la simplicité et la cohérence pour garantir un filtrage efficace et sans surprise.

Comment bloquer des adresses IP

Il existe plusieurs façons de bloquer des adresses IP dans un fichier .htaccess. Voici quelques approches courantes selon le type de blocage souhaité.

Blocage d’adresses IP individuelles

Méthode 1 : via mod_rewrite (recommandé)

RewriteEngine On
RewriteCond %{REMOTE_ADDR} ^47\.79\.1\.100$
RewriteRule ^.* - [F,L]

Cette méthode fonctionne à tous les niveaux du traitement des requêtes, y compris sur des méthodes HTTP moins communes. Elle est plus fiable pour les blocages fermes.

Méthode 2 : via les directives <Limit>

<Limit GET POST>
order allow,deny
allow from all
deny from 47.79.1.100
</Limit>

Cette méthode est simple, mais elle ne s’applique qu’aux requêtes GET et POST, et peut être ignorée par certains clients. Elle est aussi moins flexible que mod_rewrite.

Blocage de plusieurs adresses IP

RewriteCond %{REMOTE_ADDR} ^(47\.79\.1\.100|47\.82\.1\.100)$
RewriteRule ^.* - [F,L]

Vous pouvez combiner plusieurs IP dans une même expression régulière, séparées par | (OU logique).

Blocage de plages d’IP (CIDR ou sous-réseaux)

Le blocage de plages entières nécessite de s’adapter selon la méthode.

Méthode 1 : avec mod_rewrite (précis et flexible)

Vous pouvez étendre le motif pour couvrir toute une plage IP en vous basant sur les octets de début (par exemple : ^47\.79\. pour un bloc plus large).

RewriteEngine On
# Bloque toute IP commençant par 47.79.1.
RewriteCond %{REMOTE_ADDR} ^47\.79\.1\.
RewriteRule ^.* - [F,L]

Méthode 2 : avec <Limit> (simple, mais moins précis)

<Limit GET POST>
order allow,deny
allow from all
deny from 47.79.0.0/16
</Limit>

La notation CIDR (/16) n’est pas toujours supportée dans .htaccess. Préférez alors le blocage basé sur des préfixes.

<Limit GET POST>
order allow,deny
allow from all
deny from 47.82.0.
</Limit>

Blocage par User-Agent (robots indésirables)

Certains robots (ou crawlers) abusifs s’identifient via leur User-Agent HTTP. Il est possible de bloquer ces agents en utilisant .htaccess. Voici deux méthodes courantes.

Méthode 1 (méthode recommandée) : SetEnvIfNoCase (simple et efficace)

SetEnvIfNoCase User-Agent "GrandMechantRobot|BigBadRobot" bad_bot

Order Allow,Deny
Allow from all
Deny from env=bad_bot

Cette méthode est simple, lisible et en général compatible avec des serveurs modernes. Elle permet de bloquer facilement un ou plusieurs User-Agent indésirables en utilisant une variable d’environnement (bad_bot).

  • SetEnvIfNoCase : permet d’ignorer la casse dans les noms d’agents.
  • Le champ "GrandMechantRobot|BigBadRobot" contient les noms d’agents à bloquer, séparés par | (OU logique).
  • Deny from env=bad_bot : bloque les requêtes marquées avec cette variable.

Méthode 2 (méthode alternative) : mod_rewrite (plus flexible)

RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} GrandMechantRobot|BigBadRobot [NC]
RewriteRule ^.* - [F,L]

Cette méthode fonctionne également très bien et offre un contrôle plus fin dans des contextes complexes, ou lorsqu’on combine plusieurs règles dans le fichier .htaccess.

Blocage par IP et User-Agent (robots indésirables)

Dans certains cas, vous pouvez vouloir bloquer une requête uniquement si elle provient à la fois d’une adresse IP spécifique et d’un User-Agent malveillant.

Voici comment le faire avec mod_rewrite :

RewriteEngine On

# Si l’adresse IP correspond...
RewriteCond %{REMOTE_ADDR} ^47\.79\.1\.100$

# ...et que le User-Agent est l’un des suivants...
RewriteCond %{HTTP_USER_AGENT} (GrandMechantRobot|BigBadRobot) [NC]

# ...alors on bloque la requête (403 Forbidden)
RewriteRule ^.* - [F,L]

Comment ça fonctionne

  • Les conditions sont combinées logiquement (ET) : toutes les RewriteCond doivent être vraies pour que la règle s’applique.
  • [NC] permet d’ignorer la casse dans les noms d’agents (par exemple grandmechantrobot sera aussi bloqué).
  • [F,L] signifie : retourner un code 403 Forbidden (F) et ne pas continuer à traiter d’autres règles (L = Last).

Astuces et recommandations

  • Cette méthode est idéale pour bloquer un bot ciblé qui tente d’éviter des protections générales.
  • Si vous voulez bloquer l’IP ou le User-Agent (au lieu de « et »), il faut utiliser deux règles séparées.

Conseils supplémentaires

  • Redirigez certaines IP vers une page statique. Certains administrateurs préfèrent rediriger certains robots ou IP indésirables vers une page statique personnalisée (par exemple une page 403 humoristique) au lieu de renvoyer un simple code d’erreur.
  • Utilisez un CDN. (Content Delivery Network) pour filtrer et atténuer automatiquement une partie du trafic malveillant avant qu’il n’atteigne votre serveur.
  • Affinez votre fichierrobots.txt pour guider les robots légitimes et limiter l’accès aux parties sensibles du site.
  • Privilégiez mod_rewrite si vous avez besoin de règles flexibles et de blocages efficaces.
  • Testez toujours vos règles après modification afin d’éviter de vous bloquer accidentellement ou d’empêcher l’accès aux visiteurs légitimes.
  • N’abusez pas du blocage par IP. Ce type de filtrage doit être utilisé en complément d’un pare-feu applicatif ou d’autres systèmes de sécurité en amont.
  • Bloquez uniquement les User-Agent identifiés comme nuisibles, afin de ne pas pénaliser le trafic légitime ou bloquer des robots important pour votre visibilité web.
  • Évitez les motifs trop génériques qui pourraient bloquer des visiteurs ou robots bénéfiques.

Testez vos règles via un terminal

Veuillez vous référer à l’article Comment utiliser le terminal du Panneau MG pour la suite.

Pour valider vos blocages User-Agent, utilisez un outil comme curl sur un terminal avec un agent personnalisé, par exemple :

curl -A "GrandMechantRobot" https://votre-site.com

Cela vous permet de vérifier que vos règles .htaccess fonctionnent comme prévu.

Conclusion

Protéger son site web contre les robots malveillants, les attaques DDoS et les requêtes suspectes est indispensable pour préserver les ressources serveur et garantir la sécurité.

Le fichier .htaccess offre une solution simple et efficace pour filtrer les adresses IP et User-Agent indésirables en amont, avant qu’ils n’atteignent vos applications.

En mettant en place ces règles, vous améliorez la fiabilité et la sécurité de votre site Apache contre le trafic malveillant.

Updated on juillet 10, 2025

Related Articles