custus.de
E-Mail
Abonnieren
Empfehlen
Verfolgen

Sicherer Webserver mit XAMPP (Sicherheit geht vor)

16.10.2007 custus Kategorie: PHP Kommentare (0)

Für viele Entwickler ist XAMPP eine mehr als nützliche Zusammenstellung von Apache, PHP, Perl, MySQL und noch einigem mehr.
Doch selbst die Ersteller von XAMPP warnen davor das OutOfTheBox Tool für die Einrichtung eines Webservers zu nutzen. Nun einige machen es doch und öffnen damit selbst Laien Tor und Tür.

Im folgenden gebe ich Tips, wie man die mitgelieferte Konfiguration soweit ändern kann, um auf einfache Art und Weise XAMPP abzusichern. Ich gebe keine Garantie dafür, dass das System anschließend unanfällig wäre, aber aus Erfahrung kann ich sagen, das es einem Hacker anschließend nicht mehr so einfach fallen wird.

Ausgangssituation:

Vorgehen:
Nach dem Download der Zip-Variante einfach das Archiv in ein beliebiges Verzeichnis entpacken. Ich möchte einfach nur Apache mit PHP haben, zunächst erst einmal ohne MySQL. Hinweis: Das Xampp-Verzeichnis sollte aus Sicherheitsgründen nicht xampp oder xampplite heißen.
Nach dem entpacken muss aus dem Verzeichnis die Datei setup_xampp.bat ausgeführt werden.

Zunächst welchseln wir in das Konfigurationsverzeichnis von Apache apache/conf. Hier die Datei “httpd.conf” in einem Texteditor öffnen. In der Datei den Eintrag xampplite specific settings suchen. Wir sehen nun eine Folge von include-Befehlen. Nun können hier alle Dateien entfernt werden, die wir nicht benötigen.

Der erste Eintrag muss auf jeden Fall auskommentiert (“#” voransetzen) werden:
Ebenso folgende Einträge:

# Include conf/extra/httpd-autoindex.conf
# Include conf/extra/httpd-userdir.conf
# Include conf/extra/httpd-info.conf
# Include conf/extra/httpd-vhosts.conf
# Include conf/extra/httpd-manual.conf
# Include conf/extra/httpd-dav.conf
# Include conf/extra/httpd-ssl.conf

Autoindex dient dazu im Browser die Verzeichnisinhalte darzustellen, auch wenn keine HTML-Seite enthalten ist. Sollte nur unter strenger Kontrolle aktiviert werden. DAV und SSL sollte ebenso nur bei Bedarf aktiviert werden.
Nun müssen wir im weiteren Unterverzeichnis extra die Datei httpd-xampp.conf bearbeiten. Folgende Stellen müssen entfernt werden:

<Directory “D:/xampplite/htdocs/xampplite”>
<IfModule php5_module>
<Files “status.php”>
php_admin_flag safe_mode off
</Files>
</IfModule>
</Directory>

Alias /security “D:/xampplite/security/htdocs/”
<Directory “D:/xampplite/security/htdocs”>
<IfModule php5_module>
<Files “xampplitesecurity.php”>
php_admin_flag safe_mode off
</Files>
</IfModule>
AllowOverride AuthConfig
Order allow,deny
Allow from all
</Directory>

Alias /phpmyadmin “D:/xampplite/phpMyAdmin/”
<Directory “D:/xampplite/phpMyAdmin”>
AllowOverride AuthConfig
Order allow,deny
Allow from all
</Directory>

Alias /webalizer “D:/xampplite/webalizer/”
<Directory “D:/xampplite/webalizer”>
<IfModule php5_module>
<Files “webalizer.php”>
php_admin_flag safe_mode off
</Files>
</IfModule>
AllowOverride AuthConfig
Order allow,deny
Allow from all
</Directory>

# Access restriction via Remote
<IfModule auth_remote_module>
<Directory “D:/xampplite/htdocs/fonts”>
AllowOverride All
AuthType Basic
AuthName “AUTH REMOTE TEST”
AuthRemoteServer localhost
AuthRemotePort 80
AuthRemoteURL /forbidden/
Require valid-user
#User: user / Password: pass
</Directory>
</IfModule>

# Access restriction via MySQL
<IfModule mysql_auth_module>
<Location /restricted>
AuthMySQLEnable On
AuthName “MySQL Secured Place”
AuthType Basic
require valid-user
AuthMySQLHost localhost
AuthMySQLUser root
# AuthMySQLPassword
AuthMySQLDB webauth
AuthMySQLUserTable user_pwd
AuthMySQLNameField name
AuthMySQLPasswordField pass
AuthMySQLPwEncryption none
</Location>
</IfModule>

Weitere Anleitungen um die Apache-Konfiguration anzupassen, findet man auf der Homepage www.apache.org
Da wir nun die Apache Konfiguration etwas entrümpelt haben, widmen wir uns nun der PHP Konfiguration.
Hierzu müssen wir in das Verzeichnis apache/bin dort finden wir die php.ini, die ebenfalls in einem Texteditor geöffnet werden kann.
Hier gilt es einige einstellungen anzupassen. Einfach nach dem Befehl suchen und die entsprechende Einstellung vornehmen:

Safe Mode dient dazu das die PHP Prozesse abzusichern.
safe_mode = On

Open Basedir gibt vor in welchem Verzeichnis php-Scripte ausgeführt werden dürfen und auf welches Verzeichnis der Zugriff begrenzt ist:
open_basedir = “HTDOCS-Verzeichnis”

Verschleiert das man von außen sehen kann das php installiert ist:
expose_php = Off
register_globals = Off

Verhindert das öffnen von Webseiten aus einem Script heraus:
allow_url_fopen = Off

Das sind die wichtigsten Einstellungen. Somit hat man schon eine solide Basis. Wenn man noch mehr tun möchte, so kann man noch alle nicht benötigten Verzeichnisse aus dem xampp-Verzeichnis entfernen: “webdav”, “webalizer”, “sendmail”, “security”, “phpMyAdmin”, “perl”, “mysql”, “licenses”, “install”.

Apache lässt sich nun mit apache_start.bat aus dem xampp-Verzeichnis starten. Hierbei lässt sich auch gut sehen, ob es probleme mit der angepassten Konfigurationsdatei gibt. Um Apache im Hintergrund laufen zu lassen kann im Verzeichnis “apache” die Datei apache_installservice.bat ausgeführt werden. Durch aufrufen der Url: http://localhost sehen wir nun ob der Apache läuft und PHP geladen wird, sobald die Übersicht der XAMPP-Seite kommt. Um nun eigenen Inhalt benutzen zu können muss das Verzeichnis htdocs von den vorinstallierten Inhalten befreit werden.

Nun haben wir einen schlanken einfachen Webserver und haben weniger Arbeit in die Konfiguration gesteckt, als wenn wir Apache und PHP einzeln eingerichtet hätten.
Die Konfigurationsdateien, habe ich im bereits geänderten Zustand auch hier zum Download: Conf Download

Kommentare

Einen Kommentar schreiben




CAPTCHA-Bild CAPTCHA Audio
Bild neuladen