Home page

www.gelpi.it

Clusit image

home

area tecnica

articoli

eventi

2node2node1

Aggiunta del modulo ulog al kernel senza ricompilarlo tutto.

24 agosto 2002

PREMESSA

Tutto quanto descritto è stato provato su RedHat 7.1, 7.2 e 7.3.

Il firewall di linux dal kernel 2.4, netfilter, è interamente modulare, e il team di netfilter sta aggiungendo nuove funzioni creando nuovi moduli.

Uno di questi moduli implementa una funzione chiamata ULOG (User Logging) che permette di loggare l'attività del firewall anziché tramite syslog, come fa la funzione LOG, inviando i dati in user space dove l'utente mette il proprio sistema di raccolta dei log.

Ciò che descriverò è come aggiungere tale funzione al firewall senza ricompilare per intero il kernel.

Attualmente RedHat fornisce per la versione 7.1 e 7.2 il kernel 2.4.9 mentre la 7.3 ha il 2.4.18.

Il team di netfilter implementa le aggiunte al firewall mediante un insieme di patch chiamate "patch-o-matic". Alcune di queste patch sono state incorporate nel kernel 2.4.18. Ciò spiega la precisazione fatta sopra.

Personalmente trovo comodo aggiornare il kernel via rpm.

COME HO FATTO

Sulla RH 7.1 e 7.2 come detto sopra la pach non c'è nel kernel, quindi bisogna procurarsela. La patch-o-matic è inclusa nel pachetto iptables che è possibile scaricare dal sito di netfilter (www.netfilter.org). Per mantenere al massimo la compatibilità non ho usato l'ultima versione di iptables, bensì quella già presente nel sistema. Sulla 7.1 e 7.2 c'è iptables 1.2.4 sulla 7.3 iptables 1.2.5.

Per poter applicare la patch è inoltre necessario avere i sorgenti del kernel. Ho quindi installato l'rpm kernel-source sui sistemi. Va poi aggiunto a mano il link linux in usr/src/ in quanto RedHat usa quello con la versione (linux-2.4.x) che non è compatibile con l'installazione della patch.

La patch-o-matic può essere installata tutta intera, cioè tutti i moduli, ma il team di netfilter lo sconsiglia vivamente (ci sono moduli in stato alpha) oppure uno alla volta scegliendo quale interessa. Il comando che implementa questa seconda modalità è make most-of-pom. Fra tutte le pach disponibili ho aggiunto solo ULOG.

Fatto questo bisogna dire al kernel di includere il nuovo modulo, cosa che si ottiene con il classico make config dalla directory del kernel source.

A questo punto andrebbe ricompilato il kernel, ma ho notato che eseguendo i passi soliti alla fine ottengo un kernel che non ha solo il modulo che ho aggiunto io, ma mancano moduli che uso e ce ne sono di quelli che non mi servono. Detto in altre parole l'rpm kernel-source non include già la configurazione uguale a quella fornita con l'rpm kernel già compilato.

Ho quindi cercato un sistema per compilare solo il modulo ULOG e aggiungerlo al kernel.

E' ovvio che almeno il nuovo modulo vada ricompilato, ma non ho trovato il modo di compilare solo un modulo. Però guardando dentro il file Makefile del kernel ho visto che è possibile usare questo comando:

make modules SUBDIRS=/usr/src/linux/net/ipv4/netfilter

vengono così ricompilati solo i moduli presenti nella directory di netfilter.

A questo punto con make module-install si dovrebbero installare solo i moduli appena compilati, ma non sono sicuro al 100%.

Però nel caso del modulo ULOG ho trovato un sistema a mio modo di vedere più semplice.

Ho copiato il modulo ULOG insieme agli altri moduli di netfilter e ho aggiunto a mano una dipendenza (nel file modules.dep) uguale a quella del modulo LOG. Infatti credo che entrambi i moduli facciano più o meno lo stesso lavoro, cambia solo il destinatario dei dati, nel caso di LOG vanno al demone syslogd nel caso di ULOG vanno in user space, ma le cose al fine delle dipendenze non dovrebbero cambiare.

Quanto descritto fino a qui funziona bene sia in RedHat 7.1 che 7.2.

Su RH 7.3 c'è una semplificazione in quanto come detto in premessa alcune patch sono state incluse già nel kernel. Infatti nel sorgente del 2.4.18 il modulo ULOG c'è, anche se RedHat ha deciso di non compilarlo nel kernel che distribuisce.

Quindi sui sistemi RH 7.3 il processo parte dal make config sul kernel per abilitare il modulo e poi la compilazione e l'installazione del modulo procedono allo stesso modo.

CONCLUSIONI

Quali sono i vantaggi di utilizzare il modulo ULOG. Avendo a disposizione i record di log in user space è ovvio che le possibilità diventano molte, ma il team di netfilter ha provveduto a creare anche un demone ulogd che raccoglie i record e li mette su file in 3 formati diversi oppure li passa a mysql e nell'ultima versione anche a PostgreSQL.

Ho trovato comodo implementare la versione che scrive in mysql dato che non è poi difficile trovare tools o scrivere semplici pagine in php che facciano statistiche sui dati raccolti.



copyfree/privacy

contatto

curriculum


Ultimo aggiornamento il 26 August 2021 14:59:58.