Installation von SASL mit Verwendung im Apache 2 unter Ubuntu 11.04

Bevor mit diesem HOWTO begonnen werden kann, muss der Apache2 Server unter Ubuntu installiert sein. Die „it works.“ Seite muss entsprechend erscheinen, sollte man den Server ansprechen. Auf dem Testrechner wurde der Apache zusammen mit phpmyadmin und einem MySQL Server installiert. Entsprechend dazu wurden auch alle PHP5 Pakete soweit installiert, wie benötigt wurden. Mit dem Tool tasksel lässt sich unter ubuntu schnell ein Webserver aufsetzen.

Ist alles soweit vorbereitet kann es losgehen. Installiert werden soll SASL. Dazu soll der Apache2 Webserver so konfiguriert werden, dass ein Unterverzeichnis auf dem Webserver statt mit .htaccess mit SASL und einem Systembenutzer geschützt werden kann. Gut, los gehts.

root@antilight:~# apt-get install sasl2-bin

Damit wird der SASL Dienst auf dem System installiert. Bevor Apache mit SASL arbeiten kann, muss der Demon erst korrekt arbeiten. Dann wird Apache mit dem richtigen SASL Modul bestückt und konfiguriert.

root@antilight:~# adduser neurodump sasl

Damit der Beispielbenutzer neurodump mit sasl sich am Apache authentifizieren kann, muss dieser auch in der von dem Packet angelegten Gruppe sein. Der obige Befehl erledigt das.

root@antilight:~# su neurodump

Nun wird zu diesem Benutzer gewechselt. Es wird geprüft, ob der Benutzer sich korrekt in der Gruppe befindet. Der Befehl groups zeigt alle Gruppen an, wo der Benutzer neurodump Mitglied ist.

neurodump@antilight:/root$ groups
neurodump@antilight:/root$ exit

Mit exit geht es wieder zum Superuser zurück. Jetzt soll dem SASL Demon, also dem Dienst, Leben eingehaucht werden. Das Paket ist erstmal nur installiert, macht aber noch nichts. Dazu verwendet der Benutzer den Editor seiner Wahl und editiert die Datei unten in der Befehlszeile.

root@antilight:~# pico /etc/default/saslauthd

In dieser Datei wird das Parameter START=no auf START=yes geändert. Auf diese Weise ist nun dem SASL Demonen klar, dass er „aufleben“ soll.

Jetzt wird der Dienst mit dem Blitz des root zum Leben berufen. Der Befehl service startet, stoppt und so weiter Dienste unter Ubuntu.

root@antilight:~# service saslauthd start

Nun laut rufen: „It’s alive, it’s alive!!!“ (erst ab 4 Liter Club Mate) Jetzt ist genau der richtige Zeitpunkt den Demonen zu testen. Die Authentifzierung wird mit dem folgenden Befehl getestet.

root@antilight:~# testsaslauthd -u neurodump -p netzchef

Das Passwort des Benutzers wird hier in Klartext übergeben und landet damit unverschlüsselt im history file. Und auch auf dem Bildschirm für neugierige Nasen. Steht success oder Erfolg auf dem Bildschirm, so funktioniert der Demon SASL und kann richtig authentifizieren.

root@antilight:~# clear
root@antilight:~# history -c

Das Löschen der History und das Löschen der Zeilen auf dem Bildschirm gehört hoffe ich danach auch zum Standard. Am besten vielleicht vorher das Kennwort des Benutzers einfach mit passwd ändern.

Jetzt wird das Apache SASL Modul installiert. Damit wird der Apache in die Lage versetzt mit dem SASL Demon zu reden. Ohne das Modul gehts nichts.

root@antilight:~# apt-get install libapache2-mod-authn-sasl

Ist das Modul fertig installiert, muss das Modul noch im Apache aktiviert werden. Dazu ist folgender Befehl notwendig.

root@antilight:~# a2enmod authn_sasl

Damit alle Dienste auch korrekt aufeinander zugreifen können und auch nichts mit den Dateirechten vor die Wand läuft, muss der Apache Benutzer www-data ebenso wie der Benutzer neurodump in der Gruppe sasl sein. Das macht folgender Befehl.

root@antilight:~# adduser www-data sasl

Nun ist fast alles soweit fertig und der Apache Dienst kann neu gestartet werden. Das wird so erledigt.

root@antilight:~# service apache2 restart

Nun geht es an das Einrichten der geschützten Webseite. Dazu wird in das Verzeichnis des Webservers HTML Bereich gewechselt. Dort wird beispielhaft das Verzeichnis protected eingerichtet. In das Verzeichnis kommt eine leere HTML Testdatei, die nur dafür sorgt, dass beim ersten Test der Server keinen 404 wirft.

root@antilight:~# cd /var
root@antilight:/var# cd www
root@antilight:/var/www# mkdir protected
root@antilight:/var/www# cd protected
root@antilight:/var/www/protected# su neurodump
neurodump@antilight:/var/www/protected$ touch empty.html
neurodump@antilight:/var/www/protected$ exit

