mod_access Zugriff auf den Inhalt des Webservers auf Basis von Hostnamen, IP-Adressen oder anderen Charakeristka der Client-Anfrage Base mod_access.c access_module Nur bis einschließlich Version 2.0

Die Direktiven des Moduls mod_access werden in den Abschnitten Directory, Files und Location sowie in den .htaccess-Dateien für die Zugriffskontrolle auf bestimmte Teile des Servers benutzt. Der Zugriff kann über den Hostnamen, die IP-Adresse oder andere Charakeristka der Client-Anfrage gesteuert werden, die in Umgebungsvariablen enthalten sind. Die Anweisungen Allow und Deny geben an, welchen Clients der Zugriff auf den Server gestattet ist, während die Order-Anweisung den standardmäßigen Zugriff und das Zusammenwirken der Anweisungen Allow und Deny mit anderen Direktiven festlegt.

Die auf Hosts und Passwörtern basierende Zugriffskontrolle kann parallel implementiert werden. In diesem Fall legt die Satisfy-Anweisung das Zusammenwirken beider Verfahren fest.

Im Allgemeinen gelten Zugriffseinschränkungen für alle Zugriffsmethoden (GET, PUT, POSTusw.), was meist auch gewünscht wird. In manchen Situationen ist es aber erforderlich, nur für bestimmte Methoden Zugriffseinschränkungen vorzunehmen. Hierfür werden die Direktiven in einen Limit-Abschnitt gesetzt.

Satisfy Require Allow Gibt an, welche Hosts auf einen Serverbereich zugreifen dürfen. Allow from all|Host|env=Umgebungsvariable [Host|env=Umgebungsvariable] ... directory.htaccess Limit

Die Allow-Anweisung legt fest, welche Hosts auf einen Serverbereich zugreifen können. Der Zugriff kann über den Hostnamen, die IP-Adresse, den IP-Adressbereich oder andere Angaben aus den Umgebungsvariablen der Client-Anfrage gesteuert werden.

Das erste Argument dieser Anweisung ist immer das from-Argument. Darauf können drei unterschiedliche Argumente folgen. Das Argument Allow from all gewährt allen Hosts Zugriff. Die Anweisungen Deny und Order werden weiter unten erläutert. Um nur bestimmten Hosts oder Host-Gruppen den Zugriff auf den Server zu gestatten, kann Host wie folgt angegeben werden:

Ein (partieller) Domänenname
Beispiel: Allow from apache.org

Hosts mit übereinstimmenden Namen oder Namensendungen dürfen zugreifen. Dabei werden nur vollständige Namensbestandteile berücksichtigt, was bedeutet, dass im oben aufgeführten Beispiel der Name foo.apache.org aber nicht der Name fooapache.org als Übereinstimmung gilt. Bei dieser Konfiguration führt der Apache eine doppelt reversive DNS-Suche für die IP-Adresse des Clients durch, ungeachtet der Anweisung HostnameLookups. Mit der reversiven DNS-Suche nach der IP-Adresse soll der damit verbundene Hostname gefunden und mit dem anschließenden Suchlauf in umgekehrten Reihenfolge die Übereinstimmung mit der ursprünglichen IP-Adresse ermittelt werden. Nur bei Übereinstimmung beider ist das Ergebis konsistent und den Hosts wird Zugriff gewährt.

Eine vollständige IP-Adresse
Beispiel: Allow from 10.1.2.3

Die IP-Adresse eines Host mit Zugriff.

Eine partielle IP-Adresse
Beispiel: Allow from 10.1

Die ertsen drei Byte einer IP-Adresse für Subnet-Einschränkungen.

Ein Netzwerk-/Netmask-Paar
Beispiel: Allow from 10.1.0.0/255.255.0.0

Netzwerk a.b.c.d und Netmask w.x.y.z. Für eine feiner eingestellte Subnet-Einschränkung.

Eine Netzwerk-/nnn-CIDR-Angabe
Beispiel: Allow from 10.1.0.0/16

Gleicht dem letzten Beispiel, die Netmask besteht aber aus nnn oberen 1-Bits.

Die drei letzten Beispiele gelten für genau die gleichen Hosts.

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

Allow from fe80::a00:20ff:fea7:ccea
Allow from fe80::a00:20ff:fea7:ccea/10

Das dritte Argument der Allow-Direktive ermöglicht eine Steuerung des Zugriffs auf den Server über eine Umgebungsvariable. Wird Allow env=Umgebungsvariable angegeben, wird der Zugriff gewährt, falls die Umgebungsvariable vorhanden ist. Der Server lässt ein flexibles Setzen von Umgebungsvariablen basierend auf den Angaben der Client-Anfrage mit den Anweisungen des Moduls mod_setenvif zu. Deshalb kann mit dieser Anweisung der Zugriff über Angaben wie User-Agent des Clients (Browsertyp), Referer oder andere Felder des HTTP-Anfrage-Headers gesteuert werden.

