View Single Post
Old 08-05-2006, 07:35   #1
NA01
Senior Member
 
L'Avatar di NA01
 
Iscritto dal: Jun 2003
Città: Genova
Messaggi: 5676
sempre sul firewalling...

funziona così. ho sviluppato un firewall a livello applicativo (che qualcuno conoscerà come Minox, qualcuno come Viciux, e molti non lo conosceranno per nulla ).
quando arriva una nuova connessione la intercetto, risalgo al processo che la ha generata girando a babbo su /proc a caccia dell'inode della socket e una volta che la ha beccata controlla che il suo eseguibile e le librerie condivise abbiano l'autorizzazione a collegarsi (e eventualmente la richiede al client).
funziona più o meno tutto, come note metterei che il berkeley che uso per memorizzarle è un pò troppo delicatuccio e che ogni tanto dà qualche segfault (che conto di sistemare ).

problemi:
è peeeeeeesantissimo!!!! codice non ottimizzato sul mio 2000+ mi porta il processore al 90% quando navigo su browser, codice ottimizzato ( livello 2) lo porta la 30%.
il browser è l'attività più pesante che ho trovato (anche perchè apre una connessione per ogni comp'onente se ricordo bene il protocollo), con il resto il carico è accettabile.

i problemi sono probabilmente 2
- l'md5 che uso per controllare le librerie è troppo lento (e in programmazione ho chiesto un sostituto veloce)
- dovrei evitare di controllare tutte queste new...
dopo la prima connessione valida potrei far uscire il pid utilizzando il modulo owner, ( ) il problemuccio è che quando il processo si chiude il pid potrebbe essere assegnato a un'altro processo che avrebbe così un'autorizzazione a babbo...
e questo non va per nulla bene
sarebbe interesante poter sapere quando il programma muore per toglierlo dalle catene.
non so se posso diventare il papà dei miei processi per ricevere un segnale quando uno muore e comunque non mi sembra una soluzione pulita (o no? ).

non saprei che altro fare...
idee?

ilsensine io ti invoco!

grazie, ciao!
NA01 è offline   Rispondi citando il messaggio o parte di esso