
Automatisierter PHP-Konfigurationsprüfer, der php.ini auf Sicherheitsfehlkonfigurationen scannt, CLI- und Web-Modi unterstützt und Ergebnisse im Text-, HTML- oder JSON-Format ausgibt.
Überprüft die aktuelle PHP-Konfiguration auf potenzielle Sicherheitslücken.
Einfach diese Datei von Ihrem Webserver aus aufrufen oder über die CLI ausführen.
Diese Software wurde von Ben Fuhrmannek, SektionEins GmbH, entwickelt, um php.ini-Prüfungen zu automatisieren und mehr Zeit für erfreulichere Aufgaben zu haben.
CLI: Rufen Sie einfach php phpconfigcheck.php auf. Das war's. Fügen Sie -a hinzu, um auch versteckte Ergebnisse zu sehen, -h für HTML-Ausgabe und -j für JSON-Ausgabe.
WEB: Kopieren Sie dieses Skript in ein beliebiges Verzeichnis, auf das Ihr Webserver zugreifen kann, z. B. Ihr Dokumentenroot. Siehe auch 'Sicherheitsvorkehrungen' weiter unten.
Die Ausgabe im Nicht-CLI-Modus ist standardmäßig HTML. Dieses Verhalten kann durch Setzen der Umgebungsvariablen PCC_OUTPUT_TYPE=text oder PCC_OUTPUT_TYPE=json geändert werden.
Einige Testfälle sind standardmäßig ausgeblendet, insbesondere übersprungene, erfolgreiche und unbekannte/nicht getestete. Um alle Ergebnisse anzuzeigen, verwenden Sie phpconfigcheck.php?showall=1. Dies gilt nicht für die JSON-Ausgabe, die standardmäßig alle Ergebnisse zurückgibt.
Um das Ausgabeformat im WEB-Modus zu steuern, verwenden Sie phpconfigcheck.php?format=..., wobei der Wert von format einer von text, html oder json sein kann. Beispiel: phpconfigcheck.php?format=text. Der Parameter format hat Vorrang vor PCC_OUTPUT_TYPE.
In den meisten Fällen ist es eine gute Idee, sicherheitsrelevante Informationen wie Ihre PHP-Konfiguration für sich zu behalten. Die folgenden Sicherheitsvorkehrungen wurden implementiert:
mtime-Prüfung: Dieses Skript funktioniert im Nicht-CLI-Modus nach zwei Tagen nicht mehr. Die erneute Aktivierung der Prüfung kann durch touch phpconfigcheck.php oder durch erneutes Kopieren des Skripts auf Ihren Server (z. B. per SCP) erfolgen. Diese Prüfung kann durch Setzen der Umgebungsvariablen deaktiviert werden: PCC_DISABLE_MTIME=1, z. B. SetEnv PCC_DISABLE_MTIME 1 in der Apache .htaccess.
Quell-IP-Prüfung: Standardmäßig kann nur localhost (127.0.0.1 und ::1) auf dieses Skript zugreifen. Andere Hosts können durch Setzen von PCC_ALLOW_IP auf Ihre IP-Adresse oder ein Wildcard-Muster hinzugefügt werden, z. B. SetEnv PCC_ALLOW_IP 10.0.0.* in .htaccess. Sie können auch wählen, über SSH-Portweiterleitung auf Ihren Webserver zuzugreifen, z. B. ssh -D oder ssh -L.
Deaktivierte Funktionen: Dieses Skript benötigt einige Funktionen, um ordnungsgemäß zu funktionieren, wie ini_get() und stat(). Wenn eine dieser Funktionen auf der Blacklist steht (oder nicht auf der Whitelist), schlägt die Ausführung fehl oder erzeugt ungültige Ausgaben. In diesen Fällen ist es möglich, Suhosin vorübergehend in den Simulationsmodus zu versetzen und disable_functions zu umgehen. Um auf der sicheren Seite zu sein, kann eine lockere Sicherheitskonfiguration mit .htaccess in einem separaten Verzeichnis erfolgen. Dieses Skript kann auch von der Kommandozeile aus mit der Konfiguration Ihres Webservers aufgerufen werden, z. B. php -n -c /etc/.../php.ini phpconfigcheck.php.
CLI: Ältere PHP-Versionen kennen den SAPI-Namen 'cli' nicht und verwenden CGI-artige Ausgaben selbst im CLI-Modus. Workaround: PCC_OUTPUT_TYPE=text /opt/php/php-5.1.6/bin/php phpconfigcheck.php
Dieses Tool unterstützt Sie lediglich bei der Einrichtung einer sicheren PHP-Umgebung. Sonst nichts. Ihre Einrichtung, Software oder eine damit verbundene Konfiguration kann dennoch anfällig sein, selbst wenn die Ausgabe dieses Tools etwas anderes suggeriert.