Previous Contents Next

TCP WRAPPER


E` un programma che permette di filtrare e monitorare le richieste verso un particolare servizio di rete. Questo programma non ha nessuna interazione con il lato client ed e` del tutto trasparente agli occhi degli utenti. Lo stesso discorso vale per il lato server, una vaolta che il wrapper ha deciso di accettare la connessione, passa "la palla" al server che non e` a conoscenza dell'esistenza di questo filtro. Il wrapper infatti e` attivo solo all'atto dell'instaurazione della connsessione, una volta accettata o scartata, non interagisce piu` nella comunicazione.

Questo porta a due grossi vantaggi: E` possibile utilizzare utilizzare questo piccolo programmino in due modi diversi:

Perche` usare un tcpwrapper?

Perche` permette di negare l'accesso ad un particolare servizio, in maniera uniforme e semplice, e di monitorare tutte le richieste. Il wrapper manda i suoi log al demone syslogd.


Come controllare gli accessi?

L'accesso puo` essere controllare in base al tipo di servizio, in base all'host del client, o in base ad una combinazione tra questi. Al verificarsi di una connessione e` possibile fare eseguire uno script di shell in modo da registrare al meglio la richiesta oppure per simulare un finto servizio da utilizare come trappola.
Tramite l'utilizzo di un tcpwrapper, oltre al filtraggio delle connessioni indesiderate, e` possible prevenire:

Come si configura il wrapper?

Il demone tcpd utilizza due file di configurazione /etc/hosts.deny e /etc/hosts.allow. Se in fase di compilazione non e` specificata l'opzione -DPROCESS_OPTIONS questi file verranno ignorati.
L'accesso e` garantito se il servizio e/o client corrispondono ad un entry nel file /hosts.allow, viene negato se c'e` un'occorrenza nel file /etc/hosts.deny, e se non ha una entry in nessuno dei due file e` garantito.
Li sintassi di questi due file e` molto semplice:
lista_servizi : client [:script di shell da eseguire]
I caratteri jolly piu` usati, per indicare una lista di servizi, sono ALL e LOCAL, mentre per indicare una lista di client sono ALL, LOCAL, KNOW, UNKNOW e PARANOID (che corrisponde all'opzione in compilazione -DPARANOID). Esiste anche l'opzione EXCEPT il cui significato e` ovvio.
Per avere maggiori informazioni sui caratteri jolly si veda la man pages hosts_acces(5).
un esempio di file di configurazione puo` essere:

---- /etc/hosts.deny ----
ALL:PARANOID

---- /etc/hosts.allow ---------------
ALL: LOCAL 192.168.91.0/255.255.255.0
tutte le richieste a tutti i servizi provenienti da macchine esterne alla mia rete locale saranno rifiutate.
Per verificare il corretto funzionamento delle regole del wrapper e` possibile utilizzare un piccolo programmino chiamato tcpdmatch, mentre per virificare la correttezza delle regole presenti nel file e` possibile usare tcpdchk.


Eseguire comandi al verificarsi di una connessione

Con tcpd e` possibile tenere sotto controllo eventuali connsessioni inderiderate grazie a dei piccoli script di shell scritti inseriti nell'apposito file di configurazione /etc/hosts.allow
Utilizzando una sittassi del genere:

daemon_list: client_list : shell_command
daemon_list: client_list : spawn shell_command
al verificarsi di una connessione verso un particolare servizio da un host determinato, verra` automaticamente seguito lo script "shell_command", permettendoci cosi` di ottenere il piu` informazioni possibili sull'host remoto che sta tentando di attaccarci. Ad esempio si possono lanciare programmini appositi che controllano il tipo di sistema del client, i dati dell'utente che tenta la connessione e cosi` via.
L'utilizzo di una "forma" rispetto all'altra dipende dalla versione di tcpd che si sta utilizzando.

Se volessi essere avvisato da una mail ad ogni connessione telnet posso utilizzare un comando simile a questo:

in.telnetd : ALL@ALL : spawn ( /bin/mail -s "telnet connection from: %a %u" lory ) &
con questa riga di comando ricevero` una mail ad ogni connessione telnet; i campi %a e %u indicano rispettivamente l'indirizzo del client e l'eventuale nome dell'utente che tenta di collegarsi. La lista completa dei parametri e` contenuta nella manpages hosts_access(5)


Per suggerimenti, correzioni & co. scrivete a questo indirizzo: lorenzo.martignoni@technologist.com

Previous Contents Next