Tutoriel - Comment bloquer l'accès à mon site pour certaines adresses IP via un fichier .htaccess ?

Découvrez les actions possibles via un fichier .htaccess afin de bloquer l'accès à votre site à certaines adresses IP

Dernière mise à jour le 12/09/2022

Objectif

Ce tutoriel a pour objectif de vous aider à sécuriser l'accès à vos sites du réseau extérieur, à prévenir ou corriger d'éventuelles intrusions ou tentatives d'attaques DDoS (attaques par déni de service).

Vous pouvez réaliser ceci grâce à un fichier « .htaccess », un fichier texte particulier, détecté par le serveur web (Apache), et qui permet de définir des règles spéciales sur un répertoire et l'ensemble de ses sous-répertoires.

Vous pouvez créer plusieurs fichiers « .htaccess » dans l'espace FTP de votre hébergement mais un seul par répertoire ou sous-répertoire afin d'éviter les conflits entre différents fichiers « .htaccess ».

Découvrez comment bloquer l'accès à votre site pour certaines adresses IP via un fichier « .htaccess ».

OVHcloud met à votre disposition des services dont la configuration, la gestion et la responsabilité vous incombent. Il vous revient de ce fait d'en assurer le bon fonctionnement.

Nous mettons à votre disposition ce guide afin de vous accompagner au mieux sur des tâches courantes. Néanmoins, nous vous recommandons de faire appel à un prestataire spécialisé si vous éprouvez des difficultés. En effet, nous ne serons pas en mesure de vous fournir une assistance. Plus d'informations dans la section « Aller plus loin » de ce guide.

Prérequis

En pratique

Le fichier « .htaccess » peut être placé dans plusieurs dossiers différents tout en respectant la règle d'un seul fichier « .htaccess » par dossier ou sous-dossier.

Les paramètres définis par un fichier « .htaccess » s'appliquent au répertoire où il est installé ainsi qu'à tous ses sous-répertoires.

Pour éditer (ou créer) ces répertoires, connectez-vous à l'espace FTP de votre hébergement. Au besoin, aidez-vous du guide « Accéder à mon espace de stockage ».

Bloquer une IP, une plage d'IPs, un domaine ou toutes les IPs d'un Pays

Plusieurs règles sont disponibles afin de bloquer les accès à votre hébergement via le « .htaccess ».
Soyez vigilant sur la syntaxe et sur les paramètres que vous bloquez afin de ne pas vous retrouver vous-même bloqué lors de la consultation de vos sites et/ou scripts hébergés.
En cas d'erreur, vous pouvez toujours vous connecter à l'espace FTP de votre hébergement pour corriger la situation.

Les hébergements mutualisés fonctionnent actuellement avec Apache 2.4. Depuis la version Apache 2.3, des variables ont été implémentées et la syntaxe de rédaction des restrictions/autorisations d'accès a évolué.

Du fait que l'ancienne syntaxe est très utilisée, celle-ci est toujours active sur nos infrastructures. Cependant, elle est considérée comme obsolète par Apache et pourrait prochainement ne plus être disponible. Vous trouverez donc dans ce tutoriel des exemples détaillant les deux syntaxes.

Pour plus de détails sur la nouvelle syntaxe, vous pouvez consulter les pages officielles suivantes :

Bloquer une IP

Pour bloquer une adresse IP spécifique, insérez l'un des deux codes suivants dans votre fichier « .htaccess » :

Deny from IP_address
<RequireAll>
Require all granted
Require not ip IP_address
</RequireAll>
  • Exemple : si vous souhaitez bloquer l'adresse IP 192.168.1.2, vous devrez écrire l'un des deux codes suivants :
Deny from 192.168.1.2
<RequireAll>
Require all granted
Require not ip 192.168.1.2
</RequireAll>

Bloquer une plage d'IPs

Pour bloquer une plage d'adresses IP, insérez l'un des deux codes suivants dans votre fichier « .htaccess » :

Deny from IP_range
<RequireAll>
Require all granted
Require not ip IP_range
</RequireAll>
  • Exemple : si vous souhaitez bloquer toutes les IPs en 192.168.x.x, vous devrez écrire l'un des deux codes suivants :
Deny from 192.168
<RequireAll>
Require all granted
Require not ip 192.168
</RequireAll>

Bloquer un domaine

Certains domaines peuvent accéder à votre hébergement via des redirections ou des requêtes.

Pour bloquer un domaine, insérez l'un des deux codes suivants dans votre fichier « .htaccess » :

Deny from domain
<RequireAll>
Require not host domain
</RequireAll>
  • Exemple : si vous souhaitez bloquer le domaine domain.tld, vous devrez écrire l'un des deux codes suivants :
Deny from domain.tld
<RequireAll>
Require not host domain.tld
</RequireAll>

Bloquer les IPs d'un pays

L'ensemble des adresses IP (notamment les adresses IP publiques) disposent d'une géolocalisation à l'échelle d'un pays. Ceci permet d'avoir un aperçu de la provenance des flux d'une IP et de repérer physiquement l'IP.

Le « .htaccess » permet, grâce à cet élément, de bloquer l'ensemble des IPs géolocalisées dans un pays. En d'autres termes, toutes les personnes qui tenteront de visiter votre site depuis ce pays seront bloquées (sauf si elles utilisent une connexion VPN avec une IP géolocalisée dans un autre pays).

Les blocages via le « .htaccess » s'effectuent par le biais des « Country Codes » à deux lettres (Norme ISO 3166-1 alpha2) des pays.

