Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung | ||
lpi2:apache_zugriffskontrolle [2016/12/08 11:14] ingo_wichmann [Auslagerung in .htaccess] |
lpi2:apache_zugriffskontrolle [2018/06/14 10:10] |
||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | ====== Zugriffskontrolle ====== | ||
- | ===== Apache 2.4 ===== | ||
- | ==== Auslagerung in .htaccess ==== | ||
- | Bei openSuSE (42.1) bitte ''/srv/www/htdocs'' an Stelle von ''/srv/www/intern'' verwenden. Bei CentOS bitte ''/var/www/intern'' verwenden. | ||
- | |||
- | Mit Hilfe von ''AllowOverride'' können Einstellungen ausgelagert werden: | ||
- | |||
- | <file> | ||
- | Alias /intern /srv/www/intern | ||
- | |||
- | <Directory /srv/www/intern> | ||
- | AllowOverride AuthConfig | ||
- | Require all denied | ||
- | </Directory> | ||
- | </file> | ||
- | |||
- | Ist jetzt der Zugriff auf Dateien im Verzeichnis ''/srv/www/intern'' erlaubt? | ||
- | |||
- | Die Datei ''/srv/www/intern/.htaccess'' hat folgenden Inhalt: | ||
- | |||
- | <file> | ||
- | Require all granted | ||
- | </file> | ||
- | |||
- | Ist der Zugriff auf Dateien im Verzeichnis ''/srv/www/intern'' erlaubt? | ||
- | |||
- | ==== RequireAny vs. RequireAll vs. RequireNone ==== | ||
- | === RequireAny === | ||
- | |||
- | <file> | ||
- | Require ip 192.168.1 | ||
- | Require all denied | ||
- | </file> | ||
- | |||
- | ist das selbe wie: | ||
- | <file> | ||
- | <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> | ||
- | <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> | ||
- | <RequireNone> | ||
- | Require ip 192.168.1 | ||
- | </RequireNone> | ||
- | </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/intern/wiki/.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> | ||
- | |||
- | ===== Apache 2.2 ===== | ||
- | ==== Zugriffsteuerung per IP/Hostname ==== | ||
- | |||
- | In Apache kann mittels | ||
- | |||
- | Fall 1: | ||
- | <file> | ||
- | order deny,allow | ||
- | </file> | ||
- | |||
- | Per Directory / Location / File | ||
- | |||
- | <file> | ||
- | <Directory /srv/www/intern> | ||
- | order deny,allow | ||
- | deny from All | ||
- | allow from 10.0.0.0/24 .linuxhotel.de 127.0.0.1 | ||
- | </Directory> | ||
- | </file> | ||
- | |||
- | Erst werden die deny-Regeln ausgewertet, danach die allow-Regeln, falls keine Regel greift gilt allow | ||
- | |||
- | |||
- | Fall 2: | ||
- | <file> | ||
- | order allow,deny | ||
- | </file> | ||
- | |||
- | <file> | ||
- | <Directory /srv/www/intern> | ||
- | order allow,deny | ||
- | allow from 10.0.0.0/24 .linuxhotel.de 127.0.0.1 | ||
- | </Directory> | ||
- | </file> | ||
- | |||
- | Erst werden die allow-Regeln ausgewertet, danach die deny-Regeln, falls keine Regel greift gilt deny | ||
- | |||
- | ==== Eigene Projekte / Configdateien ==== | ||
- | |||
- | openSuSE: | ||
- | |||
- | Am besten die eigenen Konfigurationen in folgendem Pfad ablegen mit der Endung .conf | ||
- | |||
- | ''/etc/apache2/conf.d/wiki.conf'' | ||
- | |||
- | ==== Auslagerung in .htaccess ==== | ||
- | |||
- | In Kontextdirektiven lassen sich die Konfigurationswerte durch allowoverride auslagern. | ||
- | |||
- | z.B.: ''/etc/apache2/conf.d/wiki.conf'' | ||
- | |||
- | <file> | ||
- | <Directory /srv/www/wiki> | ||
- | |||
- | Allowoverride All | ||
- | # Allowoverride Auth | ||
- | |||
- | </Directory> | ||
- | </file> | ||
- | |||
- | Die Datei ''/srv/www/wiki/.htaccess'' hat folgenden Inhalt: | ||
- | |||
- | <file> | ||
- | order allow,deny | ||
- | allow from 192.168. 127. | ||
- | </file> | ||
- | |||
- | ==== Benutzerauthentifizierung ==== | ||
- | Einfache Benutzeridentifikation mittels Passwortdatei | ||
- | |||
- | ==== Anlegen der Passwortdatei ==== | ||
- | openSuSE (12.3): | ||
- | htpasswd2 -c .htpasswd heinz | ||
- | debian (6): | ||
- | htpasswd -c .htpasswd heinz | ||
- | |||
- | Achtung Erweiterung der Datei mittels | ||
- | |||
- | openSuSE (12.3): | ||
- | htpasswd2 .htpasswd elke | ||
- | debian (6): | ||
- | htpasswd .htpasswd elke | ||
- | |||
- | In der Kontextdirektive oder im ''.htaccess'' folgende Optionen setzen | ||
- | |||
- | Beispieldatei ''.htaccess'' | ||
- | <file> | ||
- | AuthType Basic | ||
- | AuthName "Bitte Username und Passwort" | ||
- | AuthBasicProvider file | ||
- | AuthUserFile /srv/www/wiki/.htpasswd | ||
- | Require valid-user | ||
- | </file> | ||
- | |||
- | ==== Nutzung einer Gruppendatei ==== | ||
- | |||
- | Aufbau der Gruppendatei ''/srv/www/wiki/.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/wiki/.htpasswd | ||
- | AuthGroupFile /srv/www/wiki/.htgroup | ||
- | Require group gf | ||
- | </file> | ||