Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
Nächste Überarbeitung | Vorherige Überarbeitung | ||
lpi2:apache_zugriffskontrolle [2014/09/23 08:18] 127.0.0.1 Externe Bearbeitung |
lpi2:apache_zugriffskontrolle [2022/03/31 13:51] ingo_wichmann [Benutzerauthentifizierung] |
||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | ====== Einfache Zugriffskontrolle ====== | + | ====== Zugriffskontrolle ====== |
- | ===== Zugriffsteuerung per IP/Hostname ===== | + | ===== Apache 2.4 ===== |
+ | ==== Auslagerung in .htaccess ==== | ||
+ | Mit Hilfe von ''AllowOverride'' können Einstellungen ausgelagert werden: | ||
- | In Apache kann mittels | + | ''/etc/apache2/conf-enabled/intern.conf'': (Debian ab 8) |
- | Fall 1: | + | ''/etc/apache2/conf.d/intern.conf'': (SuSE) |
+ | |||
+ | ''/etc/httpd/conf.d/intern.conf'': (CentOS) | ||
<file> | <file> | ||
- | order deny,allow | + | LogLevel warn authz_core:debug |
+ | Alias /intern /srv/www/intern | ||
+ | |||
+ | <Directory /srv/www/intern> | ||
+ | AllowOverride AuthConfig | ||
+ | </Directory> | ||
</file> | </file> | ||
- | Per Directory / Location / File | + | mkdir -p /srv/www/intern |
- | <file> | + | apachectl configtest |
- | <Directory /srv/www/htdocs/intern> | + | apachectl graceful |
- | order deny,allow | + | |
- | deny from All | + | Ist jetzt der Zugriff auf Dateien im Verzeichnis ''/srv/www/intern'' erlaubt? |
- | allow from 10.0.0.0/24 .linuxhotel.de 127.0.0.1 | + | |
- | </Directory> | + | ==== .htaccess anlegen ==== |
+ | |||
+ | <file txt /srv/www/intern/.htaccess> | ||
+ | Require all denied | ||
</file> | </file> | ||
- | Erst werden die deny-Regeln ausgewertet, danach die allow-Regeln, falls keine Regel greift gilt allow | + | Ist der Zugriff auf Dateien im Verzeichnis ''/srv/www/intern'' erlaubt? |
+ | ==== RequireAny vs. RequireAll vs. RequireNone ==== | ||
+ | === RequireAny === | ||
- | Fall 2: | + | <file txt /srv/www/intern/.htaccess> |
- | <file> | + | Require ip 192.168.1 |
- | order allow,deny | + | Require all denied |
</file> | </file> | ||
- | <file> | + | ist das selbe wie: |
- | <Directory /srv/www/htdocs/intern> | + | <file txt /srv/www/intern/.htaccess> |
- | order allow,deny | + | <RequireAny> |
- | allow from 10.0.0.0/24 .linuxhotel.de 127.0.0.1 | + | Require ip 192.168.1 |
- | </Directory> | + | Require all denied |
+ | </RequireAny> | ||
</file> | </file> | ||
- | Erst werden die allow-Regeln ausgewertet, danach die deny-Regeln, falls keine Regel greift gilt deny | + | Wenn der Client aus dem Subnetz 192.168.1 kommt, dann darf er zugreifen. Sonst nicht. |
- | ===== Eigene Projekte / Configdateien ===== | + | === RequireAll === |
+ | <file txt /srv/www/intern/.htaccess> | ||
+ | <RequireAll> | ||
+ | Require ip 192.168.1 | ||
+ | </RequireAll> | ||
+ | </file> | ||
- | openSuSE: | + | Wenn der Client aus dem Subnetz 192.168.1 kommt, dann darf er zugreifen. Sonst nicht. |
- | Am besten die eigenen Konfigurationen in folgendem Pfad ablegen mit der Endung .conf | + | * [[https://httpd.apache.org/docs/2.4/howto/access.html|Apache Dokumentation zu Zugriffskontrolle]] |
- | ''/etc/apache2/conf.d/wiki.conf'' | + | === RequireNone === |
+ | <file txt /srv/www/intern/.htaccess> | ||
+ | <RequireNone> | ||
+ | Require ip 192.168.1 | ||
+ | </RequireNone> | ||
+ | </file> | ||
- | ===== Auslagerung in .htaccess ===== | + | ErrorLog beachten! |
- | In Kontextdirektiven lassen sich die Konfigurationswerte durch allowoverride auslagern. | + | === Verschachtelte Blöcke aus All, Any und None === |
- | + | RequireNone = Verneinung dessen was innerhalb des Blocks steht - "darf nicht erfüllt sein" | |
- | z.B.: ''/etc/apache2/conf.d/wiki.conf'' | + | <file txt /srv/www/intern/.htaccess> |
+ | <RequireAll> | ||
+ | <RequireAny> | ||
+ | Require ip 192.168.1 | ||
+ | Require ip 10.0.0.0/24 | ||
+ | </RequireAny> | ||
+ | <RequireNone> | ||
+ | Require ip 192.168.1.208 | ||
+ | </RequireNone> | ||
+ | </RequireAll> | ||
+ | </file> | ||
+ | === Auswertungsreihenfolge der Sektionen === | ||
<file> | <file> | ||
- | <Directory /srv/www/htdocs/wiki> | + | <Files "*"> |
- | + | Require all granted | |
- | Allowoverride All | + | </Files> |
- | # Allowoverride Auth | + | <Directory /srv/www/intern> |
+ | Require all denied | ||
</Directory> | </Directory> | ||
</file> | </file> | ||
- | Die Datei ''/srv/www/htdocs/wiki/.htaccess'' hat folgenden Inhalt: | + | ''Files'' wird nach ''Directory'' ausgewertet und gewinnt -> Zugriff auf Dateien im Verzeichnis ''/srv/www/intern'' ist erlaubt |
- | <file> | + | * [[https://httpd.apache.org/docs/2.4/sections.html#merging|Apache Dokumentation zu Sektionen]] |
- | order allow,deny | + | |
- | allow from 192.168. 127. | + | |
- | </file> | + | |
- | ===== Benutzerauthentifizierung ===== | + | ==== Benutzerauthentifizierung ==== |
Einfache Benutzeridentifikation mittels Passwortdatei | Einfache Benutzeridentifikation mittels Passwortdatei | ||
- | ==== Anlegen der Passwortdatei ==== | + | === Anlegen der Passwortdatei === |
openSuSE (12.3): | openSuSE (12.3): | ||
- | htpasswd2 -c .htpasswd heinz | + | htpasswd2 -c /srv/www/.htpasswd heinz |
debian (6): | debian (6): | ||
- | htpasswd -c .htpasswd heinz | + | htpasswd -c /srv/www/.htpasswd heinz |
- | Achtung Erweiterung der Datei mittels | + | Achtung: Die Datei ''/srv/www/.htpasswd'' wird dabei überschrieben! |
+ | === weitere Benutzer anlegen === | ||
openSuSE (12.3): | openSuSE (12.3): | ||
htpasswd2 .htpasswd elke | htpasswd2 .htpasswd elke | ||
Zeile 82: | Zeile 116: | ||
htpasswd .htpasswd elke | htpasswd .htpasswd elke | ||
- | In der Kontextdirektive oder im ''.htaccess'' folgende Optionen setzen | + | === Konfiguration === |
+ | In der Kontextdirektive oder in der ''.htaccess'' folgende Optionen setzen: | ||
- | Beispieldatei ''.htaccess'' | ||
<file> | <file> | ||
AuthType Basic | AuthType Basic | ||
AuthName "Bitte Username und Passwort" | AuthName "Bitte Username und Passwort" | ||
AuthBasicProvider file | AuthBasicProvider file | ||
- | AuthUserFile /srv/www/htdocs/wiki/.htpasswd | + | AuthUserFile /srv/www/.htpasswd |
Require valid-user | Require valid-user | ||
</file> | </file> | ||
==== Nutzung einer Gruppendatei ==== | ==== Nutzung einer Gruppendatei ==== | ||
+ | Modul laden: | ||
+ | a2enmod authz_groupfile | ||
+ | service apache2 restart | ||
- | Aufbau der Gruppendatei ''/srv/www/htdocs/wiki/.htgroup'' | + | Aufbau der Gruppendatei ''/srv/www/.htgroup'' |
<file> | <file> | ||
Zeile 108: | Zeile 145: | ||
AuthName "Bitte Username und Passwort" | AuthName "Bitte Username und Passwort" | ||
AuthBasicProvider file | AuthBasicProvider file | ||
- | AuthUserFile /srv/www/htdocs/wiki/.htpasswd | + | AuthUserFile /srv/www/.htpasswd |
- | AuthGroupFile /srv/www/htdocs/wiki/.htgroup | + | AuthGroupFile /srv/www/.htgroup |
Require group gf | Require group gf | ||
</file> | </file> | ||