Webserver sicherer machen

Dieses Howto bringt natürlich keine hundertprozentige Sicherheit, aber es wird eine wichtige Konfiguration beschrieben, um zu verhindern, dass ein Angreifer auf leichte Art und Weise die Version des Webservers und evtl. auch die PHP-Version feststellen kann.

Viele Homeuser haben mittlerweile zuhause einen kleine Webserver stehen, auf dem meistens Apache und PHP läuft. Wenn man sich nun unter Linux mit dem Kommando „curl -I www.url.de“ die Header einer Homepage anzeigen läßt, so kann man etwas in der folgenden Art sehen:

HEAD / HTTP/1.0 HTTP/1.1 200 OK
Date: Tue, 01 Jul 2006 22:22:22 GMT
Server: Apache/2.0.55 (Ubuntu) PHP/5.1.4-1.dotdeb.2

Je nachdem, welche Module zusätzlich verwendet werden, fällt die Information evtl. noch ausführlicher aus. Diese drei Zeilen geben uns aber schon eine sehr gute Idee davon, mit was wir es hier zu tun haben. Es ist also eine Linuxmaschine, um genau zu sein ein Ubuntu-Linux, auf der Apache in der Version 2.0.55 läuft, außerdem ist PHP aktiv in der Version 5.1.4-1.dotdeb.2. Mit diesen Informationen kann man sich an eine der vielen Exploitsammlungen im Internet wenden, um so den passenden Exploit für den Angriff zu finden.

Diese Informationen sollte man also auf jeden Fall ausblenden, um es einem Hacker nicht ganz so leicht zu machen.

1.) Ausblenden der Apache-Informationen

    • man suche die httpd.conf oder die apache2.conf, je nachdem welche Version von Apache man benutzt.
    • nun sucht man nach folgender Zeile: ServerTokens …
    • ist die Zeile vorhanden steht i.d.R. „ServerTokens Full“ in der Config, was bedeuted, dass alle Informationen verfügbar sind. Genau das wollen wir ändern.
    • Eine bestehende Zeile wird angepasst zu
    • ServerTokens Prod
  1. was zur Folge hat, dass nur noch Apache angezeigt wird, alle Versionsinformationen werden ausgeblendet.
  2. Ist die Zeile noch nicht vorhanden, so kann man sie einfach in der Konfigurationsdatei einfügen
  3. Jetzt ist noch ein Reload von Apache nötig
    • Linux: /etc/init.d/apache2 reload oder /etc/init.d/httpd reload
    • Mac: sudo apachectl graceful

          2.) Ausblenden der PHP-Informationen

          • man suche die php.ini und öffnet diese zu editieren
          • man sucht darin die Zeile „expose_php“, die i.d.R. auf „On“ steht
          • die Zeile wird nun einfach abgeändert in
          • expose_php Off
        1. Apache wieder, wie oben beschrieben, neu starten und bei einem erneuten „curl -I www.url.de kann man feststellen, dass alle Informationen verschwunden sind.
          1. Damit ist der Server zwar nicht vor jedem Angriff sicher, aber man macht es einem möglichen Angreifer schon etwas schwerer, den Hebel anzusetzen.

          Schreibe einen Kommentar

          Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

          Time limit is exhausted. Please reload CAPTCHA.