Wie benötige ich einen IP-Bereich anstelle von 1 IP?


20

Meine IP-Änderungen haben eine andere D-Klasse, daher möchte ich einen Bereich festlegen:

123.123.123.xxx wobei das letzte Segment 0-255 sein kann.

Im Moment sagt Apache:

<RequireAny>
   Require ip 127.0.0.1
   Require ip ::1
</RequireAny>

Antworten:


22

Erstens gehe ich davon aus, dass Sie Apache 2.4 trotz des "apache-2.2" -Tags meinen, da die Syntax, die Sie gepostet haben, von 2.4 ist.

Aus der Apache-Dokumentation:

ip.address ist eine IP-Adresse, eine Teil-IP-Adresse, ein Netzwerk / Netzmasken-Paar oder eine Netzwerk / nnn-CIDR-Spezifikation.

Ich nehme an, Sie meinen, Sie möchten eine / 24 zulassen, da Klasse D Multicast-Adressen sind und klassisches Networking in den 90er Jahren verstarb. Um eine / 24 zuzulassen, können Sie eine der folgenden Optionen verwenden:

Require ip 123.123.123
Require ip 123.123.123.0/255.255.255.0
Require ip 123.123.123.0/24

Persönlich finde ich das Letzte weniger zweideutig als das Erste und leichter zu lesen als das Zweite.

Sie finden diesen Abschnitt der Dokumentation möglicherweise hilfreich: http://httpd.apache.org/docs/2.4/howto/access.html#host


Das funktioniert also nicht mit Apache 2.2? phpMyAdmin funktioniert sowohl auf 2.2 als auch auf 2.4 und ich habe gerade nachgesehen, was auf diesem Server läuft und es ist 2.2
user281497

Ich habe diese Syntax in 2.2-Konfigurationsdateien noch nie gesehen, es sei denn, es wurde etwas zurückportiert, um sie zu aktivieren.
Fukawi2

@ fukawi2 - Ja, du hast natürlich recht. Für user281497: Während RequireApache 2.2 nur eingeschränkte Unterstützung bietet, unterstützt Apache 2.2 weder Require ipnoch <RequireAny>. Wie in der Übersicht der neuen Funktionen in Apache HTTP Server 2.4 erwähnt , kann die erweiterte Berechtigungslogik jetzt mithilfe der RequireDirektive und der zugehörigen Container-Direktiven angegeben werden, z <RequireAll>. Ersteres gehört zu den Verbesserungen, die Apache 2.4 hinzugefügt hat.
Colt

14

In Apache 2.2 und darunter können Sie arbeiten mit:

Order deny,allow
Deny from all
Allow from 24.18    # allow access from home
Allow from 162.12   # allow access from work

in Ihrer .htacess, direkt auf der Basisebene (nicht in einer <directive>).

Ab Apache 2.4 und höher:

<RequireAny>
    #IPv4 range at my work
    Require ip 207.100
    #IPv4 range I usually get through my mobile provider
    Require ip 29.11
    #IPv6 from home
    Require ip 2a02:4126:2aa4::/48  
</RequireAny>

(alle zahlen fiktiv, keine sorge ;-).

Ich benutze dies seit vielen Jahren, um meine Backend-Ordner gegen 99% der potenziellen Benutzer abzuschirmen. (Funktioniert sehr gut, es sei denn, Sie sind ein begeisterter Blogger auf Reisen. Wenn Sie ein Google Mail-Nutzer sind: "Letzte Kontoaktivität" Der Link ganz unten ist eine bequeme Methode, um Ihre eigenen "IP-Gewohnheiten" herauszufinden.)


Was ist der Unterschied zwischen Require ip 2a02:4126:2aa4::/48und Require ip 2a02:4126:2aa4::? Beide erzeugen für mich keine Syntaxfehler, sondern nur die ersteren funktionieren.
Geremia

3
Liegt es daran, dass 2a02: 4126: 2aa4 :: = 2a02: 4126: 2aa4: 0000: 0000: 0000: 0000: 0000, während 2a02: 4126: 2aa4 :: / 48 mit allen Adressen übereinstimmt, die mit 2a02: 4126: 2aa4 beginnen?
Geremia

1

