
Nginx bloque les mauvais bots, bloqueur de référents de spam, scanners de vulnérabilités, User-Agents, logiciels malveillants, adwares, rançongiciels, sites malveillants, avec anti-DDOS, blocage du détecteur de thème WordPress et geôle Fail2Ban pour les récidivistes
| REPO | DEVENEZ UN SPONSOR |
|---|
| Votre logo et un lien vers votre domaine apparaîtront ici si vous devenez sponsor. Envoyez-moi simplement un e-mail à [email protected] si vous souhaitez sponsoriser ce projet, car l'Afrique du Sud n'est pas encore prise en charge par le programme de sponsors de Github. | |
| Aidez-moi à me soutenir sur https://ko-fi.com/mitchellkrog |
Assurez-vous d'être abonné aux notifications Github pour être informé lorsque le bloqueur est mis à jour ou lorsque des changements importants ou critiques (potentiellement cassants) peuvent survenir.
Il s'agit de notre nouvelle méthode d'installation préférée, désormais réalisée via un ensemble de scripts shell contribués à ce dépôt et maintenus par Stuart Cardall @itoffshore, l'un des mainteneurs de paquets Alpine Linux.
Les instructions ci-dessous concernent un processus d'installation rapide et sans douleur qui télécharge tous les fichiers requis pour le bloqueur, et les scripts incluent l'ajout des includes nécessaires à votre nginx.conf et à vos fichiers .vhost nginx. Le script d'installation suppose que vos fichiers de configuration vhost se trouvent dans /etc/nginx/sites-available/ et que chaque fichier de configuration vhost se termine par une extension de fichier .vhost
Pour les instructions d'installation manuelle, veuillez consulter - Veuillez consulter : https://github.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/blob/master/MANUAL-CONFIGURATION.md
setup-ngxblocker, install-ngxblocker et update-ngxblocker peuvent tous être configurés avec des emplacements d'installation / de mise à jour personnalisés depuis la ligne de commande. (Voir l'étape 11 des instructions pour savoir comment utiliser ces scripts avec des emplacements Nginx non standard)
Exécutez l'un des scripts setup, install ou update avec --help ou -h pour afficher les options.
VEUILLEZ NOTER : Pour ceux qui utilisent des certificats SSL Let's Encrypt, la méthode préférée et fonctionnant à 100 % consiste à utiliser la Méthode d'Authentification Webroot. Il semble y avoir certains problèmes avec les personnes utilisant la méthode de défi http, mais je peux confirmer que webroot fonctionne parfaitement. Nous ne savons pas avec certitude à ce stade si la méthode de défi http-01 est un bug de certbot ou de nginx.
Les rapports de réseaux doublons de Nginx ne sont PAS un bug et ne peuvent pas être corrigés ; il s'agit du comportement souhaité du bloqueur. Les mises à jour quotidiennes des listes noires d'IP entraînent la mise sur liste noire de certaines IP et plages bien connues old value "1" ; celles-ci sont ensuite mises sur liste blanche à la toute fin de globalblocklist, ce qui est l'ordre de chargement, définissant ainsi les IP que nous savons être bonnes à leur nouvelle value "0", les mettant ainsi sur liste blanche. Il en est ainsi depuis le premier jour du bloqueur et cela restera ainsi. Ce sont de simples messages [WARN] et non des messages [EMERG], et ils n'affectent en aucune manière le fonctionnement de Nginx.

Téléchargez install-ngxblocker dans votre répertoire /usr/local/sbin/ et rendez le script exécutable.```sh sudo wget https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/install-ngxblocker -O /usr/local/sbin/install-ngxblocker sudo chmod +x /usr/local/sbin/install-ngxblocker
Si votre distribution Linux ne dispose pas de wget, vous pouvez remplacer la commande wget ci-dessus en utilisant curl comme suit :```sh
curl -sL https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/install-ngxblocker -o /usr/local/sbin/install-ngxblocker
Installez le paquet.```sh pkg install www/nginx-ultimate-bad-bot-blocker
Alternativement, installez via portmaster :```sh
portmaster www/nginx-ultimate-bad-bot-blocker

Exécutez maintenant le script install-ngxblocker en MODE SIMULÉ (DRY-MODE), qui vous montrera les modifications qu'il va apporter et les fichiers qu'il va télécharger pour vous. Il s'agit uniquement d'un ESSAI À BLANC (DRY-RUN), aucune modification n'est donc encore effectuée.
Le script install-ngxblocker télécharge tous les fichiers requis, y compris les scripts de configuration et de mise à jour.```sh cd /usr/local/sbin sudo ./install-ngxblocker
Cela vous montrera la sortie suivante des modifications qui seront apportées
**(REMARQUE : il s'agit uniquement d'un ESSAI À BLANC, aucune modification n'a été effectuée)**```text
Checking url: https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/include_filelist.txt
** Dry Run ** | not updating files | run as 'install-ngxblocker -x' to install files.
Creating directory: /etc/nginx/bots.d
REPO = https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master
Downloading [FROM]=> [REPO]/conf.d/globalblacklist.conf [TO]=> /etc/nginx/conf.d/globalblacklist.conf
Downloading [FROM]=> [REPO]/conf.d/botblocker-nginx-settings.conf [TO]=> /etc/nginx/conf.d/botblocker-nginx-settings.conf
REPO = https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master
Downloading [FROM]=> [REPO]/bots.d/blockbots.conf [TO]=> /etc/nginx/bots.d/blockbots.conf
Downloading [FROM]=> [REPO]/bots.d/ddos.conf [TO]=> /etc/nginx/bots.d/ddos.conf
Downloading [FROM]=> [REPO]/bots.d/whitelist-ips.conf [TO]=> /etc/nginx/bots.d/whitelist-ips.conf
Downloading [FROM]=> [REPO]/bots.d/whitelist-domains.conf [TO]=> /etc/nginx/bots.d/whitelist-domains.conf
Downloading [FROM]=> [REPO]/bots.d/blacklist-user-agents.conf [TO]=> /etc/nginx/bots.d/blacklist-user-agents.conf
Downloading [FROM]=> [REPO]/bots.d/blacklist-ips.conf [TO]=> /etc/nginx/bots.d/blacklist-ips.conf
Downloading [FROM]=> [REPO]/bots.d/bad-referrer-words.conf [TO]=> /etc/nginx/bots.d/bad-referrer-words.conf
Downloading [FROM]=> [REPO]/bots.d/custom-bad-referrers.conf [TO]=> /etc/nginx/bots.d/custom-bad-referrers.conf
REPO = https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master
Downloading [FROM]=> [REPO]/setup-ngxblocker [TO]=> /usr/local/sbin/setup-ngxblocker
Downloading [FROM]=> [REPO]/update-ngxblocker [TO]=> /usr/local/sbin/update-ngxblocker
setup-ngxblocker, install-ngxblocker et update-ngxblocker peuvent tous être configurés avec des emplacements d'installation / de mise à jour personnalisés depuis la ligne de commande.
Exécutez l'un des scripts de configuration, d'installation ou de mise à jour avec --help ou -h pour afficher les options.

