It works! – Apache, PHP, Kerberos und AFS (Teil 1)
Thomas | 9. Dezember 2008“It works!” steht da in großen Lettern, wenn ich die Webseite des Ubuntu Servers aufrufe. Für ein Software-Projekt möchte ich mit Kerberos experimentieren. Da ich eine PHP-Seite entwerfen soll, bei der sich Kerberos-Clients anmelden können sollen, brauche ich ein Kerberos-Plugin für PHP.
Das lässt sich beim Apache Webserver mit dem Befehl sudo apt-get install libapache-mod-auth-kerb erledigen. Dabei wird notfalls krb5-config und libapache2-mod-auth-kerb mitinstalliert. Ein beherztes sudo /etc/init.d/apache2 restart aktiviert die neu installierten Module. Der Webserver sagt weiterhin “It works!”, aber die Frage ist, was er mit “it” meint. Sicherlich funktioniert Apache noch, aber wer weiß, ob Kerberos jetzt funktioniert?
Zunächst hat mein Server ein Problem mit der IP-Adresse. Er kann keinen Servernamen finden und verwendet den Loopback-Adapter 127.0.1.1 als Default. Den Servernamen kann man mittels sudo nano /etc/apache2/httpd.conf angeben. Danach verschwinden die Warnungen. Man verwendet vielleicht den am besten gleichen Namen wie in /etc/hostname angegeben.
Die angezeigte Seite, die “It works!” ausgibt, ist lediglich eine statische HTML-Seite. Das beweist noch nicht einmal, ob PHP überhaupt funktioniert. Eine einfache Datei /var/www/phpinfo.php mit dem Inhalt <? phpinfo(); ?> gibt eine Informationsseite aus. Irgendwo gibt es einen Abschnitt namens “Loaded Modules”, der die installierten Module auflistet. Dort taucht nach der Installation ein mod_auth_kerb auf, was auf eine erfolgreiche Installation des Kerberos Moduls hindeutet. Jetzt fragt sich natürlich, wie man Kerberos vernünftig benutzt.
Die Bibliothek PEAR scheint der richtige Ansatz zu sein. PEAR bringt eine Klasse Auth mit, mit welcher sich Kerberos Authentifizierungen durchführen lassen. PEAR ist bei Ubuntu 8.10 Server nicht standardmäßig dabei, lässt sich aber über ein einfaches sudo apt-get install php-pear nachrüsten.
Mein kleines PHP-Kerberos-Testscript funktioniert leider nicht. Die Funktion require_once(“Auth.php”); beschwert sich, dass Auth.php nicht aufzufinden ist. Eine Durchsuchung der Festplatte zeigt: die Datei Auth.php existiert lediglich im Verzeichnis /usr/share/php/PEAR/Command. Dieses Verzeichnis ist aber nicht Bestandteil des Include-Pfades von PHP. Eine kurze Recherche sagt mir, dass man die Bestandteile von PEAR einzeln installieren muss. In diesem Fall also sudo pear install Auth. Jetzt erscheint eine neue Fehlermeldung: “Cannot use Kerberos V authentication, KADM5 extension not loaded!”
Leider funktioniert sudo apt-get install php-kadm5 nicht. Ein sudo apt-get install krb5-admin-server bringt jedoch neue Erkenntnisse: vermutlich habe ich jetzt einen Kerberos Server installiert, der mir früher oder später nützlich sein wird, wenn ich mich tatsächlich irgendwo anmelden möchte.
Für heute muss ich meine Untersuchungen abbrechen. Ich bin schon deutlich schlauer und meinem Kerberos-AFS Projekt einen Schritt näher. Am Ende soll übrigens eine Überprüfung von AFS-Freigaben entstehen. Der User kann per Weboberfläche Berechtigungen festlegen, deren Einhaltung per Cron-Job überprüft wird.