Anbetracht dessen , dass Sie jetzt 2.2 mit Apache bestätigt haben , Apache 2.2 nicht unterstützt entweder Require ipoder <RequireAny>. Wie in der Übersicht der neuen Funktionen in Apache HTTP Server 2.4 erwähnt , kann die erweiterte Berechtigungslogik jetzt mithilfe der RequireDirektive und der zugehörigen Container-Direktiven angegeben werden, z<RequireAll> . Ersteres gehört zu den Verbesserungen, die Apache 2.4 hinzugefügt hat.

Um mit diesem Problem in Apache 2.2 fertig zu werden, müssen Sie wahrscheinlich Folgendes tun:

Order allow,deny
Allow from 123.123.123    

Damit wird der gesamte Bereich angegeben.


1

Hinweis: Ich lasse dies hier, da andere davon profitieren könnten. Es ist keine direkte Antwort auf die Frage.

Beispielsweise:

IP 192.168.100.0/22 ​​erforderlich

funktioniert, während

IP 192.168.100.0/22 ​​#localnetwork erforderlich

scheitert!

Neustart der httpd-Ausgaben:

Der Auftrag für httpd.service ist fehlgeschlagen, da der Steuerprozess mit Fehlercode beendet wurde. Weitere Informationen finden Sie unter "systemctl status httpd.service" und "journalctl -xe".

Es scheint also, dass in dieser Zeile keine Kommentare erlaubt sind .


1
Kommentare sind in keiner Konfigurationszeile zulässig, siehe httpd.apache.org/docs/2.4/configuring.html : "Zeilen, die mit dem Hash-Zeichen" # "beginnen, gelten als Kommentare und werden ignoriert. Kommentare dürfen nicht eingeschlossen werden die gleiche Zeile wie eine Konfigurationsanweisung. "
Patrick Mevzek

0

Die Require- Direktive von Apache wird während der Autorisierungsphase verwendet, um sicherzustellen, dass einem Benutzer der Zugriff auf eine Ressource gestattet oder verweigert wird. mod_authz_host erweitert die Berechtigungsarten um ip, host, forward-dns und local. Andere Autorisierungstypen können ebenfalls verwendet werden, erfordern jedoch möglicherweise das Laden zusätzlicher Autorisierungsmodule.

Diese Berechtigungsanbieter beeinflussen, welche Hosts auf einen Bereich des Servers zugreifen können. Der Zugriff kann über den Hostnamen, die IP-Adresse oder den IP-Adressbereich gesteuert werden.

Seit v2.4.8 erfordern Ausdrücke, die vom Host unterstützt werden, Anweisungen. IP erforderlich

Der IP-Provider ermöglicht die Steuerung des Zugriffs auf den Server anhand der IP-Adresse des Remote-Clients. Wenn IP-Adresse erforderlich angegeben ist, wird der Anforderung der Zugriff gewährt, wenn die IP-Adresse übereinstimmt.

Eine vollständige IP-Adresse:

Require ip 10.1.2.3
Require ip 192.168.1.104 192.168.1.205

Eine IP-Adresse eines Hosts erlaubte den Zugriff

Eine teilweise IP-Adresse:

Require ip 10.1
Require ip 10 172.20 192.168.2

Die ersten 1 bis 3 Bytes einer IP-Adresse zur Einschränkung des Subnetzes.

Ein Netzwerk / Netzmasken-Paar:

Require ip 10.1.0.0/255.255.0.0

Ein Netzwerkabcd und eine Netzmaske wxyz Für eine feinkörnigere Subnetzbeschränkung.

Eine Netzwerk / nnn-CIDR-Spezifikation:

Require ip 10.1.0.0/16

Ähnlich wie im vorherigen Fall, außer dass die Netzmaske aus nnn höherwertigen 1-Bits besteht.

Beachten Sie, dass die letzten drei Beispiele genau mit derselben Gruppe von Hosts übereinstimmen.

IPv6-Adressen und IPv6-Subnetze können wie folgt angegeben werden:

Require ip 2001:db8::a00:20ff:fea7:ccea
Require ip 2001:db8:1:1::a
Require ip 2001:db8:2:1::/64
Require ip 2001:db8:3::/48

Hinweis: Da die IP-Adressen beim Start analysiert werden, werden Ausdrücke zum Zeitpunkt der Anforderung nicht ausgewertet.

Quelle: https://httpd.apache.org/docs/trunk/mod/mod_authz_host.html


5
Bitte kopieren und fügen Sie nicht nur die Arbeit anderer Leute ein. Dies nennt man Plagiat.
Gerald Schneider
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.