Sécurité et SSL
Bloquer ou autoriser l'accès par pays
Vous pouvez limiter les visites de certains pays de deux façons : depuis l'espace client, sans toucher à aucun fichier, ou avec des règles dans le .htaccess lorsque vous avez besoin de quelque chose de plus précis, comme protéger uniquement l'accès à l'administration ou rediriger selon le pays.
Le pays est déterminé à partir de l'IP du visiteur. C'est fiable dans la plupart des cas, mais une personne qui utilise un VPN ou un proxy apparaîtra avec le pays de ce service.
Depuis l'espace client
- Connectez-vous à l'espace client et ouvrez votre service d'hébergement.
- Allez dans Pare-feu et antivirus > Blocage géographique.
- Sélectionnez le domaine à protéger.
- Choisissez le mode :
- Liste noire : bloque les pays sélectionnés et autorise les autres.
- Liste blanche : autorise uniquement les pays sélectionnés et bloque les autres.
- Sélectionnez les pays (ou des continents entiers) et enregistrez.
Le blocage s'applique à tout le domaine. Si vous utilisez une liste blanche, vérifiez que vous n'excluez pas des services qui se connectent à votre site depuis d'autres pays, comme les passerelles de paiement, les webhooks ou les outils de surveillance de disponibilité. Pour le retirer, revenez à la même section et supprimez la configuration.
Avec des règles dans le .htaccess
Le serveur géolocalise chaque visite et place le résultat dans les variables GEOIP_COUNTRY_CODE (pays) et GEOIP_CONTINENT_CODE (continent), que vous pouvez utiliser dans le .htaccess du domaine. Ajoutez les règles au début du fichier. Si vous utilisez aussi le blocage de l'espace client, ne modifiez pas le bloc compris entre # BEGIN HostsuarGeoBlock et # END HostsuarGeoBlock : le panneau le réécrit à chaque enregistrement.
Les pays s'indiquent avec leur code ISO 3166-1 alpha-2 à deux lettres : ES Espagne, RU Russie, CN Chine, US États-Unis… Les continents, avec EU Europe, AS Asie, AF Afrique, NA Amérique du Nord, SA Amérique du Sud et OC Océanie.
Bloquer plusieurs pays
Cet exemple bloque la Russie, la Chine et la Corée du Nord et autorise les autres :
GeoIPEnable On SetEnvIf GEOIP_COUNTRY_CODE RU DenyCountry SetEnvIf GEOIP_COUNTRY_CODE CN DenyCountry SetEnvIf GEOIP_COUNTRY_CODE KP DenyCountry Allow from all Deny from env=DenyCountry
Ajoutez une ligne SetEnvIf pour chaque pays à bloquer.
Autoriser seulement certains pays
À l'inverse : autoriser l'Espagne et le Portugal et bloquer les autres :
GeoIPEnable On SetEnvIf GEOIP_COUNTRY_CODE ES AllowCountry SetEnvIf GEOIP_COUNTRY_CODE PT AllowCountry Deny from all Allow from env=AllowCountry
Pour autoriser un continent entier, utilisez GEOIP_CONTINENT_CODE ; par exemple, l'Europe uniquement :
GeoIPEnable On SetEnvIf GEOIP_CONTINENT_CODE EU AllowCountry Deny from all Allow from env=AllowCountry
Limiter l'accès à wp-admin à votre pays
Souvent, vous ne voulez pas bloquer le site, mais seulement l'accès à l'administration. Cet exemple n'autorise l'accès à wp-login.php, wp-admin et xmlrpc.php de WordPress que depuis l'Espagne ; le reste du site reste ouvert à tout le monde :
GeoIPEnable On RewriteEngine On RewriteCond %{ENV:GEOIP_COUNTRY_CODE} !^(ES)$ RewriteCond %{REQUEST_URI} ^/(wp-login\.php|wp-admin/|xmlrpc\.php) [NC] RewriteCond %{REQUEST_URI} !^/wp-admin/admin-ajax\.php [NC] RewriteRule ^ - [F,L]
L'exception pour admin-ajax.php est nécessaire, car de nombreuses extensions et thèmes l'utilisent aussi dans la partie publique. Pour autoriser plusieurs pays, séparez-les par | : !^(ES|PT)$. Si vous voyagez, n'oubliez pas que vous serez vous aussi bloqué jusqu'à ce que vous retiriez ou élargissiez la règle.
Rediriger selon le pays
Vous pouvez aussi envoyer les visiteurs de certains pays vers une autre version du site. Cet exemple redirige les personnes qui arrivent des États-Unis ou du Canada :
GeoIPEnable On RewriteEngine On RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^(US|CA)$ RewriteRule ^(.*)$ https://www.otraweb.com/$1 [R=302,L]
Utilisez 302 (temporaire) et non 301 : les navigateurs mémorisent les redirections permanentes et un visiteur qui change de pays continuerait d'être redirigé. Gardez à l'esprit que Google explore majoritairement depuis les États-Unis : une redirection par pays peut l'empêcher de voir votre site d'origine.
Lire le pays du visiteur depuis PHP
Avec GeoIPEnable On au début du .htaccess, votre code PHP reçoit la géolocalisation dans $_SERVER :
<?php echo $_SERVER['GEOIP_ADDR']; // IP depuis laquelle on accède echo $_SERVER['GEOIP_COUNTRY_CODE']; // code du pays, par exemple ES echo $_SERVER['GEOIP_CONTINENT_CODE']; // code du continent, par exemple EU
Vous pouvez ainsi, par exemple, présélectionner la langue ou la devise sans appeler un service externe. Si l'IP ne peut pas être localisée, la variable n'existe pas : utilisez $_SERVER['GEOIP_COUNTRY_CODE'] ?? '' pour éviter les avertissements.
Si une personne légitime ne peut plus accéder
- Vérifiez le pays attribué à son IP avec n'importe quel service de géolocalisation et comparez-le à votre liste.
- Dans une liste blanche, ajouter un pays l'autorise ; dans une liste noire, il le bloque. Vérifiez le mode avant d'ajouter des pays.
- Si votre site est derrière un CDN comme Cloudflare, le serveur peut voir l'IP du CDN au lieu de celle du visiteur. Dans ce cas, utilisez le blocage par pays du CDN lui-même.
- Si vous vous êtes bloqué vous-même, retirez les règles du
.htaccessdepuis le gestionnaire de fichiers de cPanel ou supprimez le blocage depuis l'espace client.
Le blocage par pays réduit fortement le trafic malveillant automatisé, mais il ne remplace pas la mise à jour du site ni l'utilisation de mots de passe sûrs.
Cela peut aussi vous aider
- Activer la protection DDoS avec reCAPTCHA sur votre site Comment fonctionne la protection DDoS avec reCAPTCHA de LiteSpeed, quand l'activer (attaques, bots,...
- Ajouter une IP à la liste blanche du pare-feu de votre hébergement Explique comment autoriser depuis l'espace client une IP légitime bloquée par le pare-feu afin de pe...
- Que faire si Imunify360 bloque votre accès Explique pourquoi une IP peut être bloquée, comment vérifier si le blocage vient d'Imunify360 et que...
- Restreindre l'espace client aux IP autorisées Ajoutez des IP précises à l'accès à l'espace client, vérifiez une nouvelle session et prévoyez que f...
Quelque chose cloche ou a changé ? Racontez-nous et nous le vérifions.