Apache HTTP Server Version 1.3
Modul mod_access
Dieses Modul bietet Zugriffskontrolle an Hand von Client Hostname,
Client IP Adresse oder anderen Angaben einer Client Anfrage.
Status: Basis
Quellcode: mod_access.c
Modulname:
access_module
Zusammenfassung
Die von mod_access bereitgestellten Direktiven können sowohl in
<Directory>-, <Files>-, und <Location>- Abschnitten
als auch in .htaccess Dateien eingesetzt
werden, um den Zugriff auf bestimmte Bereiche des Servers zu beschränken.
Die Zugriffskontrolle kann an Hand von Client Hostname, Client IP Adresse oder
anderen Angaben einer Client Anfrage erfolgen, die über Umgebungsvariable erfaßt werden. Die Direktiven
Allow und Deny werden verwendet, um
Clients zum Zugriff zuzulassen oder vom Zugriff auszuschließen,
während mit der Order Direktive eine Voreinstellung des
Zugriffs und eine Bewertungsreihenfolge von
Allow und Deny festgelegt wird.
Zugriffsbeschränkung über Host und Benutzerauthentisierung
können in Kombination verwendet werden. In diesem Fall regelt die
Satisfy Direktive die Verknüpfung.
Generell beziehen sich Zugriffsbeschränkungen immer auf alle
Zugriffsarten (GET, PUT,
POST, etc). Dies ist meist das erwünschte Verhalten.
Es ist aber auch möglich, nur einen Teil der Zugriffsarten zu
beschränken und die anderen unverändert zuzulassen, indem die
Direktiven in einem <Limit> -Abschnitt
untergebracht werden.
Direktiven
Siehe auch Satisfy und Require.
Syntax: Allow from
all|host|env=env-variable
[host|env=env-variable] ...
Kontext: Verzeichnis,
.htaccess
AllowOverride: Limit
Status: Basis
Modul: mod_access
Die Allow Direktive legt fest, welcher Client
Zugriff auf einen Bereich des Servers erhält. Der Zugriff
läßt sich beschränken aufgrund des Hostnamens, einer
IP Adresse, eines Bereich von IP Adressen oder durch Angaben aus der
Anfrage des Clients, die in Umgebungsvariablen erfaßt
werden.
Das erste Argument der Direktive lautet immer
from. Das nachfolgende Argument kann drei Formen
annehmen. Die Angabe Allow from all erlaubt den
Zugriff durch beliebige Clients in Abhängigkeit von der
Benutzung der Direktiven Deny und Order,
wie unten noch ausgeführt wird. Um nur einem einzelnen Client
oder einer Gruppe von Clients Zugriff auf den Server zu
gewähren, kann der Hostname in einem der folgenden
Formate angegeben werden:
- Ein (partieller) Domain-Name
- Beispiel:
Allow from apache.org
Clients, bei denen der Name übereinstimmt oder mit dieser
Zeichenkette endet, erhalten Zugriff. Namensteile
müssen vollständig übereinstimmen, d.h. das Beispiel
erlaubt foo.apache.org den Zugriff, aber sperrt
fooapache.org. Diese Konfiguration veranlaßt
den Server zu einer doppelten DNS Auflösung
der IP Adresse des Clients, unabhängig von der Einstellung
der Direktive HostnameLookups
Die Rückwärts-Auflösung ermittelt aus der IP Adresse
den Namen. Die anschließende Vorwärts-Auflösung ermittelt
aus dem Namen noch einmal die IP Adresse. Nur wenn beide IP Adressen
konsistent sind und der Hostname paßt, wird der Zugriff
gewährt.
- Eine vollständige IP Adresse
- Beispiel:
Allow from 10.1.2.3
Ein Client mit dieser IP Adresse erhält Zugriff
- Eine partielle IP Adresse
- Beispiel:
Allow from 10.1
Die ersten 1 bis 3 Bytes einer IP Adresse, so dass eine
Beschränkung auf ein Subnetz möglich ist.
- Ein Paar aus Netzwerk/Netzmaske
- Beispiel:
Allow from
10.1.0.0/255.255.0.0
Das Netzwerk a.b.c.d und die Netzmaske w.x.y.z. Zur
fein-granulareren Einschränkung auf Subnetze.
(Apache ab Version 1.3)
- Eine Netzwerk/nnn CIDR Spezifikation
- Beispiel:
Allow from 10.1.0.0/16
Ähnlich wie im vorigen Beispiel, nur dass die Netzmaske
aus nnn führenden 1 Bits besteht. (Apache ab Version 1.3)
Hinweis: Die letzten drei Beispiele ergeben dieselben
Zugriffsbeschränkungen bezüglich der IP Adressen.
Die dritte Form von Argumenten der Allow
Direktive gestattet Serverzugriffe in Abhängigkeit vom
Vorhandensein bestimmter Umgebungsvariablen. Wenn Allow
from env=env-variable angegeben wird, ist
der Zugriff zulässig, falls die Umgebungsvariable
env-variable existiert. Der Server bietet
über das Modul mod_setenvif
eine einfache Möglichkeit, Umgebungsvariable in Abhängigkeit
von Angaben der Client Anfrage zu setzen. Deshalb kann über
diese Direktive ein Zugriffskontrolle in Abhängigkeit von solchen
Größen wie Client User-Agent (Browser
Typ), Referer, oder andere Angaben aus dem Kopf
der HTTP Anfrage erfolgen.
Beispiel:
SetEnvIf User-Agent ^KlopfKlopf/2.0 Sesam_oeffne_dich
<Directory /docroot>
Order Deny,Allow
Deny from all
Allow from env=Sesam_oeffne_dich
</Directory>
In diesem Beispiel erhält der Browser Zugriff, dessen
User-Agent Angabe mit der Zeichenkette KlopfKlopf/2.0
beginnt, während alle anderen abgewiesen werden.
Siehe auch Deny, Order und SetEnvIf.
Syntax: Deny from
all|host|env=env-variable
[host|env=env-variable] ...
Kontext: Verzeichnis,
.htaccess
AllowOverride: Limit
Status: Basis
Modul: mod_access
Durch diese Direktive kann der Zugriff für bestimmte
Hostnamen, IP Adressen oder bei Vorhandensein bestimmter
Umgebungsvariablen verweigert werden. Die Argumente der
Deny Direktive sind identisch zu denen der
Allow Direktive.
Siehe auch Allow, Order und SetEnvIf.
Syntax: Order
Reihenfolge
Voreinstellung: Order
Deny,Allow
Kontext: Verzeichnis,
.htaccess
AllowOverride: Limit
Status: Basis
Module: mod_access
Die Order Direktive legt die Voreinstellung
der Zugriffskontrolle und die Reihenfolge der Auswertung
von Allow und Deny
Direktiven fest.
Reihenfolge hat eine der folgenden Formen
- Deny,Allow
- Die
Deny Direktiven werden vor den
Allow Direktiven bewertet. Voreinstellung ist die
Erlaubnis des Zugriffs. Jedem Client ohne passende
Deny Direktive wird Zugriff zum Server
gewährt.
- Allow,Deny
- Die
Allow Direktiven werden vor den
Deny Direktiven bewertet. Voreinstellung ist die
Abweisung des Zugriffs. Jedem Client ohne passende
Allow Direktive oder mit passender
Deny Direktive wird der Zugriff zum Server
verweigert.
- Mutual-failure
- Nur Clients mit passendem
Allow und
ohne passendes Deny wird der Zugriff gewährt.
Diese Reihenfolge hat die gleiche Wirkung wie
Order Allow,Deny und ist eine veraltete
Schreibweise, die nicht mehr verwendet werden sollte.
Hinweis: Obige Schlüsselwörter dürfen nur durch Komma
getrennt werden, Leerzeichen dazwischen sind nicht zulässig.
In jedem Fall werden immer alle Allow und
Deny Anweisungen ausgewertet.
Im folgenden Beispiel werden alle Clients der Domain
apache.org zugelassen, allen anderen wird der Zugriff
verweigert.
Order Deny,Allow
Deny from all
Allow from apache.org
Im nächsten Beispiel werden alle Clients der Domain
apache.org zugelassen, außer diejenigen der Subdomain
foo.apache.org, die ausgesperrt bleiben. Alle anderen
außerhalb der Domain apache.org werden ebenso ausgesperrt,
da als Voreinstellung die Zugriffsverweigerung gewählt
wird.
Order Allow,Deny
Allow from apache.org
Deny from foo.apache.org
Ändert man in obigen Beispiel Order zu
Deny,Allow, ist der Zugriff niemals gesperrt.
Das passiert unabhängig von der tatsächlichen Reihenfolge
der Direktiven, weil Allow from apache.org
immer zuletzt ausgewertet wird und damit jede Beschränkung
durch Deny from foo.apache.org aufhebt.
Alle Clients außerhalb der Domain apache.org
werden ebenso zugelassen, da sich die Voreinstellung
auf Erlaubnis ändert.
Das Vorhandensein einer Order Direktive
kann den Zugriff auf den Server auch dann beeinflussen,
wenn gar keine Allow oder Deny
Direktive im Kontext verwendet wird, da es die Voreinstellung
verändert. Zum Beispiel:
<Directory /www>
Order Allow,Deny
</Directory>
sperrt jeglichen Zugriff zum Verzeichnis
/www, da die Voreinstellung die Verweigerung
des Zugriffs ist.
Die Order Direktive regelt die
Bewertungsreihenfolge für den jeweiligen Abschnitt der
Serverkonfiguration. Daraus ergibt sich zum Beispiel,
dass eine Allow oder Deny
Direktive innerhalb eines <Location>-Abschnitts
immer nach einer Allow oder Deny
Direktive innerhalb eines <Directory>-Abschnitts
oder einer .htaccess Datei ausgewertet wird,
unabhängig von der Einstellung der Order
Direktive. Details des Zusammenspiels finden sich unter
Wie Konfigurationsabschnitte
zusammenwirken.
Siehe auch: Deny und Allow.
Apache HTTP Server Version 1.3