Bloquer des visiteurs par mesure de sécurité

Internet est un peu comme une jungle, beaucoup d'utilisateurs du web ont des connaissances limitées en matière de risques. Le webmaster se doit de protéger ses visiteurs contre des potentiels escrocs.
Ici, nous verrons différentes méthodes pour interdire l'accès de votre site internet aux potentiels escrocs.

Pré-requis

Pour que les méthodes ci-dessous fonctionnent, il faut que :

  • Vous pouvez créer un fichier .htaccess sur votre hébergement
  • que le module MOD_REWRITE soit activé sur vote hébergement
  • que le module GEO_IP soit activé pour la bannissement par pays

Blocage par plages IP

Vous pouvez bloquer un visiteur par plages IP. Pour cela voici un exemple, ici nous bloquons certaines plages Ip provenant de Bulgarie. Attention tout de même lorsque vous bloquez des plages complètes, certaines plages peuvent être attribuer à plusieurs pays.

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REMOTE_ADDR} ^109\.[0-9]+\.[0-9]+\.[0-9]+ [OR]
RewriteCond %{REMOTE_ADDR} ^151\.[0-9]+\.[0-9]+\.[0-9]+ [OR]
RewriteCond %{REMOTE_ADDR} ^178\.[0-9]+\.[0-9]+\.[0-9]+
RewriteRule .* - [F]
</IfModule>

Ici, nous bloquons les adresses IPs commençant par 109, 151 ou 178.

Blocage des visiteurs par géolocalisation

Autre méthode, l'utilisation de la géolocalisation du visiteur, sous condition, bien sûr, que votre hébergement soit compatible.

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^BG|RO|RU|NE|SN|NG|BJ|CI$
RewriteRule .* - [F]
</IfModule>

Ici, nous bloquons les visiteurs provenant des pays suivants : Bulgarie, Roumanie, Russie, Niger, Sénégal, Nigéria, Bénin et Côte d'Ivoire.

Blocage des utilisateurs de Proxy

Certains malins, pour cacher leurs provenances ou leurs traces utilisent des serveurs Proxy. Voici un code qui bloque les protocoles HTTP utilisés par ces serveurs Proxy.

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP:USERAGENT_VIA}       !^$ [OR]
RewriteCond %{HTTP:FORWARDED}           !^$ [OR]
RewriteCond %{HTTP:VIA}                 !^$ [OR]
RewriteCond %{HTTP:HTTP_PC_REMOTE_ADDR} !^$ [OR]
RewriteCond %{HTTP:XPROXY_CONNECTION}   !^$ [OR]
RewriteCond %{HTTP:PROXY_CONNECTION}    !^$ [OR]
RewriteCond %{HTTP:X_FORWARDED_FOR}     !^$ [OR]
RewriteCond %{HTTP:HTTP_CLIENT_IP}      !^$
RewriteRule ^(.*)$ - [F]
</IfModule>

Cas pratiques

Vous pouvez, bien sûr, utiliser les 3 méthodes pour renforcer le filtrage des potentiels escrocs. Il suffit d'utiliser les codes en exemples ci-dessous en les adaptant à vos besoins.

<IfModule mod_rewrite.c>
RewriteEngine on
# Blocage plages IP
RewriteCond %{REMOTE_ADDR} ^109\.[0-9]+\.[0-9]+\.[0-9]+ [OR]
RewriteCond %{REMOTE_ADDR} ^151\.[0-9]+\.[0-9]+\.[0-9]+ [OR]
RewriteCond %{REMOTE_ADDR} ^178\.[0-9]+\.[0-9]+\.[0-9]+
RewriteRule .* - [F]
# Blocage par pays
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^BG|RO|RU|NE|SN|NG|BJ|CI$
RewriteRule .* - [F]
# Blocage des Proxy
RewriteCond %{HTTP:USERAGENT_VIA}       !^$ [OR]
RewriteCond %{HTTP:FORWARDED}           !^$ [OR]
RewriteCond %{HTTP:VIA}                 !^$ [OR]
RewriteCond %{HTTP:HTTP_PC_REMOTE_ADDR} !^$ [OR]
RewriteCond %{HTTP:XPROXY_CONNECTION}   !^$ [OR]
RewriteCond %{HTTP:PROXY_CONNECTION}    !^$ [OR]
RewriteCond %{HTTP:X_FORWARDED_FOR}     !^$ [OR]
RewriteCond %{HTTP:HTTP_CLIENT_IP}      !^$
RewriteRule ^(.*)$ - [F]
</IfModule>


Autres cas, vous souhaiter bannir tous les serveurs Proxy sauf quelques uns que vous jugez fiables. Sur le même principe, nous pouvons utiliser les exceptions pour les autoriser en suivant l'exemple ci-dessous.

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP:USERAGENT_VIA}       !^$ [OR]
RewriteCond %{HTTP:FORWARDED}           !^$ [OR]
RewriteCond %{HTTP:VIA}                 !^$ [OR]
RewriteCond %{HTTP:HTTP_PC_REMOTE_ADDR} !^$ [OR]
RewriteCond %{HTTP:XPROXY_CONNECTION}   !^$ [OR]
RewriteCond %{HTTP:PROXY_CONNECTION}    !^$ [OR]
RewriteCond %{HTTP:X_FORWARDED_FOR}     !^$ [OR]
RewriteCond %{HTTP:HTTP_CLIENT_IP}      !^$
RewriteCond %{HTTP_REFERER}             !(.*)proxy01.net(.*)
RewriteCond %{HTTP_REFERER}             !(.*)proxy02.net(.*)
RewriteCond %{HTTP_REFERER}             !(.*)proxy03.net(.*)
RewriteRule ^(.*)$ - [F]
</IfModule>

Ici, dans l'exemple, nous interdisons tous les serveurs Proxy sauf proxy01.net, proxy02.net et proxy03.net.

Conclusions

Avec ce genre de codes vous pouvez filtrer pas mal d'escrocs potentiels, même si vous risquez d'avoir des faux positifs. Il faut garder à l'esprit qu'aucune méthode n'est fiable à 100%, la sécurité de vos visiteurs dépend essentiellement de l'attention que vous portez à la sécurité de votre site.

Notes de version

  • [18/11/2017] : Harmonisation de la page

Auteurs et sources