Skip to content

Nerd - Download Free Source Code


Site Tools
Narrow screen resolution Wide screen resolution Auto adjust screen size Increase font size Decrease font size Default font size
You are here: Home

Annunci

.:: Benvenuti in Nerd! ::.
Nerd è una community dedicata al mondo dell'information tecnology e in maniera specifica alla programmazione. Date il vostro contributo pubblicando: codici sorgenti, guide e articoli.

 .:: Aggiornamenti downloads ::.
All'applicazione web "Questionario Di Valutazione" è stato integrato il PHPIDS (PHP-Intrusion Detection System).

 
Rendere sicura un applicazione web 2.0 PDF Stampa E-mail
venerdì 25 settembre 2009

ImageIn questo tutorial verrà presentato un Application-based IDS (Intrusion Detection System), un sistema che protegge le vostre applicazioni web-based da attacchi che possono essere effettuati direttamente da query-string : SQL Injection, XSS (Cross Site Scripting), RFI (Remote File Inclusion), LFI (Local File Inclusion). L'Intrusion Detection System o IDS è un dispositivo software (avvolte anche hardware ) utilizzato per rilevare tutti gli attacchi alle reti informatiche e ai computer. Questi attacchi includono gli attacchi alle reti informatiche tramite lo sfruttamento di un servizio vulnerabile, attacchi attraverso l'invio di dati malformati e 


 

applicazioni malevole, tentativi di accesso agli host tramite innalzamento illecito dei privilegi degli utenti, accessi non autorizzati a computer e file, e i classici programmi malevoli come virus, trojan e worm. Esistono diverse tipologie di IDS, quello che tratteremo, riceve come input i dati che viaggiano attraverso la query-string, monitorando la navigazione degli utenti. Il metodo di rilevamento (detection method) delle intrusioni consiste in un' analisi basata sull'abuso. Componente fondamentale di questo tipo di analisi è il database di riferimento (Knowledge base), contenente le caratteristiche di ogni attacco (modello di attacco) riconoscibile. Tutte le attività monitorate vengono confrontate con i modelli di attacco collezionati nel Database di riferimento e in caso di riscontro si genera un allarme. Le attività che non trovano riscontro con i modelli di attacco disponibili, sono associati ad un uso legittimo del sistema sotto osservazione. I principali svantaggi di tali sistemi sono: generare il database di riferimento e mantenerlo sempre aggiornato è un attività costosa; se il modello di un dato attacco non è presente nel database, allora questo non può essere rilevato. L'unico grande beneficio che invece hanno è quello di generare un numero basso di falsi positivi ( con falso positivo s'intende un attività legittima vista per errore come abuso ) .

Dopo tutta questa presentazione teorica possiamo passare alla pratica. Ora mostreremo, che con poche righe di codice, è possibile proteggere un applicazione web-based scritta in PHP (PHP based web application), utilizzando la libreria gratuita PHPIDS.

PHPIDS (PHP-Intrusion Detection System) è semplice da usare, ben strutturata e veloce. L'IDS filtra qualsiasi input dannoso, riconoscendo quando un utente malintenzionato, tenta di rompere il vostro sito e reagisce nel modo in cui si desidera. Basato su un insieme di regole, che assegnano ad ogni attacco un voto numerico di "impatto",  rende facile decidere quale tipo di azione dovrebbe seguire il tentativo di hacking. Questo potrebbe andare dal semplice invio di un messaggio di posta al team di sviluppo, al visualizzare un messaggio di avviso per l'attaccante o addirittura terminare la sessione dell'utente.

I passi da seguire per incorporarlo nella vostra applicazione sono i seguenti:

1. Download e posizionamento dei file:

a) E' possibile scaricare la versione più aggiornata della libreria dal seguente indirizzo http://php-ids.org/downloads/ .

b) Una volta scaricato il contenuto compresso, estraetelo in una locazione qualsiasi del vostro file system. Successivamente cercate nella cartella estratta, la directory "IDS", contenuta nella sotto-cartella "lib". Una volta trovata, copiatela nella directory principale della vostra applicazione web.

2. Preparazione del Database:

a) PHPIDS effettua anche il log delle intrusioni su database. Per renderlo possibile dobbiamo creare la seguente tabella nel db usato dalla nostra applicazione:

CREATE TABLE IF NOT EXISTS `PHPIDSintrusions` (
      `id` int(11) unsigned NOT null auto_increment,
      `name` varchar(128) NOT null,
      `value` text NOT null,
      `page` varchar(255) NOT null,
      `ip` varchar(15) NOT null,
      `impact` int(11) unsigned NOT null,
      `origin` varchar(15) NOT null,
      `created` datetime NOT null,
      PRIMARY KEY  (`id`)
    ) ENGINE=MyISAM ;