Exécutez maintenant le script d'installation avec le paramètre -x pour télécharger tous les fichiers nécessaires depuis le dépôt :```sh cd /usr/local/sbin/ sudo ./install-ngxblocker -x
Cela vous donnera la sortie suivante :```text
Checking url: https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/include_filelist.txt
Creating directory: /etc/nginx/bots.d
REPO = https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master
Downloading [FROM]=> [REPO]/conf.d/globalblacklist.conf [TO]=> /etc/nginx/conf.d/globalblacklist.conf...OK
Downloading [FROM]=> [REPO]/conf.d/botblocker-nginx-settings.conf [TO]=> /etc/nginx/conf.d/botblocker-nginx-settings.conf...OK
REPO = https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master
Downloading [FROM]=> [REPO]/bots.d/blockbots.conf [TO]=> /etc/nginx/bots.d/blockbots.conf...OK
Downloading [FROM]=> [REPO]/bots.d/ddos.conf [TO]=> /etc/nginx/bots.d/ddos.conf...OK
Downloading [FROM]=> [REPO]/bots.d/whitelist-ips.conf [TO]=> /etc/nginx/bots.d/whitelist-ips.conf...OK
Downloading [FROM]=> [REPO]/bots.d/whitelist-domains.conf [TO]=> /etc/nginx/bots.d/whitelist-domains.conf...OK
Downloading [FROM]=> [REPO]/bots.d/blacklist-user-agents.conf [TO]=> /etc/nginx/bots.d/blacklist-user-agents.conf...OK
Downloading [FROM]=> [REPO]/bots.d/blacklist-ips.conf [TO]=> /etc/nginx/bots.d/blacklist-ips.conf...OK
Downloading [FROM]=> [REPO]/bots.d/bad-referrer-words.conf [TO]=> /etc/nginx/bots.d/bad-referrer-words.conf...OK
Downloading [FROM]=> [REPO]/bots.d/custom-bad-referrers.conf [TO]=> /etc/nginx/bots.d/custom-bad-referrers.conf...OK
REPO = https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master
Downloading [FROM]=> [REPO]/setup-ngxblocker [TO]=> /usr/local/sbin/setup-ngxblocker...OK
Downloading [FROM]=> [REPO]/update-ngxblocker [TO]=> /usr/local/sbin/update-ngxblocker...OK
Tous les fichiers requis ont maintenant été téléchargés dans les bons dossiers sur Nginx directement depuis le dépôt.
ASSUREZ-VOUS de rendre vos scripts de configuration et de mise à jour exécutables en exécutant les deux commandes suivantes. C'est important avant de continuer avec l'Étape 4 et les suivantes.```sh sudo chmod +x /usr/local/sbin/setup-ngxblocker sudo chmod +x /usr/local/sbin/update-ngxblocker
**setup-ngxblocker, install-ngxblocker et update-ngxblocker peuvent tous être configurés avec des emplacements d'installation / de mise à jour personnalisés depuis la ligne de commande.**
**Exécutez l'un des scripts setup, install ou update avec --help ou -h pour afficher les options.**
************************************************
<img src="https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/.assets/step-4.png"/>
Exécutez maintenant le script setup-ngxblocker en MODE SIMULÉ (DRY-MODE), qui vous montrera les modifications qu'il apportera et les fichiers qu'il téléchargera pour vous. Il s'agit uniquement d'un ESSAI À BLANC (DRY-RUN), donc aucune modification n'est encore apportée.```sh
cd /usr/local/sbin/
sudo ./setup-ngxblocker
Cela vous donnera une sortie comme suit (cette sortie ci-dessous suppose que votre fichier nginx.conf contient déjà l'inclusion par défaut de /etc/nginx/conf.d/*) Toutes les installations Nginx que je connais ont cette inclusion par défaut dans le fichier nginx.conf distribué avec toutes les versions.```text Checking url: https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/include_filelist.txt
** Dry Run ** | not updating files | run as 'setup-ngxblocker -x' to setup files.
INFO: /etc/nginx/conf.d/* detected => /etc/nginx/nginx.conf inserting: include /etc/nginx/bots.d/blockbots.conf; => /etc/nginx/sites-available/mydomain2.com.vhost inserting: include /etc/nginx/bots.d/ddos.conf; => /etc/nginx/sites-available/mydomain2.com.vhost inserting: include /etc/nginx/bots.d/blockbots.conf; => /etc/nginx/sites-available/mydomain1.com.vhost inserting: include /etc/nginx/bots.d/ddos.conf; => /etc/nginx/sites-available/mydomain1.com.vhost
Whitelisting ip: x.x.x.x => /etc/nginx/bots.d/whitelist-ips.conf
Ce script ajoute également votre IP à la liste blanche dans le fichier whitelist-ips.conf pour vous.
D'autres IP ou plages d'IP peuvent être ajoutées à votre fichier personnalisable whitelist-ips.conf situé dans /etc/nginx/bots.d/whitelist-ips.conf.
**setup-ngxblocker, install-ngxblocker et update-ngxblocker peuvent tous être configurés avec des emplacements d'installation / mise à jour personnalisés depuis la ligne de commande.**
**Exécutez l'un des scripts setup, install ou update avec --help ou -h pour afficher les options.**
************************************************
<img src="https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/.assets/step-5.png"/>
Exécutez maintenant le script setup avec le paramètre -x pour apporter toutes les modifications nécessaires à votre nginx.conf (si requis) et également pour ajouter les includes requis dans tous vos fichiers vhost.
Ce script setup-ngxblocker suppose que tous vos fichiers vhost situés dans /etc/nginx/sites-available se terminent par une extension .vhost. Il est de bonne pratique de faire en sorte que tous vos fichiers de configuration vhost se terminent par une extension .vhost, mais si vous préférez conserver ce que vous avez déjà, par exemple .conf, vous pouvez simplement modifier l'exécution de setup-ngxblocker en utilisant le paramètre `-e` pour spécifier l'extension que vous utilisez pour vos fichiers vhost.
Par exemple, si vos fichiers vhost se terminent par .conf, vous modifierez cette exécution de setup-ngxblocker avec un paramètre de ligne de commande supplémentaire comme suit :
`sudo ./setup-ngxblocker -x -e conf`
Alors maintenant, exécutons le script setup et laissons-le apporter toutes les modifications nécessaires pour activer le Bot Blocker sur tous vos sites.```sh
cd /usr/local/sbin/
sudo ./setup-ngxblocker -x
Vous verrez la sortie comme suit :```text Checking url: https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/include_filelist.txt
INFO: /etc/nginx/conf.d/* detected => /etc/nginx/nginx.conf inserting: include /etc/nginx/bots.d/blockbots.conf; => /etc/nginx/sites-available/mydomain2.com.vhost inserting: include /etc/nginx/bots.d/ddos.conf; => /etc/nginx/sites-available/mydomain2.com.vhost inserting: include /etc/nginx/bots.d/blockbots.conf; => /etc/nginx/sites-available/mydomain1.com.vhost inserting: include /etc/nginx/bots.d/ddos.conf; => /etc/nginx/sites-available/mydomain1.com.vhost
Whitelisting ip: x.x.x.x => /etc/nginx/bots.d/whitelist-ips.conf
Vous remarquerez qu'il a effectué les includes dans tous les fichiers .vhost sur mon serveur de test et qu'il a également ajouté votre propre adresse IP à la liste blanche dans le fichier whitelist-ips.conf pour vous. D'autres adresses IP ou plages d'adresses IP peuvent être ajoutées à votre fichier whitelist-ips.conf personnalisable situé dans /etc/nginx/bots.d/whitelist-ips.conf.
Ce que ce script de configuration a fait, c'est simplement ajouter les instructions include suivantes dans vos fichiers .vhost pour vous ; il ajoute également /etc/nginx/conf.d/* aux includes dans nginx.conf (s'il n'y est pas déjà), sinon, tout le script échouera.```nginx
# Bad Bot Blocker
include /etc/nginx/bots.d/ddos.conf;
include /etc/nginx/bots.d/blockbots.conf;
setup-ngxblocker, install-ngxblocker et update-ngxblocker peuvent tous être configurés avec des emplacements d’installation / de mise à jour personnalisés depuis la ligne de commande.
Exécutez l’un des scripts de configuration, d’installation ou de mise à jour avec --help ou -h pour afficher les options.

Testez maintenant votre configuration nginx
sudo nginx -t
et vous devriez voir```text nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
************************************************
<img src="https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/.assets/step-7.png"/>
Il vous suffit maintenant de recharger / redémarrer Nginx et le Bot Blocker sera immédiatement actif et protégera tous vos sites web.
`sudo nginx -t && sudo nginx -s reload`
ou
`sudo service nginx restart`
Et voilà, le bloqueur est maintenant actif et protège vos sites contre des milliers de bots et domaines malveillants.
************************************************
<img src="https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/.assets/step-8.png"/>
Configurez maintenant une tâche cron pour mettre à jour automatiquement le bloqueur chaque jour afin de toujours bénéficier de la protection la plus récente.
`sudo crontab -e`
Ajoutez la ligne suivante à la fin de votre fichier crontab. Notez l'ajout du paramètre de ligne de commande `-e` pour spécifier votre adresse e-mail où le rapport de mise à jour est envoyé. Remplacez évidemment `[email protected]` par votre véritable adresse e-mail, sinon vous ne recevrez pas l'e-mail lorsque le script aura effectué la mise à jour.
`00 22 * * * sudo /usr/local/sbin/update-ngxblocker -e [email protected]`
Cela mettra à jour le bloqueur chaque nuit à 22 h.
Si vous souhaitez des mises à jour plus fréquentes (car je publie parfois 3 à 4 mises à jour par jour), vous pouvez configurer la tâche cron pour qu'elle s'exécute toutes les 8 heures, bien qu'une fois par jour soit largement suffisant.
`00 */8 * * * sudo /usr/local/sbin/update-ngxblocker -e [email protected]`
Si vous ne souhaitez aucune notification par e-mail après une mise à jour (déconseillé au cas où Nginx rencontrerait une erreur EMERG lors du rechargement), exécutez simplement votre tâche cron comme suit.
`00 */8 * * * sudo /usr/local/sbin/update-ngxblocker -n`
Si vous préférez envoyer les e-mails via <a href="https://www.mailgun.com/">mailgun</a>, exécutez alors votre tâche cron ainsi :
`00 22 * * * sudo /usr/local/sbin/update-ngxblocker -g [email protected] -d yourdomain.com -a mailgun api key -f [email protected]`
Et voilà, le bloqueur se maintiendra automatiquement à jour et rechargera également Nginx une fois la dernière version du fichier globalblacklist.conf téléchargée.
************************************************
<img src="https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/.assets/step-9.png"/>
Vous pouvez maintenant personnaliser n'importe lequel des fichiers suivants pour l'adapter à votre environnement ou à vos besoins. Ces fichiers ne sont jamais modifiés lors d'une mise à jour via le script de mise à jour automatique ci-dessus, donc toutes les personnalisations que vous effectuez ici ne seront jamais écrasées lors d'une mise à jour.```text
/etc/nginx/bots.d/whitelist-ips.conf
/etc/nginx/bots.d/whitelist-domains.conf
/etc/nginx/bots.d/blockbots.conf
/etc/nginx/bots.d/blacklist-domains.conf
/etc/nginx/bots.d/blacklist-user-agents.conf
/etc/nginx/bots.d/blacklist-ips.conf
/etc/nginx/bots.d/bad-referrer-words.conf
/etc/nginx/bots.d/custom-bad-referrers.conf
/etc/nginx/bots.d/ddos.conf
Disons que, pour une raison « obscure », vous voulez réellement bloquer GoogleBot afin qu'il n'accède pas à votre site. Il vous suffit de l'ajouter au fichier /etc/nginx/bots.d/blacklist-user-agents.conf et cela remplacera la liste blanche par défaut pour GoogleBot. Il en va de même pour tous les autres bots qui sont sur liste blanche par défaut.
Tous les fichiers d'inclusion sont commentés pour votre commodité.

(TESTEZ QUE CELA FONCTIONNE)
TESTS
Exécutez les commandes suivantes une par une depuis un terminal sur une autre machine Linux, en pointant vers votre propre nom de domaine.
❗ remplacez http://votredomaine.com ❗ dans les exemples ci-dessous par votre VRAI nom de domaine ❗
curl -A "Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MMB29P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.96 Mobile Safari/537.36 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" -I http://yourdomain.com
curl -A "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)" -I http://yourdomain.com
Devrait répondre avec 200 OK
curl -A "Xenu Link Sleuth/1.3.8" -I http://yourdomain.com
curl -A "Mozilla/5.0 (compatible; AhrefsBot/5.2; +http://ahrefs.com/robot/)" -I http://yourdomain.com
Devrait répondre avec l'un des messages d'erreur suivants :
curl -I http://yourdomain.com -e http://100dollars-seo.com
curl -I http://yourdomain.com -e http://zx6.ru
Devrait répondre avec l'un des messages d'erreur suivants :
Le Nginx Ultimate Bot Blocker fonctionne désormais et PROTÈGE vos sites web !!!
❗ remplacez http://votredomaine.com ❗ dans les exemples ci-dessous par votre VRAI nom de domaine ❗

Si vous êtes un utilisateur de Cloudflare qui utilise le système CDN / de mise en cache de Cloudflare, vous devez toujours désactiver le CDN Cloudflare (mettre le nuage gris)
Pendant les tests, vous obtiendrez les codes de réponse corrects comme ci-dessous :
C'est voulu. Le CDN fait son travail, c'est-à-dire que la première réponse de votre serveur a dit au bot « va-t'en » en lui envoyant des réponses 444 ou 443.
Cloudflare met en cache cette réponse et, par conséquent, la deuxième fois que vous testez, vous recevrez un message d'erreur 520 Origin Error.
Pendant les tests du bloqueur, désactivez le système CDN / de mise en cache et, une fois vos tests concluants, réactivez le CDN / la mise en cache sur votre environnement en production, car vous voulez bien que les bots reçoivent cette réponse de Cloudflare.
La plupart des autres systèmes CDN afficheront probablement le même comportement, alors désactivez toujours un CDN pendant les tests pour écarter tout ce qui pourrait interférer avec vos tests. Assurez-vous toujours de réactiver le CDN une fois les tests terminés !!
Une fois que vous activez le CDN Cloudflare, testez à nouveau.
Pendant les tests, vous obtenez
Cela signifie que le CDN fonctionne.

INSTALLATION DU BLOQUEUR DANS DES EMPLACEMENTS DE DOSSIERS NGINX NON STANDARDS
Certaines personnes compilent Nginx elles-mêmes et ne disposent pas des emplacements de dossiers nginx standard dans /etc/nginx
Pour ces utilisateurs, vous pouvez exécuter install-ngxblocker, setup-ngxblocker et update-ngxblocker en spécifiant votre emplacement de dossier dans les lignes de commande comme suit.
sudo ./install-ngxblocker -x -c /usr/local/nginx/conf.d -b /usr/local/nginx/bots.d
sudo ./setup-ngxblocker -x -c /usr/local/nginx/conf.d -b /usr/local/nginx/bots.d
sudo ./update-ngxblocker -c /usr/local/nginx/conf.d -b /usr/local/nginx/bots.d -e [email protected]
Cela placera automatiquement les fichiers dans les emplacements que vous spécifiez, il fera les inclusions dans vos vhosts en utilisant vos emplacements personnalisés et lorsque update-ngxblocker récupérera une nouvelle mise à jour, il réécrira également automatiquement les sections « Include » dans le fichier globalblacklist.conf avec vos propres emplacements personnalisés. Merci encore à Stuart Cardall @itoffshore pour ses contributions à ces excellents scripts.
Les rapports de réseaux doublons de Nginx ne sont PAS un bug et ne peuvent pas être corrigés, c'est le comportement souhaité du bloqueur. Les mises à jour quotidiennes des listes noires IP entraînent la mise sur liste noire de certaines IP et plages bien connues ancienne valeur "1" qui sont ensuite mises sur liste blanche à la toute fin de globalblocklist, ce qui est l'ordre de chargement qui définit ensuite les IP que nous savons bonnes à leur nouvelle valeur "0", les mettant ainsi sur liste blanche. Il en est ainsi depuis le premier jour du bloqueur et cela restera ainsi. Ce sont de simples messages [AVERTISSEMENT] et non des messages [URGENCE] et ils n'affectent en aucune manière le fonctionnement de Nginx.
(Plus de 4000 mauvais référents, référents de spam, user-agents, mauvais bots, mauvaises IP, sites de pornographie, de jeux d'argent et de clickjacking, sociétés SEO lucratives, détecteurs de thèmes wordpress et plus encore)
Des milliers d'heures de programmation et de tests ont été consacrées à ce projet, montrez un peu d'amour
Les bots tentent de se faire passer pour d'autres logiciels ou sites web en déguisant leur user agent. Leurs noms de user agent peuvent sembler inoffensifs, parfaitement légitimes même.
Par exemple, « ^Java » mais selon Project Honeypot, c'est en réalité l'un des plus dangereux MAIS beaucoup de bots légitimes ont « Java » dans leur chaîne de user agent, donc l'approche adoptée par beaucoup pour bloquer « Java » n'est pas seulement ignorante mais bloque également des robots d'exploration très légitimes, y compris certains de Google et de Bing, et cela me montre clairement que ceux qui écrivent des scripts de blocage de bots les testent rarement.
Les référents de spam et les noms de domaines de spam utilisent des techniques très astucieuses pour sauter de vos sites en exécutant des campagnes très lucratives de click-jacking et de redirection de clics qui servent des publicités à des personnes sans méfiance qui naviguent sur le web ou même installent des malwares, adwares ou ransomwares dans leurs navigateurs, qui deviennent ensuite partie de leur réseau lucratif de bots.
Ce bloqueur de bots inclut des centaines de noms de domaines et d'adresses IP que la plupart des gens ne verront même pas dans leurs journaux Nginx. Cela résulte du fait que tous mes sites fonctionnent en SSL et utilisent une Content-Security-Policy (CSP) qui bloque les choses avant même qu'elles n'atteignent Nginx, et j'ai détecté et continue de détecter certains des pires domaines et bots qui existent.
Une quantité massive de sites web de pornographie, de jeux d'argent et de fausses nouvelles est également bloquée dans ce script de blocage, qui croît également à un rythme rapide.
Malheureusement, la plupart des scripts de blocage de bots sont simplement copiés-collés à partir des scripts d'autres personnes et présentés comme leur propre travail. Celui-ci a été inspiré par celui créé par https://github.com/mariusv et j'ai contribué à ce projet mais je suis parti vers une toute nouvelle mise en page, je l'ai nettoyé en profondeur et j'ai recommencé de zéro. C'est désormais un projet complètement indépendant. Il est propre, il fonctionne et a été testé en profondeur.
Cette liste de blocage de mauvais bots nginx est conçue pour être un fichier d'inclusion global Nginx et utilise les directives Nginx map $http_user_agent, map $http_referer et geo $validate_client.
De cette façon, le fichier .conf est chargé une seule fois en mémoire par Nginx et est disponible pour tous les sites web que vous exploitez. Il vous suffit d'utiliser une instruction Include dans un fichier de configuration vhost Nginx.
La beauté de cela est qu'il s'agit d'un fichier central unique utilisé par tous vos sites web. Cela signifie qu'il n'y a qu'un seul endroit pour faire des modifications, c'est-à-dire ajouter de nouveaux bots que vous découvrez dans vos fichiers journaux. Toute modification est appliquée immédiatement à tous les sites après un simple « sudo service nginx reload ». Mais bien sûr, faites toujours un sudo nginx -t pour tester toute modification de configuration avant de recharger.
Le fichier est minuscule en taille. Au moment de la rédaction de ce document et du premier commit public de celui-ci, la taille du fichier, y compris tous les commentaires « que nginx ignore », est actuellement de seulement 185 ko et contient déjà plus de 5000 mauvais domaines, mauvais bots et mauvaises adresses IP. Il est si léger que Nginx ne sait même pas qu'il est là. Il contient déjà des milliers d'entrées - total mis à jour en haut de ce README.
Contrairement à de nombreux autres bloqueurs de mauvais bots pour Nginx et Apache où les gens copient simplement et collent des listes d'autres, cette liste a été construite à partir de zéro et testée en profondeur, et je veux dire en profondeur, depuis maintenant plus de 10 mois. Elle provient de journaux de serveurs réels qui sont surveillés quotidiennement et il y a au moins 3 à 10 nouvelles ajouts à ce fichier presque quotidiennement.
Elle a également été testée en profondeur pour les faux positifs en utilisant des mois de tests constants et réguliers et de surveillance des fichiers journaux.
Tous les sites web listés dans les mauvais référents sont vérifiés un par un avant même d'être ajoutés. Copier simplement tout ce qui semble suspect dans votre fichier journal et l'ajouter à un bloqueur comme celui-ci sans voir d'abord ce que c'est réellement... eh bien, c'est pour le moins insensé.
Nginx a une jolie erreur appelée 444 qui coupe littéralement la connexion. Toutes ces règles émettent une réponse 444, donc si une règle correspond, l'IP demanderesse ne reçoit simplement aucune réponse et il semblerait que votre serveur n'existe pas pour eux ou semble hors ligne.
Un test avec curl utilisant l'une des lignes de commande de test documentées dans le fichier /conf.d/globalblacklist.conf donnera un simple « curl: (52) Empty reply from server » et c'est la réponse que reçoivent les mauvais référents et bots.
Pour les bots ou araignées que vous souhaitez toujours autoriser mais dont vous voulez limiter le taux de visite, vous pouvez utiliser les fonctions de limitation de débit intégrées que j'ai incluses. Le fichier est abondamment commenté tout au long, vous devriez donc pouvoir comprendre, sinon envoyez-moi simplement un message si vous rencontrez des problèmes.
ou pour contribuer vos propres mauvais référents, bots ou pour apporter des corrections à des bots ou domaines bloqués à tort, veuillez forker une copie de ce dépôt et envoyer des demandes de pull sur les fichiers individuels situés ici puis envoyez une demande de pull (PR).
concernant des listes incorrectes ou tout autre problème sur le système de problèmes et ils seront examinés et supprimés si nécessaire. Je réponds très rapidement aux problèmes des utilisateurs et j'ai aidé d'innombrables utilisateurs pendant des jours entiers à faire fonctionner leur bloqueur de bots. On pourrait dire que je suis fou (contestable) mais j'aime aider les gens et je n'ignore pas les problèmes ou les personnes ayant des difficultés à faire fonctionner cela.
Beaucoup de listes mettent des domaines étranges dans leur fichier hosts. Votre fichier hosts et votre DNS ne comprendront pas cela. Cette liste utilise des domaines convertis qui sont au format DNS correct pour être compris par n'importe quel système d'exploitation. Évitez d'utiliser des listes qui ne mettent pas la structure de domaine correctement formatée dans leurs listes.
Par exemple Le domaine :
lifehacĸer.com (notez le K)
se traduit en réalité par :
xn--lifehacer-1rb.com
Vous pouvez faire un nslookup sur n'importe quel système d'exploitation et il se résoudra correctement.
`nslookup xn--lifehacer-1rb.com````xn--lifehacer-1rb.com origin = dns1.yandex.net mail addr = iskalko.yandex.ru serial = 2016120703 refresh = 14400 retry = 900 expire = 1209600 minimum = 14400 xn--lifehacer-1rb.com mail exchanger = 10 mx.yandex.net. Name: xn--lifehacer-1rb.com Address: 78.110.60.230 xn--lifehacer-1rb.com nameserver = dns2.yandex.net. xn--lifehacer-1rb.com text = "v=spf1 redirect=_spf.yandex.net" xn--lifehacer-1rb.com nameserver = dns1.yandex.net.
- Consultez : https://www.charset.org/punycode pour plus d'informations à ce sujet.
************************************************
## SURVEILLEZ TOUJOURS CE QUE VOUS FAITES :
**ASSUREZ-VOUS de surveiller les journaux de votre site web** après avoir mis cela en place. Je vous suggère de charger d'abord ceci sur un seul site et de le surveiller pour détecter d'éventuels faux positifs avant de le mettre en production sur tous vos sites web.
Ne restez pas comme une autruche la tête dans le sable ; être un opérateur de serveur et un propriétaire de site web responsable signifie que vous devez surveiller vos journaux fréquemment. Une raison pour laquelle beaucoup d'entre vous se sont retrouvés ici en premier lieu est que vous avez vu des choses suspectes dans vos fichiers journaux Nginx.
Surveillez également vos journaux quotidiennement pour détecter de nouveaux mauvais referers et chaînes de user-agent que vous souhaitez bloquer. Votre meilleure source pour enrichir cette liste est vos propres journaux de serveur, pas les miens.
N'hésitez pas à contribuer avec les mauvais referers de vos propres journaux à ce projet en envoyant une Pull Request (PR). Vous pouvez cependant compter sur cette liste pour écarter 99 % des indésirables.
************************************************
## COMMENT SURVEILLER VOS JOURNAUX QUOTIDIENNEMENT (LA MÉTHODE FACILE) :
**Avec une grande gratitude et appréciation pour**
https://blog.nexcess.net/2011/01/21/one-liners-for-apache-log-files/
Pour surveiller vos principaux referers à partir des fichiers journaux d'un site web sur une base quotidienne, utilisez les tâches cron simples suivantes qui vous enverront par e-mail une liste des principaux referers / user agents chaque matin à partir des fichiers journaux d'un site web particulier. Ceci est un exemple pour une seule tâche cron pour un seul site. Configurez-en plusieurs pour chacun de ceux que vous souhaitez surveiller. Voici un cron qui s'exécute à 8h chaque matin et m'envoie par e-mail le journal des referers épuré. Quand je dis épuré, le domaine du site et les autres referers comme Google et Bing sont retirés des résultats. Bien sûr, vous devez modifier le nom du fichier journal, le nom de domaine et votre adresse e-mail dans les exemples ci-dessous. Le deuxième cron pour collecter les user agents ne retire aucun referer, mais vous pouvez ajouter cette fonctionnalité si vous le souhaitez en copiant l'instruction awk !~ du premier exemple.
##### Cron pour surveiller les referers quotidiens sur Nginx
`00 08 * * * tail -10000 /var/log/nginx/mydomain-access.log | awk '$11 !~ /google|bing|yahoo|yandex|mywebsite.com/' | awk '{print $11}' | tr -d '"' | sort | uniq -c | sort -rn | head -1000 | mail -s "Top 1000 Referers for Mydomain.com" [email protected]`
Ceci vous envoie par e-mail une liste quotidienne des referers en utilisant une commande awk pour exclure des domaines comme google, bing et votre propre nom de domaine.
##### Cron pour surveiller les user agents quotidiens sur Nginx
`00 08 * * * tail -50000 /var/log/nginx/mydomain-access.log | awk '{print $12}' | tr -d '"' | sort | uniq -c | sort -rn | head -1000 | mail -s "Top 1000 Agents for Mydomain.com" [email protected]`
Ceci vous envoie par e-mail une liste des principaux User-Agents qui ont visité votre site au cours des dernières 24 heures, utile pour repérer toute chaîne de User-Agents malveillante ou suspecte.
************************************************
## BLOQUEZ LES BOTS AGRESSIFS AU NIVEAU DU PARE-FEU AVEC FAIL2BAN :
J'ai ajouté un filtre et une action Fail2Ban personnalisés que j'ai écrits et qui surveillent vos journaux Nginx pour détecter les bots qui génèrent un grand nombre d'erreurs 444. Cette jail personnalisée pour Fail2Ban analysera les journaux sur une période d'une semaine et bannira le contrevenant pendant 24 heures.
Cela aide énormément à écarter certains récidivistes et à les empêcher de remplir vos fichiers journaux d'erreurs 444.
Consultez le dossier Fail2Ban pour les instructions de configuration de cet excellent module complémentaire pour le Nginx Bad Bot Blocker.
************************************************
## STOPPER LE SPAM « FANTÔME » DE GOOGLE ANALYTICS :
L'utilisation du bloqueur Nginx ne suffit pas à arrêter le spam de referers fantômes de Google Analytics car ils atteignent Analytics directement et ne touchent pas nécessairement votre site web.
Vous devez utiliser des filtres regex dans Analytics pour empêcher le spam de referers fantômes.
Pour cela, plusieurs fichiers google-exclude-0*.txt ont été créés pour vous et ils sont mis à jour en même temps que le bloqueur Nginx. Au fur et à mesure que la liste grandit, d'autres fichiers d'exclusion seront créés.
************************************************
## POUR STOPPER LE SPAM « FANTÔME » SUR GOOGLE ANALYTICS, SUIVEZ LE GUIDE VISUEL SIMPLE CI-DESSOUS
Suivez les instructions visuelles étape par étape ci-dessous pour ajouter ces fichiers google-exclude comme segments à votre site web.
<table style="width:100%;margin:0;">
<tr>
<td align="left"><img src="https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/.assets/google-analytics-ghost-spam-01.jpg" alt="Google Analytics - Adding Segments to Stop Ghost Spam"/></td>
</tr>
<tr>
<td align="left"><img src="https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/.assets/google-analytics-ghost-spam-02.jpg" alt="Google Analytics - Adding Segments to Stop Ghost Spam"/></td>
</tr>
<tr>
<td align="left"><img src="https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/.assets/google-analytics-ghost-spam-03.jpg" alt="Google Analytics - Adding Segments to Stop Ghost Spam"/></td>
</tr>
<tr>
<td align="left"><img src="https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/.assets/google-analytics-ghost-spam-04.jpg" alt="Google Analytics - Adding Segments to Stop Ghost Spam"/></td>
</tr>
<tr>
<td align="left"><img src="https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/.assets/google-analytics-ghost-spam-05.jpg" alt="Google Analytics - Adding Segments to Stop Ghost Spam"/></td>
</tr>
<tr>
<td align="left"><img src="https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/.assets/google-analytics-ghost-spam-06.jpg" alt="Google Analytics - Adding Segments to Stop Ghost Spam"/></td>
</tr>
<tr>
<td align="left"><img src="https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/.assets/google-analytics-ghost-spam-07.jpg" alt="Google Analytics - Adding Segments to Stop Ghost Spam"/></td>
</tr>
</table>
************************************************
## BLOQUER LES DOMAINES SPAM À L'AIDE DE GOOGLE SEARCH CONSOLE / OUTILS POUR WEBMASTERS
(Comment utiliser le fichier google-disavow.txt)
J'ai ajouté la création d'un fichier texte Google Disavow appelé google-disavow.txt. Ce fichier peut être utilisé dans les Outils pour webmasters de Google pour bloquer tous ces domaines en tant que liens indésirables ou de mauvaise qualité. À utiliser avec prudence.
************************************************
## VERSION ROBOTS.txt POUR CEUX QUI NE PEUVENT PAS UTILISER CE BLOQUEUR COMPLET ?
Beaucoup de personnes sont à la merci de leur hébergeur et n'ont pas d'accès root au serveur qui exécute leur site web. Si c'est votre situation, consultez le fichier robots.txt généré automatiquement qui vous aidera dans une certaine mesure à éloigner beaucoup de mauvais bots et user-agents de vos sites.
************************************************
## VERSIONS .htaccess POUR CEUX QUI NE PEUVENT PAS UTILISER CE BLOQUEUR COMPLET ?
Beaucoup de personnes sont à la merci de leur hébergeur et n'ont pas d'accès root au serveur qui exécute leur site web.
Si c'est votre situation, consultez les versions .htaccess générées automatiquement du Spam Referrer Blocker qui se trouvent dans <a href="https://github.com/mitchellkrogza/apache-ultimate-bad-bot-blocker/tree/master/.htaccess">ce dépôt</a>. Cette méthode .htaccess (POUR SITES APACHE UNIQUEMENT) vous aidera à éloigner tous les referers spam de ce bloqueur de votre site.
Ceci est simplement mentionné ici car beaucoup de personnes utilisant des systèmes CPanel pensent qu'elles sont derrière un serveur Nginx alors qu'en réalité elles exécutent un serveur Apache derrière un serveur proxy Nginx. .htaccess ne fonctionne pas sur les sites Nginx.
Vous n'utilisez pas le serveur web Nginx ? Voir le [](https://github.com/mitchellkrogza/apache-ultimate-bad-bot-blocker)
************************************************
# ÇA MARCHE, BORDEL !!!
************************************************
## Profitez maintenant de ce que le Nginx Bad Bot Blocker peut faire pour vous et vos sites web.
### Et aidez à soutenir ce projet
Des milliers d'heures de programmation et de tests ont été consacrées à ce projet, montrez un peu d'amour
[<img src="https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/.assets/kofi4.png" alt="Buy me Coffee" width="300"/>](https://ko-fi.com/mitchellkrog)
************************************************
# VOTRE SITE WEB A-T-IL ÉTÉ PIRATÉ ?
[](mailto:[email protected]) pour vous aider à nettoyer et sécuriser votre site web.
************************************************
### QUELQUES AUTRES PROJETS GRATUITS GÉNIAUX
- https://github.com/mitchellkrogza/apache-ultimate-bad-bot-blocker
- https://github.com/mitchellkrogza/Badd-Boyz-Hosts
- https://github.com/mitchellkrogza/Ultimate.Hosts.Blacklist
- https://github.com/mitchellkrogza/Stop.Google.Analytics.Ghost.Spam.HOWTO
- https://github.com/mitchellkrogza/The-Big-List-of-Hacked-Malware-Web-Sites
- https://github.com/mitchellkrogza/fail2ban-useful-scripts
- https://github.com/mitchellkrogza/linux-server-administration-scripts
- https://github.com/mitchellkrogza/Travis-CI-Nginx-for-Testing-Nginx-Configuration
- https://github.com/mitchellkrogza/Travis-CI-for-Apache-For-Testing-Apache-and-PHP-Configurations
- https://github.com/mitchellkrogza/Fail2Ban-Blacklist-JAIL-for-Repeat-Offenders-with-Perma-Extended-Banning
- https://github.com/funilrys/PyFunceble
- https://github.com/funilrys/dead-hosts
- https://github.com/mitchellkrogza/The-Big-List-of-Hacked-Malware-Web-Sites
- https://github.com/mitchellkrogza/Suspicious.Snooping.Sniffing.Hacking.IP.Addresses
- https://github.com/mitchellkrogza/Fail2Ban.WebExploits
************************************************
### DÉCOUVREZ AUSSI LA NOUVELLE GRANDE LISTE DE SITES WEB PIRATÉS, MALVEILLANTS ET WORDPRESS
Ce dépôt contient une liste de tous les sites web que je rencontre qui sont piratés avec des logiciels malveillants.
La plupart des propriétaires de sites ignorent que leurs sites ont été piratés et sont utilisés pour installer des logiciels malveillants.
Consultez-la sur : https://github.com/mitchellkrogza/The-Big-List-of-Hacked-Malware-Web-Sites
************************************************
### PASSIONNÉ DE PHOTOGRAPHIE ?
Passez me voir sur [mitchellkrog.com](https://mitchellkrog.com) ou [Facebook](https://www.facebook.com/MitchellKrogPhotography) ou suivez-moi sur Twitter <a href='https://twitter.com/MitchellKrog'><img src="https://img.shields.io/twitter/follow/MitchellKrog.svg?style=social&label=Follow" alt='Follow @MitchellKrog'></a>
************************************************
### REMERCIEMENTS ET CONTRIBUTEURS :
Merci beaucoup à ceux qui contribuent à ce projet.
De nombreuses parties des scripts de génération et du code qui alimentent ce projet ont été adaptées à partir d'extraits provenant de centaines de sources.
En fait, il est si difficile de tous les mentionner, mais voici quelques personnes clés dont les petits extraits de code m'ont aidé à introduire de nouvelles fonctionnalités à tout moment. Montrez-leur un peu d'amour et consultez aussi certains de leurs projets.
- Konstantin Goretzki @konstantingoretzki https://github.com/konstantingoretzki (Regex amélioré sur le filtre Fail2Ban)
- Stuart Cardall - https://github.com/itoffshore (Scripts d'installation, de mise à jour et de configuration et mainteneur du paquet Alpine Linux)
- Mike van Eckendonk - https://github.com/Eckybrazzz
- Nissar Chababy @funilrys - https://github.com/funilrys/PyFunceble (Excellent script pour vérifier les noms de domaine ACTIFS, INACTIFS et EXPIRÉS)
- Marius Voila https://github.com/mariusv
- Cătălin Mariș https://github.com/alrra
- deformhead https://github.com/deformhead
- bluedragonz https://github.com/bluedragonz
- Alexander https://github.com/shoonois
- Steven Black https://github.com/StevenBlack
- Fail2Ban - https://github.com/fail2ban
- Stevie-Ray Hartog https://github.com/Stevie-Ray
- Sir Athos de StackOverFlow - http://stackoverflow.com/users/2245910/sir-athos (aide avec le tagging et le commit des builds Travis)
- StackOverflow - http://stackoverflow.com/ (scripts bash issus de centaines de questions et réponses)
- SuperUser - http://superuser.com/ (extraits de diverses questions et réponses)
Si vous pensez que votre nom devrait figurer ici, envoyez-moi un message.
************************************************
### Écrire du code comme celui-ci prend beaucoup de temps !!
Des milliers d'heures de programmation et de tests ont été consacrées à ce projet, montrez un peu d'amour
[<img src="https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/.assets/kofi4.png" alt="Buy me Coffee" width="300"/>](https://ko-fi.com/mitchellkrog)
<img src="https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/.assets/zuko.png"/>
************************************************
# Licence MIT
## Copyright (c) 2017 Mitchell Krog - [email protected]
## https://github.com/mitchellkrogza
La permission est accordée, gratuitement, à toute personne obtenant une copie
de ce logiciel et des fichiers de documentation associés (le « Logiciel »), de traiter
le Logiciel sans restriction, y compris, sans limitation, les droits
d'utiliser, de copier, de modifier, de fusionner, de publier, de distribuer, de sous-licencier et/ou de vendre
des copies du Logiciel, et de permettre aux personnes à qui le Logiciel est
fourni de le faire, sous réserve des conditions suivantes :
L'avis de droit d'auteur ci-dessus et cet avis de permission doivent être inclus dans toutes
les copies ou parties substantielles du Logiciel.
LE LOGICIEL EST FOURNI « EN L'ÉTAT », SANS GARANTIE D'AUCUNE SORTE, EXPRESSE OU
IMPLICITE, Y COMPRIS, MAIS SANS S'Y LIMITER, LES GARANTIES DE QUALITÉ MARCHANDE,
D'ADÉQUATION À UN USAGE PARTICULIER ET D'ABSENCE DE CONTREFAÇON. EN AUCUN CAS, LES
AUTEURS OU TITULAIRES DU DROIT D'AUTEUR NE SERONT RESPONSABLES DE TOUTE RÉCLAMATION, DE TOUT DOMMAGE OU AUTRE
RESPONSABILITÉ, QUE CE SOIT DANS LE CADRE D'UNE ACTION CONTRACTUELLE, DÉLICTUELLE OU AUTRE, DÉCOULANT DE,
HORS OU EN RELATION AVEC LE LOGICIEL OU L'UTILISATION OU AUTRES TRANSACTIONS DANS LE
LOGICIEL.