Ne gaspillez pas les ressources de votre serveur : bloquez les bots indésirables avec Nginx

Les robots de moteurs de recherche (bottes) sont des programmes spéciaux qui analysent les sites web sur Internet. Les moteurs de recherche en ont besoin pour trouver, indexer et afficher les pages dans les résultats de recherche. Mais tous les bots ne sont pas utiles !
Il arrive que votre site soit visité par des bots indésirables qui :
- Collectent des données sans votre permission.
- Consomment des ressources serveur, ce qui le ralentit.
- Sont utilisés pour rechercher des vulnérabilités.
Si vous souhaitez protéger votre site contre de tels bots, il est temps de configurer Nginx ! Dans cet article, nous vous montrerons comment les bloquer facilement et rapidement à l'aide d'un fichier de configuration spécial.
Pourquoi une configuration Nginx au lieu de robots.txt ?
Le fichier robots.txt est un outil de gestion du comportement des robots des moteurs de recherche. Il leur indique quelles parties du site ne doivent pas être explorées. Il est très facile d'utiliser ce fichier : créez-en simplement un dans le répertoire racine du site, par exemple :
User-agent: BadBot
Disallow: /
Cependant, il y a un problème : les instructions de robots.txt sont une recommandation plutôt qu'une règle appliquée. Les bots consciencieux suivent les instructions de ce fichier, mais la plupart des bots l'ignorent simplement.
En revanche, la configuration de Nginx vous permet de bloquer physiquement l'accès aux robots indésirables, garantissant un résultat efficace à 100 %.
Comment Nginx bloque les bots indésirables : utiliser la réponse 444
Contrairement à robots.txt, qui ne fait que fournir des recommandations aux bots, Nginx bloque physiquement leur accès. Une façon d'y parvenir est d'utiliser une réponse serveur spéciale avec le code 444.
Dans Nginx, le code de réponse 444 est une méthode interne pour terminer la connexion avec le client sans envoyer de réponse. C'est une approche efficace pour ignorer les requêtes indésirables et minimiser la charge du serveur.
Mise en place du blocage
Étape 1 : Comment identifier les bots indésirables ?
Les bots indésirables peuvent être identifiés par leur User-Agent, qui est un paramètre envoyé par tous les clients lors de la visite de votre site. Par exemple, certains User-Agents pourraient ressembler à ceci :
`AhrefsBot`
`SemrushBot`
`MJ12bot`
Vous pouvez trouver des valeurs User-Agent suspectes dans le journal d'accès Nginx (si votre site utilise PHP-FPM) :
sudo grep -i bot /var/log/nginx/access.log
Ou dans le journal d'accès Apache (si votre site utilise le module Apache ou FastCGI comme gestionnaire PHP) :
- Pour Ubuntu/Debian :
sudo grep -i bot /var/log/apache2/access.log
- Pour CentOS/AlmaLinux/RockyLinux :
sudo grep -i bot /var/log/httpd/access.log
Si vous utilisez un panneau de contrôle tel que FASTPANEL, chaque site aura son propre fichier journal séparé. Vous pouvez les analyser individuellement ou tous en même temps à l'aide d'une commande telle que :
- Si votre site utilise le module Apache ou FastCGI comme gestionnaire PHP :
sudo cat /var/www/*/data/logs/*-backend.access.log | grep -i bot | tail -500
- Si votre site utilise PHP-FPM :
sudo cat /var/www/*/data/logs/*-frontend.access.log | grep -i bot | tail -500
Cette commande affichera les 500 dernières requêtes effectuées vers tous vos sites où le paramètre User-Agent contient le mot « bot ». Un exemple d'une ligne (une requête vers votre site) pourrait ressembler à ceci :
IP - [03/Nov/2022:10:25:52 +0300] "GET link HTTP/1.0" 301 811 "-" "Mozilla/5.0 (compatible; DotBot/1.2; +https://opensiteexplorer.org/dotbot; [email protected])"
ou
IP - [24/Oct/2022:17:32:37 +0300] "GET link HTTP/1.0" 404 469 "-" "Mozilla/5.0 (compatible; BLEXBot/1.0; +http://webmeup-crawler.com/)"
Le User-Agent du bot se trouve entre les segments "compatible;" et "/version.number" à la fin de la ligne de requête entre parenthèses. Donc, dans les exemples ci-dessus, les User-agents sont : BLEXBot et DotBot.
Analysez les informations que vous recueillez et notez les chaînes User-Agent des bots les plus actifs pour la prochaine étape de configuration du blocage.