In deiser Anleitung zeige ich, wie man den Apache2 Webserver unter Ubuntu gegen eine MySQL Datenbank authentifiziert.
Die Authentifizierung sollte ein wichtiges Thema sein, für jeden, der z. B. zu Hause sich einen Mailserver mit Webzugriff betreiben möchte. Da die meisten Web Tools wie phpMyAdmin, Squirrel Mail oder das schöne RoundCube Mail doch sicherheitslöcher aufweisen, ist es sinnvoll nur authentifizierten Benutzern Zugriff auf diese Werkzeuge zu geben. Dadurch mindert sich das Risiko einen Hacking.
Auf die Einrichtung eines MySQL Servers will ich hier nicht eingehen, da es dazu schon genug Dokumentation gibt.
Ich gehe davon aus dass Apache2, MySQL Server schon installiert sind. Dazu installieren wir noch libapache2-mod-auth-mysql.
Jetzt müssen wir noch eine neue Datenbank mit der Authetifizierungstabelle erstellen.
mysql> grant all on apache2.* to auth_user@localhost identified by ‘<password>’;
mysql> flush privileges;
mysql> create database apache2;
mysql> use apache2;
CREATE TABLE clients (
username varchar(25) NOT NULL default ”,
passwd varchar(25) NOT NULL default ”,
groups varchar(25) NOT NULL default ”,
PRIMARY KEY (username),
KEY groups (groups) );
INSERT INTO clients VALUES (‘meinBuntzer’, ‘besondersGeheim’, ‘meineGruppe’);
Als nächstes passen wir die Apache2 Konfiguration an.
In der Datei /etc/apache2/apache2.conf fügen wir folgendes hinzu:
Wobei Sie auth_user und password ihren eigenen angaben ersetzen müssen. Gefragt ist hier der Datenbankbenutzer mit dem Apache auf die Datenbank zugreifen soll.
Danach ändern wir die /etc/apache2/sites-available/default oder eine andere VirtualDomain Konfiguration an. Da bei einem Heimserver selten mehrere Virtual Domains laufen ändern wir die Default Domain.
Folgendes muss eingefügt bzw. geändert werden:
<location />
AuthMYSQL on
AuthMySQL_Authoritative on
AuthMySQL_DB apache2
AuthMySQL_Password_Table clients
AuthMySQL_Group_Table clients
AuthMySQL_Empty_Passwords off
AuthMySQL_Encryption_Types Plaintext Crypt_DES
AuthName “Mein Hausserver”
AuthType Basic
AuthBasicAuthoritative Off
AuthUserFile /dev/null
require group <meineGruppe>
</location>
Statt require group kann auch require valid-user genommen werden.
Ich benutze hier auch keine .htaccess Datei, da damit nur der Default Pfad (/var/www/) gesichert wäre. Installation von Werkzeugen wie Squirrelmail oder phpMyAdmin die mit apt-get install squirrelmail installiert werden, liegen aber nicht im Default Pfad sondern in /usr/share/ und werden lediglich mit einem Alias eingebunden.
Damit aber alles unter dem Root Pfad (http://meinservername/) gesichert ist, verwende ich die Angabe <location />.
Dieser Punkt wird gerne vergessen. Damit die Änderungen greifen, müssen wir den apache Server neustarten.
Da es meist unschön ist, sich immer aus dem eigenem Netz 2x am Server anzumelden, einmal für die Apache Authorisation und einmal für das Webmail Login, fügen wir unserer Apache Konfiguration im Bereich <location /> folgendes hinzu:
Hier nicht vergessen die IP Adresse der eigenen Umgebung anzupassen.
Sollte noch jemand Fragen haben, kann er Sie über ein Kommentar loswerden.
michael
30. April 2009 um 00:55Hi,
gibt es Euch noch?
Viele Grüße aus Mannheim!
tsedeke
3. Mai 2009 um 11:51Aber klar gibt es uns noch. Halt nur etwas beschäftigt.