XAMPP absichern
Mit XAMPP lässt sich einfach unter Windows (LAMPP für Linux) eine Webserver umgebung auf dem eigenen PC einrichten, in dem alle benötigten Module bereits enthalten sind. In diesem Fall entspricht das Apache, PHP, Perl, MySQL und noch einiges mehr.
Doch selbst die Ersteller von XAMPP warnen davor das die Software nur für den Einsatz innerhalb von lokalen Netzwerken gedacht ist und nicht für den Einsatz in produktiven Webservern. Dies reichte mir nicht und so habe ich mir die Mühe gemacht XAMPP für das Web entsprechend aufzuwerten.
Ausgangssituation:
- Windows XP
- XAMPP Lite für Windows 1.6.4
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.
Im Konfigurationsverzeichnis von Apache apache/conf 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
