Linux als SOHO-Server

für Linux- und Windows-Clients
http://linux.eusterholz.dyndns.org

Kapitel:

Home
Debian Installation
Debian Etc.
Internet-Zugang
Telnet
FTP
r-Utilities
SSH
Printing
NTP
Nameserver
NFS/NIS/Automount
Samba (SMB-Server)
Apache (WEB-Server)
Modem / ISDN
Backup
Etc.


Authentifizierung

Installation/Konfiguration ] Status/Info ] UserDir ] Virtuelle Hosts ] [ Authentifizierung ] CGI ] mod_perl ] PHP ] SSI ] SSL ] WebDAV ] Log-Dateien ] ht://Dig ]


Manchmal ist es notwendig auf einen Web-Server vertrauliche Dokumente abzulegen, auf die nur bestimmte Benutzer bzw. Benutzergruppen zugreifen sollen. Reicht die Beschränkung auf Rechner oder Rechnergruppen nicht aus, so sollte man vom Benutzer eine Authentifizierung anfordern. Bei der Authentifizierung wird dem Benutzer ein Dialog angeboten, indem er seinen Benutzernamen und Kennwort eingeben muss:

Das genaue Aussehen dieses Fensters hängt vom Client-Betriebssystem und dem verwendeten Browser ab. Erst nach richtiger Eingabe der Werte wird der Zugriff auf ein Verzeichnis gestattet., indem sich die vertraulichen Daten befinden. Zu erwähnen ist, dass diese Art der Authentifizierung auf ein Protokoll basiert, dass nur einen einfachen Schutz bietet und nicht für geschäftliche Transaktionen geeignet ist.

In Verlauf dieser Seite werden zwei Methoden einer solchen Authentifizierung anhand von Beispielen vorgestellt. Dabei wird zunächst die Authentifizierung in die Apache-Konfigurationsdateien eingebaut. Weiterhin wird die Authentifizierung mittels so genannter .htaccess-Dateien vorgestellt.

Authentifizierungs-Typen

Unter Apache finden zwei Authentifizierungs-Typen Anwendung, das sind die Typen 'Basic' und 'Digest'. Beim Typ 'Basic' werden die Daten zur Authentifizierung in Klarschrift übertragen (base64-codiert), beim Type 'Digest' hingegen findet eine verschlüsselte Übermittlung statt (MD5-verschlüsselt). Für den Type 'Basic' ist das Modul 'mod_auth_basic' bzw. für 'Digest' das Modul 'mod_auth_digest' zuständig.

Unter Debian können die Module bequem mit dem Kommando: 'a2enmod' bzw. 'a2dismod' aktiviert/deaktiviert werden. Bei der Grundinstallation von Debian ist das Modul 'mod_auth_basic' bereits standardmäßig aktiviert, soll hingegen der Type 'Digest' genutzt werden, so ist das Modul zu laden. Hier der Beispiel-Aufruf zum Laden des Modules 'mod_auth_digest':

a2enmod auth_digest

Nach der Aktivieren von Modulen ist ein Neuladen des Apaches notwendig:

/etc/init.d/apache2 force-reload

Im weiteren Verlauf dieser Seite wird nur auf dem Typ 'Basic' zur Authentifizierung eingegangen.

Authentifizierung mittels Apache-Konfigurationsdatei

Um z.B. unterhalb der URL: 'http://<web-server>/auth_dir' vertrauliche Daten abzulegen, muss dem Apache-Server mitgeteilt werden, dass eine Authentifizierung anfordern werden soll. Eine Möglichkeit zu diesem Zweck ist das Arbeiten mit Directory-Direktiven. In der Konfigurationsdatei brauch nur eine neue Block hierfür erzeugt werden. Innerhalb der Directory-Direktiven kann dann die Authentifizierungen eingefügt werden:

/etc/apache2/sites-available/default

<Directory /var/www/auth_dir>
        AuthName "Authentication on Vision for folder: './auth_dir'"
        AuthType Basic
        AuthUserFile /etc/apache2/passwd
        AuthGroupFile /etc/apache2/group
        Require valid-user
</Directory>

In der ersten Zeile wird das zu sichernde Verzeichnis angegeben (grüne Markierung).
In der zweiten Zeile, wird mit 'AuthName' ein String festgelegt, der bei dem Fenster zur Authentisierung anzeigt wird.
Mit 'AuthType Basic' wird die Authentifizierungsart festgelegt. Als 'AuthType' ist vielfach nur 'Basic' möglich, was jedoch recht unsicher ist, da Passwörter unverschlüsselt übertragen werden. Die bessere Variante: 'Digest' wird leider von vielen Browsern noch nicht unterstützt.
In der Zeile: 'AuthUserFile' wird festgelegt, wo sich die Datei mit den Benutzernamen und Passwörtern befindet.
Mit 'AuthGroupFile' wird der Pfad angegeben um gruppenbezogene Zugriffe zu erlauben.
Die Zeile: 'Require valid-user' gibt an, dass alle System-Benutzer einen Zugriff bekommen. Andere mögliche Einstellungen sind: 'user' und 'group'. Würde man hier z.B. angeben:

Require user norbert

so bekämen andere Benutzer keinen Zugriff, auch wenn sich ihr Benutzername und Passwort in der angegeben Passwort-Datei befinden.

Als nächstes ist die Passwortdatei anzulegen, dies geschieht mit dem Programm: 'htpasswd', dass im Verzeichnis: '/etc/bin/' enthalten ist. Hier ein Beispiel-Dialog zum Anlegen der Datei mit dem Benutzer: 'linux':