Damit der Webserver weiß, was er schützen soll und vor allem wie, muss dazu eine Konfiguration in die httpd.conf eingetragen werden. Dazu wird die Datei mit einem Editor aufgerufen.

root@antilight:/var/www# pico /etc/apache2/httpd.conf

Folgendes wird eingefügt:

<Directory /var/www/protected>
AuthType Basic
AuthName „Restricted“
AuthBasicProvider sasl
AuthBasicAuthoritative On
AuthSaslPwcheckMethod saslauthd
Require user neurodump
</Directory>

Nun wird die Config des Apache 2 neu geladen. Der Server weiß nun um die Änderungen und schützt das Verzeichnis. Der folgende Befehl erledigt das.

root@antilight:/var/www# service apache2 reload

Das wars schon. Jetzt sollte das Unterverzeichnis mit http://ipadresse/protected/empty.html aufrufbar sein. Der Browser sollte jetzt brav nach Benutzer und Kennwort fragen. Viel Spaß beim Ausprobieren!

Weiterführend: Benutzeranmeldung mit SASL als “shell-less” Benutzer mit einem geschützten Webbereich beim Apache 2 Server unter Ubuntu 11.04
_____________________________________________
Fassung mit fast allen Systemausgaben.
Logge dich bei deinem System mit z.B. SSH ein.

login as: root
root@10.23.32.64's password:
Welcome to Ubuntu 11.04 (GNU/Linux 2.6.38-10-generic x86_64)

* Documentation: https://help.ubuntu.com/

Last login: Mon Aug 22 19:36:39 2011
root@antilight:~#

Installation des SASL Packetes unter Ubuntu 11.04. Mit apt-get ist das fix erledigt.

root@antilight:~# apt-get install sasl2-bin
Paketlisten werden gelesen... Fertig
Abhängigkeitsbaum wird aufgebaut
Statusinformationen werden eingelesen... Fertig
Die folgenden zusätzlichen Pakete werden installiert:
db4.8-util
Die folgenden NEUEN Pakete werden installiert:
db4.8-util sasl2-bin
0 aktualisiert, 2 neu installiert, 0 zu entfernen und 0 nicht aktualisiert.
Es müssen 259 kB an Archiven heruntergeladen werden.
Nach dieser Operation werden 954 kB Plattenplatz zusätzlich benutzt.
Möchten Sie fortfahren [J/n]? J
Hole:1 http://de.archive.ubuntu.com/ubuntu/ natty/main db4.8-util amd64 4.8.30-5ubuntu2 [137 kB]
Hole:2 http://de.archive.ubuntu.com/ubuntu/ natty/main sasl2-bin amd64 2.1.23.dfsg1-5ubuntu3 [122 kB]
Es wurden 259 kB in 1 s geholt (142 kB/s)
Vorkonfiguration der Pakete ...
Vormals abgewähltes Paket db4.8-util wird gewählt.
(Lese Datenbank ... 362761 Dateien und Verzeichnisse sind derzeit installiert.)
Entpacken von db4.8-util (aus .../db4.8-util_4.8.30-5ubuntu2_amd64.deb) ...
Vormals abgewähltes Paket sasl2-bin wird gewählt.
Entpacken von sasl2-bin (aus .../sasl2-bin_2.1.23.dfsg1-5ubuntu3_amd64.deb) ...
Trigger für man-db werden verarbeitet ...
Trigger für ureadahead werden verarbeitet ...
ureadahead will be reprofiled on next reboot
db4.8-util (4.8.30-5ubuntu2) wird eingerichtet ...
sasl2-bin (2.1.23.dfsg1-5ubuntu3) wird eingerichtet ...
update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1)
* To enable saslauthd, edit /etc/default/saslauthd and set START=yes
root@antilight:~#

Den zu verwendenden Benutzer für die Apache SASL Anmeldung in die SASL Gruppe heben.

root@antilight:~# adduser neurodump sasl
Füge Benutzer »neurodump« der Gruppe »sasl« hinzu ...
Adding user neurodump to group sasl
Fertig.
root@antilight:~#

Wechsel zu dem Benutzer. Prüfe ob der Benutzer wirklich auch in der Gruppe sasl ist.

root@antilight:~# su neurodump
neurodump@antilight:/root$ groups
neurodump adm dialout cdrom sasl plugdev lpadmin admin sambashare
neurodump@antilight:/root$ exit

Editierte die Datei /etc/default/saslauthd und stelle START=no auf START=yes.

root@antilight:~# pico /etc/default/saslauthd

Starte nun den SASL Dienst.

root@antilight:~# service saslauthd start
* Starting SASL Authentication Daemon saslauthd [ OK ]
root@antilight:~#

Prüfe ob die Authentifizierung des Benutzers, hier neurodump mit SASL funktioniert.

root@antilight:~# testsaslauthd -u neurodump -p netzchef
0: OK "Success."
root@antilight:~#

