Apache2 Workshop Authentifizierung

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen

Grundlagen

  • Apache unterstützt verschiedene Methoden zur Authentifizierung von Benutzern.
  • Zu den häufigsten Methoden gehören Basic Authentication, Digest Authentication und die Integration mit LDAP oder Datenbanken.
  • Die Authentifizierungsmechanismen werden meist über die .htaccess-Datei oder die Apache-Konfigurationsdateien gesteuert.
  • Eine Authentifizierung kann mit einer Zugriffskontrolle kombiniert werden, um bestimmte Bereiche der Webseite zu schützen.
  • Apache verwendet Module wie mod_auth_basic, mod_auth_digest oder mod_authnz_ldap zur Authentifizierung.
  • Nach einer Änderung der Authentifizierungskonfiguration muss Apache neu geladen werden: systemctl reload apache2.

Authentifizierungsmethoden

  • Basic Authentication ist die einfachste Methode, nutzt aber eine unverschlüsselte Übertragung der Zugangsdaten.
  • Digest Authentication ist sicherer, da das Passwort nicht im Klartext gesendet wird.
  • LDAP-Authentifizierung erlaubt die Nutzung zentral verwalteter Benutzerkonten.
  • MySQL- oder SQLite-Authentifizierung ermöglicht eine datenbankgestützte Anmeldung.
  • Externe Authentifizierungen wie Kerberos oder OAuth sind ebenfalls möglich.

Basic Authentication

Erstellen einer Passwortdatei

  • htpasswd -c /etc/apache2/.htpasswd benutzername
  • Danach wird das Passwort für den Benutzer gesetzt.

Konfiguration in Apache

  • cat /etc/apache2/sites-available/secure-site.conf
<VirtualHost *:80>
    ServerName secure.example.com
    DocumentRoot /var/www/secure
    <Directory /var/www/secure>
        AuthType Basic
        AuthName "Geschützter Bereich"
        AuthUserFile /etc/apache2/.htpasswd
        Require valid-user
    </Directory>
</VirtualHost>

Aktivieren und Testen

  • a2ensite secure-site
  • systemctl reload apache2
  • Beim Aufruf der Seite wird nun eine Anmeldung verlangt.

Digest Authentication

  • Diese Methode ist sicherer als Basic Authentication.

Passwortdatei erstellen

  • htdigest -c /etc/apache2/.htdigest geschuetzter_bereich benutzername

Apache-Konfiguration

  • cat /etc/apache2/sites-available/secure-digest.conf
<VirtualHost *:80>
    ServerName digest.example.com
    DocumentRoot /var/www/digest
    <Directory /var/www/digest>
        AuthType Digest
        AuthName "Geschuetzter Bereich"
        AuthUserFile /etc/apache2/.htdigest
        Require valid-user
    </Directory>
</VirtualHost>

Aktivieren und Testen

  • a2ensite secure-digest
  • systemctl reload apache2
  • Digest Authentication funktioniert nur mit kompatiblen Clients.

LDAP-Authentifizierung

  • Apache kann Benutzer gegen einen LDAP-Server authentifizieren.

Apache-Modul aktivieren

  • a2enmod authnz_ldap

Konfiguration

  • cat /etc/apache2/sites-available/secure-ldap.conf
<VirtualHost *:80>
    ServerName ldap.example.com
    DocumentRoot /var/www/ldap
    <Directory /var/www/ldap>
        AuthType Basic
        AuthName "LDAP Geschuetzter Bereich"
        AuthBasicProvider ldap
        AuthLDAPURL "ldap://ldap.example.com/ou=users,dc=example,dc=com?uid?sub?(objectClass=person)"
        Require valid-user
    </Directory>
</VirtualHost>

Aktivieren und Testen

  • a2ensite secure-ldap
  • systemctl reload apache2
  • Benutzer müssen im LDAP-Server existieren.

MySQL-Authentifizierung

  • Apache kann Benutzer gegen eine MySQL-Datenbank authentifizieren.

Apache-Modul aktivieren

  • a2enmod authn_dbd

Konfiguration

  • cat /etc/apache2/sites-available/secure-mysql.conf
<VirtualHost *:80>
    ServerName mysql.example.com
    DocumentRoot /var/www/mysql
    <Directory /var/www/mysql>
        AuthType Basic
        AuthName "MySQL Geschuetzter Bereich"
        AuthBasicProvider dbd
        AuthDBDUserPWQuery "SELECT password FROM users WHERE username = %s"
        Require valid-user
    </Directory>
</VirtualHost>

Aktivieren und Testen

  • a2ensite secure-mysql
  • systemctl reload apache2
  • Benutzer und Passwörter müssen in der MySQL-Datenbank hinterlegt sein.

Aufgaben

  • Erstelle eine Basic Authentication für eine neue Domain secure.it1XX.int.
  • Nutze Digest Authentication für digest.it1XX.int.
  • Richte eine LDAP-Authentifizierung für ldap.it1XX.int ein.
  • Teste die Authentifizierung mit verschiedenen Clients.