vision:~# /usr/bin/htpasswd -c /etc/apache2/passwd linux
New password:
Re-type new password:
Adding password for user linux
vision:~#

Nach Aufruf von: 'htpasswd' ist das Passwort zweimal einzugeben. Das Programm 'htpasswd' ist nur beim ersten Erzeugen der Passwortdatei mit der Option '-c' aufzurufen. Sollen weitere Benutzer hinzugefügt werden, so ist 'htpasswd' ohne die Option '-c' aufzurufen; eine bereits bestehende Passwortdatei würde sonst überschrieben.

Hier der Inhalt einer Passwortdatei:

/etc/apache2/passwd

linux:HbDdyPI5iAkgt
norbert:FfJfqdfhUVB12
test:dXOR5Pdcxmu.w
webmaster:45stfdfhUVB12
root:DdyPI5iqstfez

Jede Zeile in der Datei definiert eine Benutzername/Passwort-Kombination. Es wird zuerst der Benutzername angegeben, gefolgt von einem Doppelpunkt. Um einen Benutzer zu löschen, sollte er einfach mittels Editors aus der Datei entfernt werden.

Des weiteren eine Beispiel-Gruppendatei:

/etc/apache2/group

Admins: root webmaster
Users: linux norbert test

Eine Gruppendatei kann mit einen einfachen Text-Editor angelegt werden. Eine Gruppe wird definiert durch den Namen der Gruppe, gefolgt von einem Doppelpunkt und dann einer Anzahl von Benutzernamen derjenigen Anwender, die der Gruppe zugeordnet werden sollen. Die bei der Gruppendefinition angegebenen Benutzernamen müssen sich in der Passwortdatei wieder finden.

Nach dem Implementieren der Authentifizierung ist der Apache-Server neu zu starten. Beim Zugriff auf einen gesicherten Bereich, sollte nun eine Benutzername/Passwort-Abfrage kommen.

Authentifizierung mittels .htaccess-Datei

Anstatt die Authentifizierung starr in der Apache-Konfigurationsdatei einzubauen, kann sie auch in Form einer so genannten .htaccess-Datei erfolgen. Der Vorteil hierbei ist, es können auch Web-Benutzer, die keinen Zugriff auf die Konfigurationsdateien des Apaches haben, so Teile ihres Webs schützen.
Damit diese Benutzer .htaccess-Dateien einsetzen können, sind jedoch einige Einstellungen in der Apache-Konfigurationsdatei zu beachten. Unter Debian sind diese Dinge schon vorbereitet. Zur Verdeutlichung hier die relevanten Einstellungen diesbezüglich:

Auszug aus: /etc/apache2/apache2.conf (ca. ab Zeile: 213)

AccessFileName .htaccess

<Files ~ "^\.ht">
    Order allow,deny
    Deny from all
</Files>

Damit Apache .htaccess-Dateien unterstützt, muss der Direktive: 'AccessFileName' gesetzt sein. Auch können andere Dateinamen als: '.htaccess' an dieser Stelle gewählt werden.
Weiterhin sollte das Ausliefern alle Dateien die mit '.ht' beginnen ausnahmslos unterbunden werden (grüner Block).

Um nun ein Verzeichnis und alle darunter liegenden Verzeichnisse zu schützen, muss jetzt nur eine .htaccess-Datei in das zu schützende Verzeichnis abgelegt werden. Hierzu ein Beispiel wie ein solcher Schutz aussehen kann:

.htaccess

AuthName "Authentication with: '.htaccess'"
AuthType Basic
AuthUserFile .htpasswd
AuthGroupFile .htgroup
Require valid-user

Die Datei ist ähnlich aufgebaut wie oben beschrieben (vgl. Authentifizierung mittels Apache-Konfigurationsdatei). Weiterhin sind die Dateien: '.htaccess' und '.htgroup' daneben abzulegen. Auch hier gilt das Gleiche wie schon oben beschreiben. Alle Dateien können mit einen normalen Text-Editor bearbeitet werden.

.htpasswd

user_1:45stfdfhUVB12
user_2:rt45jkstsdB1e

 

.htgroup

myuser: user_1 user_2

Anmerkungen

Die Benutzer, Gruppen und Passwörter haben nichts mit denen des Linux-Systems zu tun. Der Benutzername zur Authentifizierung kann und sollte vom Linux-Benutzernamen abweichen.

Bei Fehlermeldungen kann die Ursache hierfür in der Datei: '/var/log/httpd.error_log' auf dem Server gefunden werden.

Man sollte .htaccess-Dateien nach Möglichkeit vermeiden. Jede Konfiguration einer .htaccess-Datei kann genau so gut innerhalb  der einer Hauptkonfigurationsdateien des Web-Servers realisiert werden. Die Gründe hierfür sind Performance und allgemeine Sicherheit.

Weitere Infos

Homepage: Apache Software Foundation http://www.apache.org/
Apache Module mod_auth http://httpd.apache.org/docs/2.2/howto/auth.html
System-Dokumentation: apache2 /usr/share/doc/apache2
.htaccess - Server-Reaktionen kontrollieren http://de.selfhtml.org/servercgi/server/htaccess.htm
.htaccess-FAQ http://aktuell.de.selfhtml.org/artikel/server/htaccess-faq/

Home ] Nach oben ] Installation/Konfiguration ] Status/Info ] UserDir ] Virtuelle Hosts ] [ Authentifizierung ] CGI ] mod_perl ] PHP ] SSI ] SSL ] WebDAV ] Log-Dateien ] ht://Dig ]

letzte Änderung: 26. Januar 2008

 

Copyright © 2004 Norbert Eusterholz