The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

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.

MAIL

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:

EXPR_REG_1 TARGET_1 EXPR_REG_2 TARGET_2 ... EXPR_REG_N TARGET_N
EXPR_REG

Rappresenta un sotto-evento del filtro. I sotto-eventi devono verificarsi in sequenza.

TARGET

Indica la posizione, nella linea di log, dell'host responsabile dell'evento stateful.

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

/etc/aLid/aLid.conf

File di configurazione dell'applicazione

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