
Dans ce tutoriel, je vais vous expliquer comment bloquer l’accès d’un AS (Autonomous System) qui appartient à une organisation sur Nginx.
Si on prend l’exemple d’Amazon, ils ont l’AS14168 qui annonce l’ensemble de la réseaux publics (plage d’adresse IP).
Votre site est visité en masse par les bot Amazon (AmazonBot) et malgré les réglages dans le robots.txt de votre site Internet, vous n’arrivez pas à contrôler ce flux.
La solution ultime à ce problème est la blocage de l’ensemble des adresses IP d’Amazon, malheureusement Nginx ne sait pas bloquer par défaut un AS même avec la base GeoIP, par contre avec Nginx, on peut bloquer un réseau avec une notation CIDR, à partir de là, il nous reste plus qu’à récupérer la liste des réseaux publics de l’AS pour activer le blocage.
Pour récupérer l’AS, on va utiliser la commande whois dans un script qui va récupérer les réseaux IP et mettre en forme le fichier de blocage.
Voici le script :
Le script exécuté, vous aurez un fichier avec la liste des réseaux :


Pour activer le blocage de l’AS sur votre site internet, il suffit d’appeler ce fichier dans la configuration du virtualhost dans le bloc server{ ... }
server{
listen 443 ssl;
server_name test.domain.tdl;
...
...
include /etc/nginx/block_as14168.conf;
...
...
}
Vérifier la configuration de Nginx :
sudo nginx -t
Recharger la configuration :
sudo systemctl reload Nginx
Pour un blocage global au niveau du serveur Nginx, le fichier peut être appelé directement depuis le fichier nginx.conf
.
Ce blocage peut aussi bien être mis en place sur Nginx en tant que reverse proxy ou en tant que serveur Web.