sabato 18 agosto 2012

Trasformare pfSense in un sistema IDS/IPS

Un firewall basato solo sul filtro dei pacchetti può non essere sufficiente o comunque sarebbe poco efficace, per questo motivo negli ultimi anni i firewall più completi includono anche un sistema IDS e IPS. Con quest'articolo vedremo cos'è un IDS/IPS e come trasformare il nostro pfSense in un potente firewall completo di sistema IDS/IPS in grado di competere con le maggiori soluzioni presenti sul mercato.

Un Intrusion Detection System è un insieme di tecniche e metodologie realizzate ad-hoc per rilevare pacchetti dati sospetti a livello di rete, di trasporto o di applicazione. A differenza di un packet filter, non si limita a guardare se i pacchetti in transito sono originati e destinati secondo regole stabilite dall'utente, ma effettua un'analisi più approfondita dei pacchetti. Un IDS non effettua nessun tipo di blocco delegando quest'attività al firewall.

Un Intrusion Prevention System può essere considerato come un dispositivo in grado di completare il lavoro dell'IDS andando a bloccare il traffico identificato dall'IDS come pericoloso. Quest'attività può essere fatta in modo autonomo o semplicemente generando dinamicamente delle regole di firewall. Quindi, in modo molto sintetico, un IPS non è altro che il dispositivo che permette il dialogo tra IDS e firewall.

Anche pfSense come tutti i firewall moderni può essere dotato di sistema IDS/IPS installando il pacchetto Snort.



Snort è un IDS/IPS gratuito ed open source creato da Martin Roesch nel 1998 ed attualmente è sviluppato e mantenuto da Sourcefire, società fondata dallo stesso Roesch. Snort combina i benefici dei metodi signature, protocol e anomaly-based inspection per analizzare e proteggere la rete. Snort è senza dubbio il sistema IDS più utilizzato e diffuso al mondo e può contare milioni di download, 400.000 utenti registrati e l'inclusione del suo motore in molti firewall. Questo lo rende lo standard di fatto degli IDS/IPS.

Le caratteristiche principali sono: capacità di effettuare analisi del traffico e packet logging in tempo reale; protocol analysis; content searching/matching e detect di una grande quantità di attacchi e sonde, come buffer overflows, port scans, attacchi CGI e tentativi di violare il sistema.

Viste le premesse direi di non perdere altro tempo e procedere con la configurazione del nostro IDS.

Per prima cosa occorre installare il pacchetto accedendo al menù System > Packages > Available Packages ed installando i seguenti pacchetti:
- Snort
- Dashboard Widget: Snort

Completata l'installazione occorre procurarsi un codice OinkCode direttamente dal sito snort.org. Questo codice consente il download degli aggiornamenti delle definizioni per il nostro IDS.
Per poter ottenere un codice OinkCode occorre registrarsi e successivamente selezionare il menù myAccount e poi Subscription and Oinkcodes


Ottenuto il codice possiamo procedere con la configurazione di Snort. Accediamo al menù Services > snort > Global Settings, selezioniamo la voce Install Basic Rules e nel campo Code inseriamo il codice OinkCode. Come aggiornamento un buon compromesso può essere quello di scaricare gli aggiornamenti ogni 12 o 24 ore.
Procediamo ora selezionando Remove blocked hosts every: 1 Hour. Questo valore è sufficiente per bloccare gli scocciatori e far si che rivolgano la loro attenzione verso prede più semplici.
Ora clicchiamo su Save per memorizzare la configurazione.


Accediamo al menù Services > snort > Global Settings e procediamo con il primo download delle regole e firme, clicchiamo su Update Rules ed attendiamo che il processo sia completato. Terminato l'aggiornamento clicchiamo su Return.


Ora procediamo con la creazione della nostra whitelists per evitare che gli ip delle WAN, del provider o dei DNS del provider vengano accidentalmente bloccati da snort.
Accediamo al Services > snort > Whitelists, clicchiamo su aggiungi e procediamo configurando la nostra whitelists. La configurazione è molto semplice ed il menù è auto esplicativo, pertanto non ci soffermeremo su come configurare le whitelists.

Procediamo con la configurazione delle interfacce che intendiamo monitorare. Normalmente si tende ad includere nelle interfacce solo le WAN e le DMZ, ma in alcuni casi può essere utile creare un monitor anche per l'interfaccia LAN per verificare che gli host interni non siano essi stessi vettori di attacchi.


Selezioniamo la voce di menù Services > snort > Snort Interfaces e clicchiamo su Add ed inseriamo i seguenti valori

Enable: Yes
Interface: Wan
Memory Performance: AC-STD oppure AC-SPARSEBANDS
Block Offenders: Yes
Whitelist: La whitelist precedentemente creata
Al termine clicchiamo su Save per memorizzare la configurazione


Torniamo a modificare il nostro monitor cliccando su edit e selezionando Services > snort > Snort Interfaces > Categories
In questa pagina abbiamo la possibilità di scegliere le categorie delle regole che vogliamo utilizzare. E' importante ricordare che più regole selezioneremo, maggiore sarà la possibilità di incappare in falsi positivi. Nella selezione delle categorie non esiste una regola specifica, occorre procedere secondo quelli che sono i servizi pubblicati su internet dal nostro firewall, l'utilizzo fatto del firewall, ecc...
L'affinamento della configurazione del firewall può richiedere diversi giorni in cui va tenuto monitorato il comportamento di snort e si procede via via affinandone la configurazione.
Dopo aver selezionato le categorie procediamo cliccando su Save.

Alcuni tipi di attacchi non possono essere identificati attraverso le signatures, ma occorre analizzare in tempo reale il traffico. Per effettuare questo tipo di analisi vengono utilizzati i preprocessors, che hanno lo scopo di analizzare il traffico e normalizzarlo.


Per attivare i preprocessors selezioniamo il menù Services > snort > Snort Interfaces > Preprocessors e configuriamo la sezione con i seguenti dati

Performance Statistics
enable: yes
HTTP Inspect Settings
enable: yes
General Preprocessor Settings
In questa sezione possiamo selezionare i protocolli per cui è necessario attivare il preprocessors.
Clicchiamo su Save

La configurazione della nostra interfaccia è conclusa, se vogliamo configurare più interfacce non dobbiamo far altro che ripetere la procedura.

Ora la configurazione base del nostro IDS/IPS è pronta, non ci resta che avviare il servizio quindi accediamo a Services > snort > Snort Interfaces e clicchiamo sui pulsanti verdi per avviare il servizio.

A questo punto possiamo fare qualche test per verificare che il nostro IDS stia funzionando correttamente, per farlo possiamo utilizzare servizi di network scan online come http://nmap-online.com o http://www.grc.com
Dopo le prime prove dovremmo vedere apparire negli alerts gli IP dei server utilizzati per il test.

Nelle prime ore/giorni è consigliabile verificare i log di Snort accedendo al menù Services > snort > Alerts, questo menù riporterà i tentativi d'accesso non autorizzati e gli eventuali IP bloccati. Analizzando questo log possiamo individuare falsi positivi ed IP erroneamente bloccati e che potremo successivemente inserire nella nostra whitelist.

Note:
  • Per l'utilizzo di Snort è consigliabile avere un sistema con almeno 512 MB di ram
  • In caso di sistemi in alta affidabilità (CARP), la configurazione di snort non viene replicata tra i firewall in modo automatico, ma occorre riportarla manualmente.
Posta un commento