Beispiel: SetEnvIf User-Agent ^KnockKnock/2\.0 let_me_in
<Directory /docroot>
Order Deny,Allow
Deny from all
Allow from env=let_me_in
</Directory>

In diesem Beispiel erhalten Browser Zugriff, deren User-Agent-Zeichenkette mit KnockKnock/2.0 beginnt, während alle übrigen zurückgewiesen werden.

Deny Legt fest, welchen Hosts der Zugriff auf den Server verwehrt wird. Deny from all|Host|env=Umgebungsvariable [Host|env=Umgebungsvariable] ... directory.htaccess Limit

Mit dieser Direktive kann der Zugriff auf den Server über den Hostnamen, die IP-Adresse oder über Umgebungsvariablen eingeschränkt werden. Die Argumente für die Deny-Anweisung sind die gleichen wie bei der Allow-Anweisung.

Order Legt die Voreinstellung und die Reihenfolge fest, in welcher Allow und Deny ausgewertet werden. Order Reihenfolge Order Deny,Allow directory.htaccess Limit

Die Order-Direktive legt die Standardvorgabe und die Reihenfolge fest, in der die Anweisungen Allow und Deny ausgewertet werden. Die Reihenfolge kann sein:

Deny,Allow
Die Deny-Anweisungen werden vor den Allow-Anweisungen ausgewertet. Der Zugriff ist standardmäßig gestattet. Jeder Client, für den es keine Deny-Direktive oder eine Allow-Direktive gibt, hat Zugriff auf den Server.
Allow,Deny
Die Allow-Direktiven werden vor den Deny-Direktiven ausgewertet. Der Zugriff wird standardmäßig verweigert. Jedem Client, für den es keine Allow-Direktive oder eine Deny-Direktive gibt, wird der Zugriff auf den Server verweigert.
Mutual-failure
Nur die Hosts, die in der Allow-Liste und nicht in der Deny-Liste erscheinen, erhalten Zugriff. Diese Reihenfolge führt zum gleichen Ergebnis wie Order Allow,Deny und wird zu Gunsten dieser abgelehnt.

Schlüsselwörter dürfen nur durch ein Komma getrennt werde. Leerstellen sind nicht zulässig. Beachten Sie, dass in allen Fällen jede Allow- und jede Deny-Anweisung ausgewertet wird.

Im folgenden Beispiel haben alle Hosts der Domäne apache.org Zugriff. Allen übrigen Hosts wird der Zugriff verweigert.

Order Deny,Allow
Deny from all
Allow from apache.org

Im nächsten Beispiel wird allen Hosts der Domäne apache.org Zugriff gewährt. Ausgenommen sind Hosts, die zu Subdomäne foo.apache.org gehören. Alle Hosts außerhalb der Domäne apache.org domain haben infolge der Voreinstellung deny keinen Zugriff auf den Server.

Order Allow,Deny
Allow from apache.org
Deny from foo.apache.org

Wird die Order-Anweisung aus dem letzten Beispiel jedoch mit Deny,Allow angegeben, dann erhalten alle Hosts Zugriff. Dazu kommt es, weil unabhängig von der tatsächlichen Reihenfolge der Anweisungen in der Konfigurationsdatei, Allow from apache.org zuletzt ausgewertet wird und Deny from foo.apache.org überschreibt. Allen Hosts, die nicht zur Domäne apache.org gehören, wird ebenfalls Zugriff gewährt, weil allow zur Voreinstellung wird.

Das Vorhandensein einer Order-Anweisung kann den Zugriff auf einen Teil des Servers beeinflussen, selbst wenn eine begleitende Allow- und Deny-Anweisung fehlt, da sie Auswirkungen auf den standardmäßigen Zugriff hat. Ein Beispiel:

<Directory /www>
Order Allow,Deny
</Directory>

Jeder Zugriff auf das Verzeichnis /www wird verweigert, weil standardmäßig die Einstellung deny gilt.

Die Order-Anweisung regelt während jeder Phase der Konfigurationsverarbeitung durch den Server die Reihenfolge für die Verarbeitung der Anweisungen. Das führt zum Beispiel dazu, dass eine Allow- oder eine Deny-Anweisung aus einem Location-Abschnitt unabhängig von der Order-Anweisung immer nach einer Allow- oder Deny-Anweisung aus einem Directory-Abschnitt oder einer .htaccess-Datei ausgewertet wird. Einzelheiten zur Zusammenstellung der Konfigurationsabschnitt finden Sie unter Konfigurationsabschnitte.