Htaccess – Restriction des adresses IP

I. Présentation

Les fichiers .htaccess sont omniprésents sur les sites web pour mettre en place de la réécriture d’URL, définir des pages d’erreurs personnalisées, demander une authentification pour accéder aux ressources, mais aussi pour effectuer une restriction sur une ou plusieurs adresse(s) IP. C’est ce que nous allons voir dans ce tutoriel.

Il y a deux méthodes pour procéder à une restriction :

  •  Refuser l’accès à certaines adresses IP
  •   Autoriser uniquement l’accès à certaines adresses IP

Pourquoi le bannissement ? Si quelqu’un de malintentionné publie des commentaires en grand nombre sur votre site, pollue votre forum, tente d’accéder à votre interface d’administration, etc.

 

II. Restreindre une ou plusieurs adresse(s) IP

Commençons par restreindre l’accès à une ou plusieurs adresse(s) IP en modifiant le fichier « .htaccess » situé à la racine de votre site. Indiquez-ceci dans votre fichier :

# Restriction des adresses IP
# Ordre de priorité des instructions : autoriser puis refuser
Order Allow,Deny
# On autorise tout le monde à accéder au site…
Allow from all
# …Sauf l’adresse IP x.x.x.x
Deny from x.x.x.x

Lorsqu’on souhaite restreindre une ou plusieurs adresse(s) IP, on utilise l’ordre de priorité des instructions « Autoriser puis refuser » c'est-à-dire « Allow,Deny » pour indiquer dans un premier temps qu’on autorise tout (« Allow from all »), puis dans un second temps les adresses IP qu’on refuse (« Deny from »).

Note : Dans le cas de plusieurs adresses, séparez-les par un espace.

 

III. Autoriser une ou plusieurs adresse(s) IP

Cette fois-ci faisons l’inverse, à savoir refuser l’accès à tout le monde et autoriser uniquement à certaines adresses IP.Il suffit d’inverser notre raisonnement par rapport à la méthode vu précédemment c'est-à-dire qu’on va dire indiquer dans un premier que l’on refuse tout, puis dans un deuxième temps les adresses IP autorisées. De ce fait, l’ordre de priorité sera inversé également est deviendra « Deny,Allow ». Ce qui nous donnera :

# Restriction des adresses IP
# Ordre de priorité des instructions : refuser puis autoriser
Order Deny,Allow
# On n’autorise personne à accéder au site…
Deny from all
# …Sauf l’adresse IP x.x.x.x
Allow from x.x.x.x

 

IV. Restreindre les adresses IP commençant par…

Si vous devez refuser ou autoriser plusieurs adresses IP qui commencent de la même manière c'est-à-dire qu’elles ont un ou plusieurs octet(s) en commun, il est possible de l’écrire en une seule fois dans le fichier « .htaccess ».

Par exemple, pour refuser toutes les adresses IP qui commence par « 98.100 », la directive « Deny from » devra être la suivante :

Deny from 98.100

 

V. Restreindre des domaines

Mise à part la restriction basée sur l’adresse IP du client qui accède à votre site, il est possible de faire la même chose avec un nom de domaine. Par exemple, pour refuser tous les internautes qui proviennent d’un domaine en « .ws », indiquez ceci :

Deny from .ws

Note : Pour refuser l’accès depuis un site précis, indiquez le nom de domaine précisément. Je ne l’ai pas fait dans cet exemple pour ne pas me faire d’ennemis.

Vous pouvez désormais paramétrer votre fichier .htaccess de manière à restreindre les accès à votre site web. Pour être plus précis sur les conséquences d’une restriction, lorsque vous accédez au site via une adresse IP non-autorisée vous obtenez une page erreur de type « 403 – forbidden » qui précise « You don't have permission to access / on this server ».

Si les modifications apportées à votre fichier « .htaccess » ne sont pas prises en compte, vérifiez la configuration de votre VirtualHost au niveau de la directive « AllowOverride », qui, si elle est configurée sur « None » indique à Apache de ne pas prendre en compte les fichiers « .htaccess ».

VI. Vidéo

