Kürzlich habe ich wieder auffällige Http Attacken auf meine WebServer gesehen. Es kam hierbei zu keinem großen Problem, jedoch hab ich mir die Frage gestellt, ob es sicherere WebServer Konfigurationen als der üblichen LAMP (Linux, Apache, MySQL/MaraDB, PHP) , LNMP (…,Nginx,…) oder LLMP (…Lighttpd…) gibt. Hierbei bin ich dann auf einen interessanten Vergleich gestoßen. Natürlich muss man bei der Quelle etwas vorsichtiger sein (ist die Hiawatha projekt page), aber durchaus sehr interessamt.
Link: Performance testing while under attack
Typischerweise sind Webserver, welche seltenere verbreitet sind weniger im Punkt der Angreifer. Zudem ist Hiawatha ein WebServer, welcher auf Sicherheit ausgelegt ist. Hiawatha stammt vom Entwickler Hugo Leisink und wurde wie bereits erwähnt auf Sicherheit getrimmt. Out of the box ist er bereits gegen Denial-of-Service-Attacken gewappnet.
Nachfolgen beschreibe ich die Konfiguration von Hiawatha auf Debian Jessie mit Php5 & Php7.
System Vorbereiten, neue PHP Quellen hinzufügen & PHP5/7 installieren:
echo "deb http://packages.dotdeb.org jessie all" | tee -a /etc/apt/sources.list.d/dotdeb.list wget -qO - http://www.dotdeb.org/dotdeb.gpg | apt-key add - apt-get update apt-get remove apache* apt-get install php5 php-pear php5-curl php5-mysql php5-fpm php5-gd mariadb-server libxslt1.1 cron logrotate libpopt0 htop nano apt-get install php7.0-cli php7.0-curl php7.0-dev php7.0-fpm php7.0-gd php7.0-mysql php7.0-mcrypt php7.0-opcache php7.0-mbstring php7.0-zip
Nun den Webserver herunterladen:
cd ~ wget https://files.tuxhelp.org/hiawatha/hiawatha_10.2_amd64.deb dpkg -i hiawatha*
Im Großen und Ganzen war es das auch schon, nun geht es an die Konfiguration. Hierbei werde ich die „Standard“ Konfiguration von Php-fpm für Version 5 & 7 nutzen. Beide Versionen stellen nach der Installation einen Unix-Socket bereit. Ich trenne die PHP Konfig hier nicht nach Web/User.
PHP5 Default Socket
/var/run/php5-fpm.sock
PHP7 Default Socket
/run/php/php7.0-fpm.sock
Nun den PHP Interpreter in der Hiawatha Konfig bekannt machen:
FastCGIserver { FastCGIid = PHP5 ConnectTo = /var/run/php5-fpm.sock Extension = php } FastCGIserver { FastCGIid = PHP7 ConnectTo = /run/php/php7.0-fpm.sock Extension = php }
Und im Standard Webserver bekannt machen, unterhalb von:
# DEFAULT WEBSITE # It is wise to use your IP address as the hostname of the default website # and give it a blank webpage. By doing so, automated webscanners won't find # your possible vulnerable website. #
folgendes einfügen:
UseFastCGI = PHP7 # --> für PHP7 oder UseFastCGI = PHP5 # --> für Php 5.6
Anschließend alle Services einmal neustarten:
/etc/init.d/php7.0-fpm restart /etc/init.d/php5-fpm restart /etc/init.d/hiawatha restart
Jetzt noch schnell checken ob Hiawatha auch lauscht:
root@server:~# netstat -anp |grep hiawatha tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 9397/hiawatha tcp6 0 0 :::443 :::* LISTEN 9397/hiawatha tcp6 0 0 :::80 :::* LISTEN 9397/hiawatha
Wenn Ihr nun im Browser folgendes aufruft http://<serverip> sollte sicher Hiawatha wie folgt melden.
Um nun zu testen ob auch PHP funktioniert einfach folgendes ausführen:
echo "<?php phpinfo(); ?>" > /var/www/hiawatha/info.php
Anschließend folgendes im Browser aufrufen: http://<serverip>/info.php
Im besten Fall sieht das Ergebnis wie folgt aus: