it-swarm.com.de

Alle verweigern, nur eine IP durch htaccess zulassen

Ich versuche alles zu verweigern und nur eine einzige IP zuzulassen. Ich möchte jedoch, dass der folgende Zugang für diese einzelne IP-Adresse funktioniert. Ich finde keinen Weg, um beides arbeiten zu lassen: Alle ablehnen und nur einen zulassen, plus die folgenden Optionen:

<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>

Gibt es eine Möglichkeit, dies zu erreichen?

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

Ich weiß, dass diese Frage bereits eine akzeptierte Antwort hat, aber die Apache-Dokumentation sagt:

Die Direktiven Allow, Deny und Order, die von mod_access_compat bereitgestellt werden, sind veraltet und werden in einer zukünftigen Version wegfallen. Du solltest vermeiden Verwenden Sie sie und vermeiden Sie veraltete Tutorials, in denen sie empfohlen werden.

Eine zukunftsfähigere Antwort wäre also:

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

Ich habe geholfen, zu verhindern, dass diese Seite zu einem dieser "veralteten Tutorials" wird. :)

86
Rok Sprogar

Dies kann durch Verwendung der für diese Aufgabe entwickelten Direktive verbessert werden.

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

Dabei ist 111.222.333.444 Ihre statische IP-Adresse.

Bei Verwendung der Anweisung "Order Allow, Deny" müssen die Anforderungen entweder Allow oder Deny entsprechen. Wenn keine der Bedingungen erfüllt ist, wird die Anfrage abgelehnt.

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

37
MickeyRoush

Etwas modifizierte Version des obigen, einschließlich einer benutzerdefinierten Seite, die denjenigen angezeigt wird, denen der Zugriff verweigert wird:

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

... und auf diese Weise werden die Anforderungen, die nicht von 111.222.333.444 stammen, auf Specific_page.html gesetzt

(Dies als Kommentar zu veröffentlichen, sah schrecklich aus, weil neue Zeilen verloren gingen)

29

Um die vorherigen Antworten ein wenig zu verbessern, kann Ihren Benutzern eine Wartungsseite angezeigt werden, während Sie Änderungen an der Site vornehmen:

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

Woher:

7
IvanRF

Sie können Folgendes in htaccess verwenden, um den Zugriff auf Ihre Site zuzulassen und zu verweigern:

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

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

Wir setzen zuerst eine Umgebungsvariable allowip, wenn die IP-Adresse des Clients mit dem Muster übereinstimmt. Wenn das Muster übereinstimmt, wird der Umgebungsvariable allowip der Wert 1 zugewiesen.

Im nächsten Schritt verwenden wir Allow, Ablehnungsrichtlinien, um den Zugriff auf die Site zuzulassen und zu verweigern. Order deny,allow steht für die Reihenfolge von deny und allow. deny from all diese Zeile weist den Server an, alle zu sperren. Die letzte Zeile allow from env=allowedip ermöglicht den Zugriff auf eine einzelne IP-Adresse, für die die env-Variable festgelegt wird.

Ersetzen Sie 1\.2\.3\.4\.5 durch Ihre zulässige IP-Adresse.

Referenzen:

2
starkeen

Wenn Sie zusätzlich zu @David Browns Antwort eine IP-Adresse blockieren möchten, müssen Sie zunächst alle zulassen und dann die IP-Adressen als solche blockieren:

    <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

Sie können eine der oben genannten Notizen verwenden, um Ihre CIDR-Anforderungen zu erfüllen.

1
Rafa Carvalhido

Ich konnte die 403-Methode nicht verwenden, da ich die Wartungsseite und die Seitenbilder in einem Unterordner auf meinem Server haben wollte. Verwenden Sie den folgenden Ansatz, um auf eine "Wartungsseite" für alle Benutzer umzuleiten, außer einer einzelnen IP-Adresse.

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

Quelle: Erstellen einer Holding-Seite zum Ausblenden Ihres WordPress-Blogs

1
METALFURY

Sie können mehr als eine IP oder auch eine andere Art von Erlaubnis haben, wie Benutzer, Hostname, ... Weitere Informationen hier 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

Wenn Sie mod_rewrite für die Zugriffskontrolle verwenden möchten, können Sie Bedingungen wie Benutzeragenten, HTTP-Referrer, Remote-ADR usw. verwenden.

Beispiel 

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

Referenzen:

0
Abhishek Gurjar