Refuser tout, autoriser une seule adresse IP via htaccess

J'essaie de tout nier et de n'autoriser qu'une seule adresse IP. Mais, je voudrais que le htaccess suivant fonctionne pour cette seule adresse IP. Je ne trouve pas un moyen de faire fonctionner les deux: le refus de tout et n'en autoriser qu'un seul, plus les options suivantes:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /

    #Removes access to the system folder by users.
    #Additionally this will allow you to create a System.php controller,
    #previously this would not have been possible.
    #'system' can be replaced if you have renamed your system folder.
    RewriteCond %{REQUEST_URI} ^system.*
    RewriteRule ^(.*)$ /index.php?/$1 [L]

    #When your application folder isn't in the system folder
    #This snippet prevents user access to the application folder
    #Submitted by: Fabdrol
    #Rename 'application' to your applications folder name.
    RewriteCond %{REQUEST_URI} ^application.*
    RewriteRule ^(.*)$ /index.php?/$1 [L]

    #Checks to see if the user is attempting to access a valid file,
    #such as an image or css document, if this isn't true it sends the
    #request to index.php
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php?/$1 [L]
</IfModule>

<IfModule !mod_rewrite.c>
    # If we don't have mod_rewrite installed, all 404's
    # can be sent to index.php, and everything works as normal.
    # Submitted by: ElliotHaughin

    ErrorDocument 404 /index.php
</IfModule>

Y a-t-il un moyen de faire fonctionner cela?

132
demandé sur Makoto 2010-12-09 18:50:56

10 réponses

order deny,allow
deny from all
allow from <your ip> 
306
répondu b101101011011011 2015-11-28 19:00:44

Je sais que cette question a déjà une réponse acceptée, mais la documentation Apache dit:

Les directives Allow, Deny et Order, fournies par mod_access_compat, sont obsolètes et disparaîtront dans une future version. Vous devriez éviter les utiliser, et éviter les tutoriels obsolètes recommandant leur utilisation.

Donc, une réponse plus pérenne serait:

<RequireAll>
    Require ip xx.xx.xx.xx yy.yy.yy.yy
</RequireAll>

J'espère que j'ai aidé à empêcher cette page de devenir l'un de ces "tutoriels obsolètes". :)

78
répondu Rok Sprogar 2016-08-01 16:13:59

Cela peut être amélioré en utilisant la directive conçue pour cette tâche.

ErrorDocument 403 /specific_page.html
Order Allow,Deny
Allow from 111.222.333.444

Où 111.222.333.444 est votre adresse IP statique.

Lors de l'utilisation de la directive "Order Allow,Deny", les demandes doivent correspondre à Allow ou Deny, si aucune des deux n'est satisfaite, la demande est refusée.

Http://httpd.apache.org/docs/2.2/mod/mod_authz_host.html#order

37
répondu MickeyRoush 2012-12-18 18:06:38

Version légèrement modifiée de ce qui précède, y compris une page personnalisée à afficher pour ceux qui se voient refuser l'accès:

ErrorDocument 403 /specific_page.html
order deny,allow
deny from all
allow from 111.222.333.444

...et de cette façon, ces requêtes ne provenant pas de 111.222.333.444 verront specific_page.html

(poster cela comme commentaire semblait terrible parce que de nouvelles lignes se perdent)

29
répondu Oliver Maksimovic 2012-05-18 13:35:43

En améliorant un peu plus les réponses précédentes, une page de maintenance peut être affichée à vos utilisateurs pendant que vous effectuez des modifications sur le site:

ErrorDocument 403 /maintenance.html
Order Allow,Deny
Allow from #.#.#.#

Où:

6
répondu IvanRF 2018-06-01 15:48:25

Vous pouvez utiliser ce qui suit dans htaccess pour autoriser et refuser l'accès à votre site:

SetEnvIf remote_addr ^1\.2\3\.4\.5$ allowedip=1

Order deny,allow
deny from all
allow from env=allowedip

Nous définissons d'abord une variable env allowedip si l'adresse ip du client correspond au motif, si le motif correspond alors la variable env allowedip se voit attribuer la valeur 1 .

Dans l'étape suivante, nous utilisons les directives Allow,deny pour autoriser et refuser l'accès au site. Order deny,allow représente l'ordre de deny et allow . {[4] } cette ligne indique au serveur de refuser tout le monde. la dernière ligne allow from env=allowedip permet d'accéder à une seule adresse ip pour laquelle nous avons défini la variable env.

Remplacez 1\.2\.3\.4\.5 par votre adresse ip autorisée.

Réfrences:

2
répondu starkeen 2016-03-20 07:58:15

Je n'ai pas pu utiliser la méthode 403 parce que je voulais la page de maintenance et les images de page dans un sous-dossier sur mon serveur, donc j'ai utilisé l'approche suivante pour rediriger vers une "page de maintenance" pour tout le monde sauf une seule adresse IP *

RewriteEngine on
RewriteCond %{REMOTE_ADDR} !**.**.**.*
RewriteRule !^maintenance/ http://www.website.co.uk/maintenance/ [R=302,L]

Source: Création d'une page de maintien pour masquer votre blog WordPress

1
répondu METALFURY 2017-04-16 09:17:46

Vous pouvez avoir plus D'une adresse IP ou même un autre type d'autorisation comme user, hostname, ... plus d'infos ici https://www.askapache.com/htaccess/setenvif/

SetEnvIf remote_addr ^123.123.123.1$ allowedip=1
SetEnvIf remote_addr ^123.123.123.2$ allowedip=1
SetEnvIf remote_addr ^123.123.123.3$ allowedip=1
SetEnvIf remote_addr ^123.123.123.4$ allowedip=1

Order deny,allow
deny from all
allow from env=allowedip
1
répondu Meloman 2017-09-12 08:03:40

Juste en plus de la réponse @David Browns, si vous voulez bloquer une adresse IP, vous devez d'abord autoriser tout puis bloquer les adresses IP en tant que telles:

    <RequireAll>
      Require all granted
      Require not ip 10.0.0.0/255.0.0.0
      Require not ip 172.16.0.0/12
      Require not ip 192.168
    </RequireAll>

First line allows all
Second line blocks from 10.0.0.0 to 10.255.255.255
Third line blocks from 172.16.0.0 to 172.31.255.255
Fourth line blocks from 192.168.0.0 to 192.168.255.255

Vous pouvez utiliser l'une des notations mentionnées ci-dessus pour répondre à vos besoins CIDR.

1
répondu Rafa Carvalhido 2018-05-03 00:39:46

Si vous souhaitez utiliser mod_rewrite pour le contrôle d'accès vous pouvez utiliser comme agent utilisateur, http referrer, adresse distante, etc.

Exemple

RewriteCond %{REMOTE_ADDR} !=*.*.*.* #you ip address
RewriteRule ^$ - [F]

Réfrences:

0
répondu Abhishek Gurjar 2017-02-07 09:52:00