Plusieurs sites listent les pays et leurs « Country Codes » respectifs, dont https://www.iban.com/country-codes (indépendant d'OVHcloud).

Pour bloquer l'ensemble des IPs d'un pays, insérez l'un des deux codes suivants dans votre fichier « .htaccess » :

SetEnvIf GEOIP_COUNTRY_CODE Country_Code BlockCountry
Deny from env=BlockCountry

À placer tout en haut de votre « .htaccess »

RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^(Country_Code)$
RewriteRule ^(.*)$ - [F,L]
  • Exemple : si vous souhaitez bloquer les adresses IPs géolocalisées aux îles Fidji (FJ) et au Groenland (GR), vous devrez écrire l'un des deux codes suivants :
SetEnvIf GEOIP_COUNTRY_CODE FJ BlockCountry
SetEnvIf GEOIP_COUNTRY_CODE GR BlockCountry
Deny from env=BlockCountry

À placer tout en haut de votre « .htaccess »

RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^(FJ|GR)$
RewriteRule ^(.*)$ - [F,L]

Pour autoriser seulement quelques IPs, une plage d'IPs ou l'ensemble des IPs d'un pays

Plutôt que de restreindre l'accès à une ou plusieurs IPs et laisser les autres accéder à votre hébergement, vous pouvez effectuer la démarche inverse en bloquant l'ensemble des IPs puis en n'autorisant qu'une ou plusieurs IPs à accéder à votre service.

Autoriser une ou plusieurs IPs

Pour n'autoriser qu'une seule IP à accéder à votre service, insérez l'un des deux codes suivants dans votre fichier « .htaccess » :

order deny,allow
deny from all
Allow from IP_address
Require ip IP_address
  • Exemple : si vous souhaitez autoriser uniquement les IPs 192.168.1.2 et 192.168.1.3 à accéder à votre hébergement, vous devrez écrire l'un des deux codes suivants :
order deny,allow
deny from all
Allow from 192.168.1.2
Allow from 192.168.1.3
Require ip 192.168.1.2 192.168.1.3

Autoriser une plage d'IPs

Pour autoriser une plage d'IPs à accéder à votre service, insérez l'un des deux codes suivants dans votre fichier « .htaccess » :

order deny,allow
deny from all
Allow from IP_range

À placer tout en haut de votre « .htaccess »

Require ip IP_range
  • Exemple : si vous souhaitez autoriser uniquement la plage d'IPs 192.168.1.x à accéder à votre hébergement, vous devrez écrire l'un des deux codes suivants :
order deny,allow
deny from all
Allow from 192.168.1

À placer tout en haut de votre « .htaccess »

Require ip 192.168.1

Autoriser l'ensemble des IPs d'un pays

Pour autoriser l'ensemble des IPs d'un pays à accéder à votre service, insérez l'un des deux codes suivants dans votre fichier « .htaccess » :

order deny,allow
deny from all
SetEnvIf GEOIP_COUNTRY_CODE Country_Code AllowCountry
Allow from env=AllowCountry

À placer tout en haut de votre « .htaccess »

RewriteCond %{ENV:GEOIP_COUNTRY_CODE} !^(Country_Code)$
RewriteRule ^(.*)$ - [F,L]
  • Exemple : si vous souhaitez autoriser uniquement les îles Fidji (FJ) et le Groenland (GR) à accéder à votre hébergement, vous devrez écrire l'un des deux codes suivants :
order deny,allow
deny from all
SetEnvIf GEOIP_COUNTRY_CODE FJ AllowCountry
SetEnvIf GEOIP_COUNTRY_CODE GR AllowCountry
Allow from env=AllowCountry

À placer tout en haut de votre « .htaccess »

RewriteCond %{ENV:GEOIP_COUNTRY_CODE} !^(FJ|GR)$
RewriteRule ^(.*)$ - [F,L]

Compléments sur le fichier « .htaccess »

Indépendamment de la sécurité sur l'accès général à l'hébergement, le fichier « .htaccess » permet de réaliser d'autres actions. Vous trouverez ci-après trois autres tutoriels OVHcloud sur le sujet :

Aller plus loin

Pour des prestations spécialisées (référencement, développement, etc), contactez les partenaires OVHcloud.

Si vous souhaitez bénéficier d'une assistance à l'usage et à la configuration de vos solutions OVHcloud, nous vous proposons de consulter nos différentes offres de support.

Échangez avec notre communauté d'utilisateurs sur https://community.ovh.com.


Cette documentation vous a-t-elle été utile ?

N’hésitez pas à nous proposer des suggestions d’amélioration afin de faire évoluer cette documentation.

Images, contenu, structure… N’hésitez pas à nous dire pourquoi afin de la faire évoluer ensemble !

Vos demandes d’assistance ne seront pas traitées par ce formulaire. Pour cela, utilisez le formulaire "Créer un ticket" .

Merci beaucoup pour votre aide ! Vos retours seront étudiés au plus vite par nos équipes..


Ces guides pourraient également vous intéresser...

OVHcloud Community

Accedez à votre espace communautaire. Posez des questions, recherchez des informations, publiez du contenu et interagissez avec d’autres membres d'OVHcloud Community.

Echanger sur OVHcloud Community

Conformément à la Directive 2006/112/CE modifiée, à partir du 01/01/2015, les prix TTC sont susceptibles de varier selon le pays de résidence du client
(par défaut les prix TTC affichés incluent la TVA française en vigueur).