NAME
statefulProtect - Script parametrico usato per monitorare eventi stateful
SYNOPSIS
statefulProtect NOME_EVENTO INTERVALLO SOGLIA_EVT SOGLIA_RED FREQ_EMAIL FILE_CONSENTITI NOTIFICA FILTRO LISTA_EVENTI
DESCRIPTION
Utilizzato per applicare le regole del tipo STATEFUL_FILTER specificate nel file di configurazione /etc/aLid/aLid.conf. L'analisi dei pacchetti avviene tramite l'analisi del file di log di iptables. Consente di intercettare eventi identificati da più pattern in sequenza:
Es. Three way handshake
Il protocollo TCP nella fase iniziale della comunicazione fra due host prevede un preciso scambio di pacchetti:
PC1 --- SYN --> PC2 | PC1 <-- SYN ACK -- PC2 | PC1 --- ACK --> PC2
Per descrivere un filtro che intercetta questo evento bisogna definire le espressioni regolari corrispondenti e il ruolo del ip responsabile dell'evento. L'ip responsabile in questo caso e' l'ip che avvia la sincronizzazione; nel primo e nel terzo pacchetto e' l'ip sorgente (I), mentre nel secondo pacchetto e' il destinatario(O).
EXPRESSION=RES=\w+\sSYN\sURGP TARGET=I EXPRESSION=RES=\w+\sACK\sSYN\sURGP TARGET=O EXPRESSION=RES=\w+\sACK\sURGP TARGET=I
OPTIONS
- NOME_EVENTO
-
Specifica il nome dell'evento a cui viene associata la regola. Il nome dell'evento consente poi di identificare la regola che lancia una notifica o regola di drop. Il nome dell'evento e' univoco in tutte le regole.
- INTERVALLO
-
E' il valore, in secondi, della finestra temporale da analizzare. Sia N il valore dell'intervallo allora la finestra temporale da analizzare e' [ TEMPO_CORRENTE - N , TEMPO_CORRENTE ].
- SOGLIA_EVT
-
E' il numero massimo di volte che l'evento rintracciato dall'espressione regolare (ESPRESSIONE_REG) può verificarsi all'interno della finestra temporale (INTERVALLO). L'ip sorgente, rintracciabile nel file in input, viene ritenuto responsabile. Al superamento della soglia aLid, in base alla configurazione, puo' bloccare l'ip sorgente o semplicemente notificare cio' che e' accaduto. Se un'ip viene bloccato, si tiene traccia anche del momento in cui cio' avviene, facendo riferimento al tempo universale (UTC) in secondi.
- SOGLIA_RED
-
E' il numero di secondi nei quali un'ip bloccato non puo' comunicare attraverso la macchina dove e' installato aLid. Quando la soglia di redenzione viene raggiunta l'ip bloccato viene sbloccato ( redenzione ). Il superamento e' calcolato nel seguente modo:
SE ( TEMPO_CORRENTE - TEMPO_BLOCCO > SOGLIA_RED ) SBLOCCA L'IP BLOCCATO ALTRIMENTI L'IP BLOCCATO RESTA BLOCCATO
- FREQ_EMAIL
-
Specifica la frequenza di invio della mail di notifica in secondi. E' opzionale ed e' subordinata alla presenza delle opzioni MAIL o LOG.
- FILE_CONSENTITI
-
E' il path al file che contiene la lista degli ip immuni all'evento indicato dalla regola. Se viene rilevato un evento con un ip presente nel file FILE_CONSENTITI l'evento viene ignorato. Il file deve rispettare la seguente regola sintattica: ogni riga del file deve contenere solo un ip.
- NOTIFICA
-
La tipologia di notifica adottata dalla regola. Sono previste 3 tipologia di opzioni: MAIL, LOG, ALL.
-
Consente di inviare una mail di notifica a tutti gli indirizzi specificati nel file /etc/aLid/emails
- LOG
-
Consente di scrivere una riga nel file di log (/etc/aLid/log) dell'applicazione.
- ALL
-
Comprende entrambe le tipologie di notifiche MAIL e LOG.
- FILTER
-
Specifica la politica da adottare riguardo gli ip rilevati dalla regola. Le opzioni accettate sono: DROP e NODROP.
- DROP
-
Blocca l'ip rilevato nel firewall, applicando un'apposita regola.
- NODROP
-
Non esegue nessuna regola di drop nel firewall.
- LISTA_EVENTI
-
Definisce la lista degli eventi monitorati dal filtro stateful. Nella definizione bisogna rispettare la seguente sintassi:
NOTES
Lo script legge riceve le linee del file di input indicato nella regola attraverso lo stream <STDIN>.
EXAMPLES
Esempio di configurazione:
statefulProtect THREE_WAY_HANDSHAKE 10 5 7 7 /etc/aLid/ip_allowed_THREE_WAY_HANDSHAKE log drop FILE_INPUT=/var/log/iptables.log
EXPRESSION=RES=\w+\sSYN\sURGP TARGET=I EXPRESSION=RES=\w+\sACK\sSYN\sURGP TARGET=O EXPRESSION=RES=\w+\sACK\sURGP TARGET=I
Esegue lo script con THREE_WAY_HANDSHAKE come nome evento, utilizzando un intervallo di 10 secondi, 5 tentativi massimi nella finestra temporale, 7 secondi come soglia di redenzione, 7 secondi e' la frequenza delle mail, ip_allowed_THREE_WAY_HANDSHAKE e' il nome del file utilizzato per specificare gli ip immuni all'evento, all e' la tipologia di notifica e drop il tipo di filtro; FILE_INPUT e' il file di log da cui ricavare le informazioni
FILES
REQUIREMENT
item= arpwatch
Arpwatch - http://www.securityfocus.com/tools/142
item= DateTime
DateTime - Perl Library of cpan community
SEE ALSO
sharedTail, aLid, aLid.conf
AUTHOR
Andrea Martire (andreamartire@gmail.com)
COPYRIGHT AND LICENSE
Copyright © 2010 Andrea Martire <andreamartire@gmail.com>. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law.
1 POD Error
The following errors were encountered while parsing the POD:
- Around line 11:
Non-ASCII character seen before =encoding in 'più'. Assuming UTF-8