Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung | Vorherige Überarbeitung | ||
lpi2:apache_zugriffskontrolle [2019/04/07 20:18] |
lpi2:apache_zugriffskontrolle [2022/03/31 13:51] (aktuell) ingo_wichmann [Benutzerauthentifizierung] |
||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
+ | ====== Zugriffskontrolle ====== | ||
+ | ===== Apache 2.4 ===== | ||
+ | ==== Auslagerung in .htaccess ==== | ||
+ | Mit Hilfe von ''AllowOverride'' können Einstellungen ausgelagert werden: | ||
+ | |||
+ | ''/etc/apache2/conf-enabled/intern.conf'': (Debian ab 8) | ||
+ | |||
+ | ''/etc/apache2/conf.d/intern.conf'': (SuSE) | ||
+ | |||
+ | ''/etc/httpd/conf.d/intern.conf'': (CentOS) | ||
+ | <file> | ||
+ | LogLevel warn authz_core:debug | ||
+ | Alias /intern /srv/www/intern | ||
+ | |||
+ | <Directory /srv/www/intern> | ||
+ | AllowOverride AuthConfig | ||
+ | </Directory> | ||
+ | </file> | ||
+ | |||
+ | mkdir -p /srv/www/intern | ||
+ | |||
+ | apachectl configtest | ||
+ | apachectl graceful | ||
+ | |||
+ | Ist jetzt der Zugriff auf Dateien im Verzeichnis ''/srv/www/intern'' erlaubt? | ||
+ | |||
+ | ==== .htaccess anlegen ==== | ||
+ | |||
+ | <file txt /srv/www/intern/.htaccess> | ||
+ | Require all denied | ||
+ | </file> | ||
+ | |||
+ | Ist der Zugriff auf Dateien im Verzeichnis ''/srv/www/intern'' erlaubt? | ||
+ | |||
+ | ==== RequireAny vs. RequireAll vs. RequireNone ==== | ||
+ | === RequireAny === | ||
+ | |||
+ | <file txt /srv/www/intern/.htaccess> | ||
+ | Require ip 192.168.1 | ||
+ | Require all denied | ||
+ | </file> | ||
+ | |||
+ | ist das selbe wie: | ||
+ | <file txt /srv/www/intern/.htaccess> | ||
+ | <RequireAny> | ||
+ | Require ip 192.168.1 | ||
+ | Require all denied | ||
+ | </RequireAny> | ||
+ | </file> | ||
+ | |||
+ | Wenn der Client aus dem Subnetz 192.168.1 kommt, dann darf er zugreifen. Sonst nicht. | ||
+ | |||
+ | === RequireAll === | ||
+ | <file txt /srv/www/intern/.htaccess> | ||
+ | <RequireAll> | ||
+ | Require ip 192.168.1 | ||
+ | </RequireAll> | ||
+ | </file> | ||
+ | |||
+ | Wenn der Client aus dem Subnetz 192.168.1 kommt, dann darf er zugreifen. Sonst nicht. | ||
+ | |||
+ | * [[https://httpd.apache.org/docs/2.4/howto/access.html|Apache Dokumentation zu Zugriffskontrolle]] | ||
+ | |||
+ | === RequireNone === | ||
+ | <file txt /srv/www/intern/.htaccess> | ||
+ | <RequireNone> | ||
+ | Require ip 192.168.1 | ||
+ | </RequireNone> | ||
+ | </file> | ||
+ | |||
+ | ErrorLog beachten! | ||
+ | |||
+ | === Verschachtelte Blöcke aus All, Any und None === | ||
+ | RequireNone = Verneinung dessen was innerhalb des Blocks steht - "darf nicht erfüllt sein" | ||
+ | <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> | ||
+ | <Files "*"> | ||
+ | Require all granted | ||
+ | </Files> | ||
+ | <Directory /srv/www/intern> | ||
+ | Require all denied | ||
+ | </Directory> | ||
+ | </file> | ||
+ | |||
+ | ''Files'' wird nach ''Directory'' ausgewertet und gewinnt -> Zugriff auf Dateien im Verzeichnis ''/srv/www/intern'' ist erlaubt | ||
+ | |||
+ | * [[https://httpd.apache.org/docs/2.4/sections.html#merging|Apache Dokumentation zu Sektionen]] | ||
+ | |||
+ | ==== Benutzerauthentifizierung ==== | ||
+ | Einfache Benutzeridentifikation mittels Passwortdatei | ||
+ | |||
+ | === Anlegen der Passwortdatei === | ||
+ | openSuSE (12.3): | ||
+ | htpasswd2 -c /srv/www/.htpasswd heinz | ||
+ | debian (6): | ||
+ | htpasswd -c /srv/www/.htpasswd heinz | ||
+ | |||
+ | Achtung: Die Datei ''/srv/www/.htpasswd'' wird dabei überschrieben! | ||
+ | |||
+ | === weitere Benutzer anlegen === | ||
+ | openSuSE (12.3): | ||
+ | htpasswd2 .htpasswd elke | ||
+ | debian (6): | ||
+ | htpasswd .htpasswd elke | ||
+ | |||
+ | === Konfiguration === | ||
+ | In der Kontextdirektive oder in der ''.htaccess'' folgende Optionen setzen: | ||
+ | |||
+ | <file> | ||
+ | AuthType Basic | ||
+ | AuthName "Bitte Username und Passwort" | ||
+ | AuthBasicProvider file | ||
+ | AuthUserFile /srv/www/.htpasswd | ||
+ | Require valid-user | ||
+ | </file> | ||
+ | |||
+ | ==== Nutzung einer Gruppendatei ==== | ||
+ | Modul laden: | ||
+ | a2enmod authz_groupfile | ||
+ | service apache2 restart | ||
+ | |||
+ | Aufbau der Gruppendatei ''/srv/www/.htgroup'' | ||
+ | |||
+ | <file> | ||
+ | gf: peter heinz gerd | ||
+ | sekretariat: elke heinz | ||
+ | </file> | ||
+ | |||
+ | Änderung in der ''.htaccess'' | ||
+ | |||
+ | <file> | ||
+ | AuthType Basic | ||
+ | AuthName "Bitte Username und Passwort" | ||
+ | AuthBasicProvider file | ||
+ | AuthUserFile /srv/www/.htpasswd | ||
+ | AuthGroupFile /srv/www/.htgroup | ||
+ | Require group gf | ||
+ | </file> | ||