Apache2 mit MySQL Authentifizierung

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.

1. MySQL anpassen

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.

apt-get install libapache2-mod-auth-mysql
cd /etc/apache2/mods-enabled/
ln -s /etc/apache2/mods-available/auth_mysql.load .

Jetzt müssen wir noch eine neue Datenbank mit der Authetifizierungstabelle erstellen.

mysql -uroot -p  

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’);

2. Apache2 Konfiguration

Als nächstes passen wir die Apache2 Konfiguration an.
In der Datei /etc/apache2/apache2.conf fügen wir folgendes hinzu:

Auth_MySQL_Info localhost <auth_user> <password>

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:

<Directory “<web directory>”>
Options +Indexes FollowSymLinks MultiViews
AllowOverride AuthConfig Options FileInfo Limit
Order allow,deny
Allow from all
</Directory>  

<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 />.

3. Apache2 neustarten

Dieser Punkt wird gerne vergessen. Damit die Änderungen greifen, müssen wir den apache Server neustarten.

/etc/init.d/apache2 restart 

4. Freier Zugriff aus dem eigenem Netz

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:

Order deny,allow
Deny from all
Allow from 192.168.1.0/24
Satisfy Any

Hier nicht vergessen die IP Adresse der eigenen Umgebung anzupassen.
Sollte noch jemand Fragen haben, kann er Sie über ein Kommentar loswerden.

2 Kommentare

  1. michael

    30. April 2009 um 00:55

    Hi,

    gibt es Euch noch?

    Viele Grüße aus Mannheim!

  2. tsedeke

    3. Mai 2009 um 11:51

    Aber klar gibt es uns noch. Halt nur etwas beschäftigt.

Beitrag kommentieren