[ Home | Liste | F.A.Q. | Risorse | Cerca... ]


[ Data: precedente | successivo | indice ] [ Argomento: precedente | successivo | indice ]


Archivio: Agosto 2002 ml@sikurezza.org
Soggetto: Come aggiungere un modulo al kernel senza ricompilare tutto.
Mittente: Gelpi Andrea - Liste
Data: 27 Aug 2002 11:08:12 -0000
Per KOBA: Valuta tu se può essere di interesse per la lista, grazie.

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ò in questa nota è 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).
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.

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.
Ho quindi escogitato 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 ricompilati solo i moduli di netfilter.

A questo punto con make module-install si dovrebbero installare 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 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.
Sulla 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 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 implementato la versione che scrive in mysql e sto scrivendo alcune
semplici pagine in php che facciano statistiche sui dati raccolti.


--
Gelpi ing. Andrea
--------------------------------------------------------------
It took the computing power of three C-64s to fly to the Moon.
It takes a 486 to run Windows 95. Something is wrong here.
--------------------------------------------------------------


________________________________________________________
http://www.sikurezza.org - Italian Security Mailing List




[ Home | Liste | F.A.Q. | Risorse | Cerca... ]

www.sikurezza.org - Italian Security Mailing List
(c) 1999-2005