Funzionamento e configurazione del wrapper
di Valtellinux.it
Il wrapper può essere usato in due modi:
sostituendolo al demone del servizio che si vuole monitorare, evitando così di modificare le varie configurazioni;
modificando il file di configurazione del superdemone inetd (/etc/inetd.conf) in base alla sintassi:
nome_servizio socket protocollo flag utente_demone /usr/bin/tcpd demone_servizio_monitorato eventuale_altro_flag
telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd
Al momento della compilazione dei sorgenti ricordiamoci di specificare le seguenti opzioni:
- DPARANOID per verificare se l'accoppiata ip - host della richiesta formulata risponde al vero, per prevenire attacchi del tipo host name sproofing.
- DKILL_IP_OPTIONS per verificare che la macchina alla quale stiamo concedendo la connessione sia effettivamente quella desiderata. Con questa opzione attivata il demone rifiuterà le connessioni con il flag di source routing attivato, difendendoci così dagli attacchi "host address sproofing" (quest'opzione specificabile anche livello kernel).
- DPROCESS_OPTIONS per far processare al demone i files di configurazione; /etc/host/allow e /etc/host/deny.
La sintassi dei files di configurazione del demone tcpd è molto semplice:
SERVIZIO: CLIENT [:EVENTUALE SCRIPT DA ESEGUIRE]
Dove per SERVIZIO si intende il nome del demone che sovrintende a quel determinato servizio, per CLIENT l'indirizzo ip del client (o il nome risolto) e lo SCRIPT di sistema ci permetterà di espandere le nostre possibilità di logging o di realizzare una trappola. Per indicare i servizi è possibile usare i caratteri jolly ALL e LOCAL, mentre per indicare una lista di client abbiamo ALL, LOCAL, KNOW, UNKNOW e PARANOID (-DPARANOID nelle opzioni di compilazione), EXCEPT. Per avere maggiori informazioni sui caratteri jolly bisogna leggere la man pages hosts_acces(5).
ESEMPI:
/etc/hosts.deny
ALL:ALL@ALL,PARANOID
Nega l'accesso a tutti i client e controlla che ip - nome.host corrispondano.
/etc/hosts.allow
ALL: LOCAL 192.168.1.0/255.255.255.0
Permette l'accesso a tutte le macchine appartenenti alla rete 192.168.1 mentre:
sshd: 207.24.156.1 secure.valtellinux.it
Permette l'accesso SSH all'host secure.valtellinux.it corrispondente all'IP 207.24.156.1.
in.telnetd : ALL@ALL : spawn ( /bin/mail -s "Connessione telnet da: %a %u" admin_mail ) &
Manda una mail all'indirizzo specificato admin_mail ogni qualvolta qualcuno si connette attraverso il servizio telnet, indicando l'indirizzo del client (%a) e l'utente (%u), la lista di questi parametri è contenuta nella man page hosts_access(5).
in.telnetd : ALL@ALL : /bin/script/logga_meglio.sh
Si limita a chiamare lo script logga_meglio che provvederà nel nostro caso ad avviare programmi del tipo who-is, nslookup o simili per sapere chi ha usato la porta telnet del nostro sistema. Per configurare al meglio il funzionamento del wrapper possiamo usare tcpdchk che ci permette di verificare la correttezza della sintassi nei files di configurazione o tcpdmatch che controlla il corretto funzionamento delle regole in essi contenute.