3. Configurazione:

a) La vostra applicazione è sicuramente costituita dal un file (ad es. index.php), contenuto nella root directory (ovvero in cui il server web cerca il file principale di un sito), che viene sempre caricato quando gli utenti navigano le pagine del sito. In questo file dovete aggiungere le seguenti righe di codice:

   /********************************************************************
    * Inizio PHPIDS
    * Se voglio disabilitare l'IDS basta che elimino il codice fino al commento con Fine IDS        
    *********************************************************************/

    // configura in modo appropriato la include path per PHPIDS
    set_include_path(
        get_include_path()
        . PATH_SEPARATOR
        . '../../lib/'
    );

    if (!session_id()) {
        session_start();
    }

    require_once 'IDS/Init.php';

    try {

    /*
    * Definiamo dove vogliamo effettuare lo scan
    */
    $request = array(
        'REQUEST' => $_REQUEST,
        'GET' => $_GET,
        'POST' => $_POST,
        'COOKIE' => $_COOKIE
    );

    $init = IDS_Init::init(dirname(__FILE__) . '/../IDS/Config/Config.ini');
    
    /**
     * Impostiamo via codice delle variabili nel file di configurazione
     */
    
    $init->config['General']['base_path'] = dirname(__FILE__) . '/../IDS/';
    $init->config['General']['use_base_path'] = true;
    $init->config['Caching']['caching'] = 'none';

    // 2. Inizializziamo il PHPIDS e lo avviamo

    $ids = new IDS_Monitor($request, $init);
    $result = $ids->run();

    /*
    * Ecco fatto - Ora possiamo analizzare i risultati dello scan:
    *
    * Nell' oggetto result trovate tutti i campi sospetti della query string
    *
    * Nota: è possibile cambiare il formato del messaggio contenuto in result, modificando nel IDS_Report.php il metodo __toString.
    */
    if (!$result->isEmpty()) {
        echo "Attack detected!";

        /*
        * Inizializzo il log su file e lo attivo
        */
        require_once dirname(__FILE__) . '/../IDS/Log/File.php';
        require_once dirname(__FILE__) . '/../IDS/Log/Composite.php';

        $compositeLog = new IDS_Log_Composite();
        $compositeLog->addLogger(IDS_Log_File::getInstance($init));
        $compositeLog->execute($result);
        /*
        * I stessi dati li salvo su DB nella tabella PHPIDSintrusion
        */
        require_once 'IDS/Log/Database.php';

        $compositeLog->addLogger(
             IDS_Log_Database::getInstance($init)
        );
        */
        $compositeLog->execute($result);
        
    } else {
        echo '<a href="?test=%22><script>eval(window.name)</script>">No attack detected - click for an example attack</a>';
    }
        }
    catch (Exception $e) {
    /*
    * C'è statoun grave errore

    */
    printf(
        'An error occured: %s',
        $e->getMessage()
    );
                         }
    /********************************************************************
    * Fine PHPIDS
    * Cancellare fino a qui       
    *********************************************************************/  


Ovviamente questo è solo un esempio di utilizzo e configurazione, il codice può essere personalizzato in base alle proprie esigenze. 

4. Mantenere aggiornato il database di riferimento:

Una volta aver installato e configurato l'IDS, per mantenerlo efficiente, dobbiamo aggiornare il database di riferimento (contenente i modelli di attacco). Per farlo, basta scaricare il file default_filter.xml al seguente indirizzo https://svn.php-ids.org/svn/trunk/lib/IDS/default_filter.xml e sostituirlo nella cartella principale dell'IDS. Questo viene aggiornato almeno una volta alla settimana.

Per maggiori informazioni potete consultare una ricca documentazione qui: http://forum.php-ids.org/ e se riscontrate problemi, spedite un e-mail a Indirizzo e-mail protetto dal bots spam , deve abilitare Javascript per vederlo

 

Ultimo aggiornamento ( venerdì 25 settembre 2009 )
 
Pros. >




La pagina è stata generata in 0.013298 secondi

Sondaggi

Quale linguaggio reputi migliore per lo sviluppo di applicazioni web?
 

Link

Image

Image

Image

Image

Design Multimedia

Campagna Anti-If

Campagna Anti-IF

Statistiche

Utenti: 13
Notizie: 48
Collegamenti web: 16
Visitatori: 122603

Login Form






Password dimenticata?
Nessun account? Registrati

Copyright

        Image
I codici sorgenti di questo sito sono stati rilasciati sotto la licenza CC-GNU GPL.

Syndication

Chi è online

Abbiamo 2 visitatori online