http://www.youtube.com/watch?feature=player_embedded&v=sv0Xm5-7NxM

Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Partager sur Google+ Envoyer par mail

Florian BURNEL

Ingénieur système et réseau, cofondateur d'IT-Connect et Microsoft MVP "Cloud and Datacenter Management". Je souhaite partager mon expérience et mes découvertes au travers de mes articles. Généraliste avec une attirance particulière pour les solutions Microsoft et le scripting. Bonne lecture.

Nombre de posts de cet auteur : 5499.Voir tous les posts

8 thoughts on “Htaccess – Restriction des adresses IP

  • Merci, moi je cherche a n’autoriser que la France et les bot Google mais j’ai du mal a trouver les bons rangs d’IP

    Répondre
    • Bonjour,

      Effectivement ce ne sera pas simple de trouver les bons rangs d’adresses IP… Vous pouvez regarder le lien ci-dessous qui affiche les blocs d’adresses IP réservés à la France.

      http://www.nirsoft.net/countryip/fr.html

      J’espère que cela vous sera utile !
      Florian

      Répondre
    • Voici les plages d’adresses IP utilisées par Google :

      64.18.0.0 – 64.18.15.255
      64.233.160.0 – 64.233.191.255
      66.102.0.0 – 66.102.15.255
      66.249.80.0 – 66.249.95.255
      72.14.192.0 – 72.14.255.255
      74.125.0.0 – 74.125.255.255
      173.194.0.0 – 173.194.255.255
      207.126.144.0 – 207.126.159.255
      209.85.128.0 – 209.85.255.255
      216.239.32.0 – 216.239.63.255

      Ce sont les adresses IP des bots.

      Répondre
  • Bonjour,

    Pour ma part, je souhaiterais offrir des formations sur des pages avec accès privé.
    Votre idée me plait bien de pouvoir donner accès via le htacces seulement à certaines adresse IP connues. Mais mon but serait de pouvoir limiter l’accès juste à quelques pages privées: Est-ce possible?

    Merci pour votre réponse. Emmanuel.

    PS: le dieze devant ce qui est écrit en vert est le moyen de mettre des commentaires dans un fichier htacces? Désolé, je suis un peu novice en la matière…

    Répondre
    • Bonjour Emmanuel,

      Tout à fait, le dièze permet d’indiquer que la ligne est un commentaire (c’est important de commenter le fichier surtout lorsqu’il commence à y avoir un bon nombre de lignes).

      Pour en revenir à votre demande initiale, cela est possible en utilisant la restriction par adresse IP, il faudrait alors refuser tout le monde et mettre une seconde directive pour autoriser uniquement certaines adresses IP. Par ailleurs, vous pouvez mettre en place un système d’authentification HTTP par le fichier htaccess, voici notre tutoriel sur le sujet :

      Authentification htaccess

      A bientôt,
      Florian

      Répondre
      • Bonjour et merci pour ces conseils.

        Toutefois je n’ai pas compris comment bloquer tout accès à une page (par exemple : /intra) et ne l’autoriser que pour une IP (mon.ip.a.moi).
        pourriez vous me donner la syntaxe ?

        Cordialement

        Répondre
  • Bonjour,

    Sans réponse à ma précédente demande, je me permet de la reformuler car ce n’est peut être pas clair.
    J’utilise un CMS (WordPress) qui gère lui même les pages (elles n’existent pas réellement sous forme de fichier).
    Je ne peux donc pas mettre de fichier .htaccess dans des répertoires qui n’existent pas.
    D’où ma question :
    Peut-on à partir du fichier .htaccess qui se situe à la racine, empêcher tout accès uniquement à la page monsite.com/intra ?
    j’ai tenté « deny /intra/ from all », mais sans succès

    Existe-t-il une autre solution ?

    Cordialement.

    Répondre
    • Oui bien qur ne connaissant pas wordpress je suppose que comme sur joomla tu peux donner un niveau d’accès minimum pour accéder à la page que tu souhaites. Par exemple ta page d’accueil est en utilisateur lambda puis ta page protégée nécessite un niveau d’accès supérieur. Il en va de même pour les menus.
      Cdt

      Répondre

Répondre à Emmanuel Annuler la réponse

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.