inizio << . >> . indice
BLindoLinux ver. 1.0.1 --- Ruggero T.

 

4. inetd e TCP Wrappers

 

4.1 inetd

inetd è il demone supervisore dei servizi di rete, si mette in ascolto sulle porte stabilite ed avvia il demone del servizio corrispondente quando richiesto, permette inoltre di controllarne le richieste filtrandole attraverso wrapper come tcpd. I passi per "sistemare" questo demone sono sostanzialmente questi:

- cambiarne i permessi a 600: [root @ bastion]# chmod 600 /etc/inet.conf

- controllare che solo root vi abbia accesso: [root @ bastion]# stat /etc/inet.conf.

- editare /etc/inet.conf, commentare tutte le linee (#), riavviare il demone [root @ bastion]# killall -HUP inetd, ri-abilitare i servizi che ci servono, aggiungendo o meno un wrapper e riavviarlo di nuovo.

- rendere il file immutabile [root @ bastion]# chattr +i /etc/inet.conf.

 

4.2 TPC che?

Il wrapper è un programma che si occupa di filtrare, in modo del tutto trasparente, le richieste fatte ad un qualsiasi servizio di rete attivo sul nostro server, loggandole (se specificato) attraverso il demone syslogd.

 

4.3 A cosa serve?

Il compito principale del wrapper consiste nel filtrare e monitorare gli accessi ad un particolare servizio. All'instaurazione della connessione il demone tpcd intercetta la chiamata al servizio e decide, qualora la richiesta non vada respinta, se instradarla verso il servizio richiesto, verso uno script o verso una trappola.
L'accesso può essere filtrato a seconda del servizio, dell'host che lo richiede o in base ad una combinazione delle due cose. Una configurazione accurata del demone previene anche attacchi del tipo "host address sproofing" e "host name sproofing".

 

4.4 Funzionamento e configurazione:

Il wrapper può essere usato in due modi:

  1. sostituendolo al demone del servizio che si vuole monitorare, evitando così di modificare le varie configurazioni;
  2. 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.

 

 

inizio << . >> . indice
BLindoLinux è pubblicato sotto licenza GNU FDL
 
Commenti o suggerimenti su questa pagina vanno inviati a: ruggero@valtellinux.it