Lasse dein Kennwort, hier netzchef, besser nicht sichtbar auf dem Bildschirm und lösche es auch umbedingt aus deiner BASH History.

root@antilight:~# clear
root@antilight:~# history -c

Wenn soweit alles okay ist, bringe nun dem Apache sein SASL Modul bei. Dazu muss das Paket dazu installiert werden. Das erledigt wieder apt-get für uns. Mit den folgenden Befehlen gehts weiter.

root@antilight:~# apt-get install libapache2-mod-authn-sasl
Paketlisten werden gelesen... Fertig
Abhängigkeitsbaum wird aufgebaut
Statusinformationen werden eingelesen... Fertig
Die folgenden NEUEN Pakete werden installiert:
libapache2-mod-authn-sasl
0 aktualisiert, 1 neu installiert, 0 zu entfernen und 0 nicht aktualisiert.
Es müssen 7.580 B an Archiven heruntergeladen werden.
Nach dieser Operation werden 81,9 kB Plattenplatz zusätzlich benutzt.
Hole:1 http://de.archive.ubuntu.com/ubuntu/ natty/universe libapache2-mod-authn-sasl amd64 1.1-1 [7.580 B]
Es wurden 7.580 B in 0 s geholt (25,0 kB/s)
Vormals abgewähltes Paket libapache2-mod-authn-sasl wird gewählt.
(Lese Datenbank ... 362817 Dateien und Verzeichnisse sind derzeit installiert.)
Entpacken von libapache2-mod-authn-sasl (aus .../libapache2-mod-authn-sasl_1.1-1_amd64.deb) ...
libapache2-mod-authn-sasl (1.1-1) wird eingerichtet ...
root@antilight:~#

Nun reicht die Installation des Paketes nicht aus. Das Paket muss im Apache Webserver auch noch korrekt aktiviert werden. Der folgende Befehl erledigt das.

root@antilight:~# a2enmod authn_sasl
Enabling module authn_sasl.
Run '/etc/init.d/apache2 restart' to activate new configuration!
root@antilight:~#

Damit auch alles mit den Rechten funktioniert, müssen diese noch kurz angepasst werden. Dazu muss der Apache Benutzer www-data auch in der Gruppe sasl sein.

root@antilight:~# adduser www-data sasl
Füge Benutzer »www-data« der Gruppe »sasl« hinzu ...
Adding user www-data to group sasl
Fertig.
root@antilight:~#

Nun muss der Apache 2 Server neu gestartet werden.

root@antilight:~# service apache2 restart
* Restarting web server apache2 ... waiting [ OK ]
root@antilight:~#

Nun wurde der Server neu gestartet. Jetzt beginnt das Einrichten der geschützten Seite. Dazu gehts in das Webverzeichnis des Apache Servers.

root@antilight:~# cd /var
root@antilight:/var# cd www
root@antilight:/var/www# ls
index.html

Nun wird ein Unterverzeichnis protected angelegt. Dort wird die geschützte Seite abgelegt werden. Mit touch wird nun eine leere HTML Datei angelegt, die nichts beinhaltet. Auf diese Weise wirft der Apache beim ersten Test keine 404 Meldung. Ersetze vielleicht die leere HTML Datei durch eine kleine „It works….“ Seite.

root@antilight:/var/www# mkdir protected
root@antilight:/var/www# ls -l
insgesamt 8
-rw-r--r-- 1 root root 177 2011-08-14 18:27 index.html
drwxr-xr-x 2 root root 4096 2011-08-22 20:10 protected
root@antilight:/var/www# cd protected
root@antilight:/var/www/protected# exit
neurodump@antilight:/var/www/protected$ touch empty.html
neurodump@antilight:/var/www/protected$ ls -l
insgesamt 0
-rw-r--r-- 1 neurodump neurodump 0 2011-08-22 20:14 empty.html
neurodump@antilight:/var/www/protected$ pwd
/var/www/protected
neurodump@antilight:/var/www/protected$

Bevor der erste Test gestartet werden kann, muss der Server noch wissen, was er nun mit dem Verzeichnis machen soll. Dazu muss in der httpd.conf etwas hinzugefügt werden.

neurodump@antilight:/var/www/protected$ exit
root@antilight:/var/www# pico /etc/apache2/httpd.conf

In Datei einfügen:

<Directory /var/www/protected>
AuthType Basic
AuthName „Restricted“
AuthBasicProvider sasl
AuthBasicAuthoritative On
AuthSaslPwcheckMethod saslauthd
Require user neurodump
</Directory>

root@antilight:/var/www# service apache2 reload
* Reloading web server config apache2 [ OK ]
root@antilight:/var/www#

Nach dem Reload der Config sollte eine Anmeldung am Apache Server mit dem Systembenutzer funktionieren. Das Kennwort wird hierbei unverschlüsselt übertragen.

Hier gehts weiter: Benutzeranmeldung mit SASL als “shell-less” Benutzer mit einem geschützten Webbereich beim Apache 2 Server unter Ubuntu 11.04