PHP: Sicherheit mit suhosin

Selbst geschriebene oder OpenSource PHP-Anwendungen, wie auch dieser Blog, sind immer nur begrenzt sicher. Immer wieder werden Sicherheitslücken gefunden und es beginnt ein Wettlauf im aktualisieren bevor jemand versucht diese Lücke anhand von einem fertigen Exploit (Wikipedia) auszuprobieren.

Hier hilft vorbeugen. Suhosin ist ein umfangreiches Schutzsystem für die eigene PHP Installation. Entwickelt wurde dieser Patch, um Server und Benutzer sowohl vor bekannten und unbekannten Fehlern in PHP Anwendungen als auch im PHP Kern zu schützen. Suhosin besteht aus zwei voneinander unabhängigen Teilen, welche entweder einzeln oder auch kombiniert verwendet werden können.

Der erste Teil ist ein kleiner Patch im PHP Kern, der verschiedene Schutzfunktionen vor low-level Pufferüberläufen und zum Schutz von Format String Schwachstellen, die noch nicht beseitigt wurden oder konsstruktionsbedingt nicht vollständig geschützt werden können.

Der zweite Teil des Suhosin Schutzsystems ist eine mächtige, leistungsfähige PHP Erweiterung, die alle anderen Schutzfunktionen anbietet. Anders als der PHP Patch zur PHP Härtung ist Suhosin binär kompatibel zur PHP Installation und ist ein Mittel, die einer PHP Installation eine binäre Erweiterung beifügt, wie sie beispielsweise auch durch den ZendOptimizer hinzugefügt werden kann. Im weitesten Sinn ist Suhosin also eine Erweiterung für PHP.

Seit Debian Etch ist Suhosin auch als Paket erhältlich und muss also nicht selber kompiliert werden. Da jedoch Debian von Natur aus sehr konservativ gegenüber neuen Version ist, sollte man sich überlegen diese PHP-Pakete von einer externen Quelle zu beziehen.

Hier bietet sich dotdeb.org an. Was genau in die /etc/apt/sources.list eingetragen werden muss um in den Genuss der aktuellsten Pakete zu kommen steht auf der Webseite. Zu Beachten ist jedoch das diese Pakete wie gesagt von einer externen Quelle stammen und Debian entsprechend vor der Installation warnt.

apt-get install php5-suhosin

hiermit installieren wir suhosin. Da es kein gewöhnliches Plugin für Apache ist, muss es auch nicht erst aktiviert werden, sondern ist nach einem Neuladen der Konfiguration mit sofort aktiv:

apache2ctl graceful

Überprüfen wir das Ganze indem wir eine info.php erstellen und die folgenden Zeilen einfügen:

<?
phpinfo();
?>

wir finden dort einen Eintrag wie

This server is protected with the Suhosin Patch 0.9.6.2
Copyright (c) 2006 Hardened-PHP Project

im Error-Log von Apache finden wir nun immer die abgefangenen Anfragen, z.b.

[Thu Jun 28 21:41:50 2007] [error] [client 12.23.34.45] ALERT – configured GET variable value length limit exceeded – dropped variable ‘content’ (attacker ‘12.23.34.45’, file ‘/var/www/example.com/www/htdocs/(…).php’), referer: http://example.com/(…).php

Hier noch die Links:

Suhosin
Debain Suhosin
dotdeb

Author: admirableadmin

Hello World! Ich bin Andreas Peichert und entwickle und programmiere Software seit 2000. Zurzeit arbeite ich als Senior Solution Architect.

2 thoughts on “PHP: Sicherheit mit suhosin”

  1. Ich administriere die o. a. Site als Rentner (1942) ehrenamtlich, wie das nunmal beim Amateurfußball so üblich ist.

    Ich habe das Problem, dass unsere Sites bereits ein paar Mal gecrackt wurden, indem an die <php die Anweisungen eines Trojaner in Form von eval-Strings angehängt werden.
    Ich möchte nun die eval-Funktion deaktivieren und bin dabei auf suhosin gestoßen, was mir möglicherweise weitere Verbesserungen bezüglich Server-Sicherheit bietet.
    Wie kann ich suhosin auf einem Shared Server von 1 & 1 (Paket: Dual Basic) nutzen?

    Beste Grüße

    F. Frenzel

  2. Ich kenne die die 1&1 Pakete nicht im Detail, jedoch teilt man sich bei “Shared Hosting” die Hardware mit anderen Kunden. suhosin wird als Webserver-Modul global eingebunden und da dies dann alle Kunden auf dem gleichen Server betrifft werden manche Provider diese Option nicht anbieten.

    Hier rate ich bei dem Provider 1&1 direkt anzufragen ob suhosin aktiviert werden kann. Ich vermute aber eine negative Antwort. Vielleicht ist es stattdessen eher möglich für Ihre Webseite eine php.ini Datei zu bearbeiten, wodurch per “disable_functions” die eval-Funktion auch deaktiviert werden kann.

    Viel wichtiger ist jedoch die verwendete Software, in Ihrem Fall WordPress, immer auf dem aktuellen Stand zu halten. Das gleiche gilt für und die Plugins.

Leave a Reply

Your email address will not be published. Required fields are marked *