
[ Home | Liste | F.A.Q. |
Risorse | Cerca... ]
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