PHP-Intrusion Detection System – PHPIDS
13. August 2008PHPIDS ist ein System zur Erkennung von Angriffen auf Webseiten. Es ist ein in PHP geschriebenes Werkzeug mit dem man eingehende Requests auf potenzielle Gefahren wie SQL-Injection, XSS und andere prüfen kann.
Als Basis dient eine XML Datei mit Filtern die regelmäßig aktualisiert wird. Somit ist man auch für die neuen Ideen der Hacker gewappnet.
Das Tool lässt sich besonders einfach einsetzten wenn man das Design Pattern “Filter” einsetzt.
Die Dateien müssen einfach heruntergeladen werden und in den include_path aufgenommen werden.
Config.ini
Als erstes muss man die Config.ini anpassen. Dort müssen die richtigen Pfade eingetragen werden und entschieden werden wie das Caching geschehen soll.
Zu Auswahl stehen:
- Datei
- Datenbank
- Memcache
Wenn man das mitgelieferte Logging verwenden möchte, muss man hier auch Einstellungen vornehmen.
Ich bevorzuge mein bestehendes Logging zu verwenden und einen Angriff über eine Exception zu signalisieren.
Hier kann man auch Felder definieren in den HTML vorkommen darf oder welche Werte nicht geprüft werden sollen.
html[] = feld_name_mit_html exceptions[] = feld_name_welches_nicht_geprüft_wird
Da in dieser Datei wichtige Informationen für Hacker stehen, darf die Datei nicht über das Web sichtbar sein und sollte außerhalb des Webroots liegen.
Filter Beispiel
Hier ein Beispiel eines Filters der vor jeder Aktion auf der Seite ausgeführt.
require_once 'IDS/Init.php';
class Filter_IDS implements Filter_Base{
/**
* @param FrontControler_HttpRequest
* @param FrontControler_HttpResponse
*/
public function execute(FrontControler_HttpRequest $oFrontControler_HttpRequest,
FrontControler_HttpResponse $oFrontControler_HttpResponse){
$aRequest = array(
'GET' => $_GET,
'POST' => $_POST,
'COOKIE' => $_COOKIE
);
$oIDS_Init = IDS_Init::init(/pfad/zu/der/Config.ini);
$oIDS_Monitor = new IDS_Monitor($aRequest, $oIDS_Init);
$oIDS_Report = $oIDS_Monitor->run();
if(!$oIDS_Report->isEmpty()){
if($oIDS_Report->getImpact()>4){
throw new InvalidAccesException('IDS Filter: '.$oIDS_Report);
}
}
}
}
In diesen Fall wird erst ab einen Impact größer als 4 Alarm geschlagen. In diesen Fall wird eine InvalidAccessException geworfen. Diese wird zusammen mit der IP geloggt und wenn diese IP eine bestimmte Anzahl solcher Einträge hat, werden alle Anfragen von der IP für eine bestimmte Zeit gesperrt.
Fazit
Die Geschwindigkeit von PHPIDS ist sehr gut und die Meldungen sind sehr aussagekräftig (siehe unten).
Wichtig: Die Filter schlagen oft unerwartet Alarm. Deshalb sollte man den Filter erstmal Testweise einbauen und nicht auf die “Angriffe” reagieren sondern die Werte erst mal Loggen da man sonst seine Benutzer verärgern könnte.
Tags: PHP, sicherheit
Der Beitrag wurde am Mittwoch, den 13. August 2008 um 15:49 Uhr veröffentlicht und wurde unter PHP abgelegt. du kannst die Kommentare zu diesen Eintrag durch den RSS 2.0 Feed verfolgen. du kannst einen Kommentar schreiben, oder einen Trackback auf deiner Seite einrichten.

