Si vous administrez vous-même votre site web, il est possible que vous ayez déjà eu des problèmes de spams.
En poussant les vérifications plus loin, ces spams viennent souvent d’un même groupe d’IP.
J’ai recensé 3 techniques qui permettent de bannir des plages entières d’adresse IP.
GEOIP_COUNTRY_CODE (htaccess)
La première technique consiste à utiliser le GEOIP_COUNTRY_CODE avec le htaccess. C’est une technique qui permet de bloquer les adresses IP de tout un pays.
Prenons l’exemple ci-dessous :
SetEnvIf GEOIP_COUNTRY_CODE DE BlockCountry SetEnvIf GEOIP_COUNTRY_CODE RU BlockCountry Deny from env=BlockCountry
C’est une solution donné par OVH, ce code bloque les accès de l’Allemagne (DE), et de la Russie (RU).
Si vous voulez plus d’infos, voici le lien de la page d’OVH.
Après vérification, la page OVH n’existe plus, mais la technique marche encore.
Bannissement par masque de sous-réseau (htaccess)
Si vous voulez bannir une plage d’adresse IP plus spécifique avec une adresse de début et une de fin, vous pouvez utiliser le calcul par masque de sous-réseau.
Pour utiliser cette technique, 2 solutions possible :
- Connaître la manière de calculer un masque de sous-réseau.
- Utiliser un outil qui fait lui-même ce calcul.
Voici un outil qui le fait très bien : monadresseip
Vous lui donnez les adresses IP de début et de fin et il vous donne un code à insérer dans votre htaccess.
C’est une technique qui peut vous sauver la vie sans forcément bloquer trop d’adresses IP.
Voici un exemple de code bloquant toutes les ip de 5.1.1.1 à 5.255.255.255
<Files *> order allow,deny allow from all Deny from 5.1.1.1/255.1.1.1 </Files>
bannissement par code php
Il est aussi possible de faire un bannissement grâce à du code PHP. C’est très utile quand vous ne pouvez pas utiliser de htaccess.
Il suffit de prendre le code ci-dessous :
$ipDebut = ip2long('5.1.1.1'); $ipFin = ip2long('5.255.255.255'); $ipAbloquer = ip2long($_SERVER['REMOTE_ADDR']); if (($ipAbloquer >= $ipDebut) && ($ipAbloquer <= $ipFin)){ header('HTTP/1.1 403 Forbidden'); //header('Status: 403 Forbidden'); exit(); }
Vous intégrer les adresses IP de départ et de fin, le code PHP va bloquer toutes les IP se situant entre les 2.