it-swarm-eu.dev

Refuser tout, n'autoriser qu'une seule adresse IP via htaccess

J'essaie de tout nier et n'autorise qu'une seule adresse IP. Mais, j'aimerais que le htaccess suivant fonctionne pour cette adresse IP unique. Je ne trouve pas le moyen de faire fonctionner les deux: refuser tout et ne permettre qu'un, 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 at-il un moyen de faire ce travail?

141
punkbit
order deny,allow
deny from all
allow from <your ip> 
328
b101101011011011

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

Les directives Allow, Deny et Order fournies par mod_access_compat, sont obsolètes et disparaîtront dans une version ultérieure. Tu devrais éviter utilisez-les et évitez les didacticiels obsolètes qui en recommandent l’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". :)

86
Rok Sprogar

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.

Lorsque vous utilisez la directive "Order Allow, Deny", les demandes doivent correspondre aux options Autoriser ou Refuser. Si aucune de ces conditions n'est remplie, la demande est refusée.

http://httpd.Apache.org/docs/2.2/mod/mod_authz_Host.html#order

37
MickeyRoush

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

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

... et qu'ainsi les requêtes ne venant pas de 111.222.333.444 verront specifique_page.html

(poster ceci en tant que commentaire avait l'air horrible parce que de nouvelles lignes sont perdues)

29

Pour améliorer un peu plus les réponses précédentes, une page de maintenance peut être affichée à vos utilisateurs pendant que vous apportez des modifications au site:

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

Où:

7
IvanRF

Vous pouvez utiliser les éléments suivants 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 modèle, si le modèle correspond, la variable env allowedip reçoit 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. deny from all 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éférences:

2
starkeen

En plus de la réponse de @David Brown, si vous souhaitez bloquer une IP, vous devez d'abord autoriser tout, puis bloquer les 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 n’importe laquelle des notations mentionnées ci-dessus pour répondre à vos besoins en matière de CIDR.

1
Rafa Carvalhido

Je ne pouvais pas utiliser la méthode 403 parce que je voulais la page de maintenance et les images de la page dans un sous-dossier de mon serveur. J'ai donc utilisé l'approche suivante pour rediriger vers une "page de maintenance" destinée à 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 d'attente pour masquer votre blog WordPress

1
METALFURY

Vous pouvez avoir plusieurs adresses IP ou même un autre type d’autorisations: utilisateur, nom d’hôte, ... 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
Meloman

Si vous souhaitez utiliser mod_rewrite pour le contrôle d'accès, vous pouvez utiliser des conditions telles que l'agent utilisateur, le référent http, l'add distant, etc.

Exemple 

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

Références:

0
Abhishek Gurjar