PHPIDS

PHPIDS Intrusion Detection System

PHPIDS è un Sistema di Intrusion Detection di facile installazione che vi permette di proteggere tutte le vostre applicazioni web, siti e script php senza influire sulla velocità di esecuzione degli stessi.

PHPIDS è gratis ed è giunto ora alla versione 0.5.3.

Come funziona

Lo script, che va incluso nelle pagine da mettere in sicurezza (oppure preposto in tutte le richieste http tramite un settaggio del php.ini che vedremo tra poco), analizza le richieste senza filtrare o “strippare” l’input, semplicemente riconosce il codice maligno reagendo esattamente come volete voi, anche in base alla gravità dell’attacco; per esempio potete istruire l’IDS per terminare il caricamento della pagina dopo aver loggato ip e input del potenziale intruso.

PHPIDS è in grado di riconoscere tentativi di attacco XSS, SQL Injection, header injection, directory traversal, RFE/LFI, DoS e LDAP. Può inoltre rilevare le richieste ostili che sono state offuscate, come la codifica del codice iniettato nel charset UTF-7 o nelle entità Unicode, decimale ed esadecimale.

Esempio di codifica UTF-7:

+ADw-script+AD4-alert(’Hacked!’)+ADsAPA-/script+AD4-

che decodificato diventa:

<script>alert(’Hacked!’);</script>

L’analisi degli input è basata su una serie di regole di filtraggio raccolte in un unico file XML in costante sviluppo; questo ci agevola molto nel mantenere aggiornate le definizioni degli attacchi.
Ad ogni regola è assegnato anche un “impatto” in forma numerica, che determina la gravità del tipo di attacco che si sta subendo: in base all’impatto è quindi possibile definire e personalizzare i comportamenti di phpids nel neutralizzare il tentativo di intrusione .
Per tenere traccia degli attacchi rilevati sono disponibili funzioni di logging su file di testo, DataBase o tramite l’invio di mail e possiamo implementare queste funzioni anche contemporaneamente.

If ($result->getImpact() >= 40) /* Impatto */
{
require_once ‘IDS/Log/File.php’;
require_once ‘IDS/Log/Email.php’;
require_once ‘IDS/Log/Composite.php’;
$compositeLog = new IDS_Log_Composite();
$compositeLog->addLogger(IDS_Log_File::getInstance($init),
IDS_Log_Email::getInstance($init)); /*Loggo su file e mail*/
/* Interrompo il caricamento */
die(’<h1>Il tuo attacco è stato Loggato!</h1>’);
}

Installazione ed utilizzo

Per l’installazione e la configurazione segnalo un ottimo tutorial che trovate su Howtoforge, oltre alle FAQ ufficiali dell’IDS.

Il mio consiglio, per una soluzione più elegante e sopratutto immediata, è quello di scrivere il codice da includere nelle pagine in un file separato phpids.php e di valorizzare il parametro auto_prepend_file del php.ini con la /path/assoluta/del/file/phpids.php, come descritto nella guida di howtoforge.
Altrimenti possiamo sempre usare le funzioni include e require del php.

Se preferite la prima soluzione, ma possedete un dominio in hosting condiviso come Aruba, dovrete avere determinate accortezze facendo l’override dell’ini del gestore nella vostra root.
Infatti se non replicate tutti i parametri necessari, questi assumeranno i valori default di apache, sicuramente meno ottimizzati.
Se non siete sicuri su come procedere, potete usare (su Aruba) uno dei due file di configurazione scaricabili da questo post di Capn3m0 aggiungendo in coda questa riga (modificata a dovere):

auto_prepend_file = /path/assoluta/del/file/phpids.php

Se non conoscete la path assoluta caricate nel browser una pagina contenente il codice <? phpinfo(); ?> e controllate a fianco della voce DOCUMENT_ROOT il rispettivo valore.

Risorse & Supporto