Vediamo ora come configurare xinetd.
Potete garantire o proibire l'accesso ai vostri server usando l'indirizzo IP, che è il metodo più veloce, non richiedendo la risoluzione inversa sul nome dell'host. Ma ci sono anche altri modi:
potete fare controllo d'accesso tramite risoluzione del nome dell'host. xinetd esegue la risoluzione del nome per ogni connessione, e confronta l'indirizzo IP restituito con quello che sta tentando la connessione;
oppure potete fare controllo d'accesso in base al nome di dominio (p.e.: .domain.com); quando un client tenta la connessione, xinetd esegue la risoluzione del nome e controlla che l'IP del client appartenga effettivamente al dominio indicato.
Naturalmente gli indirizzi IP sono più veloci, ma se volete usare gli altri due metodi, un DNS locale, anche solo caching, aiuta molto a velocizzare le cose.
Il metodo più pratico per garantire sicurezza senza rischiare di dimenticare qualcosa, è quello di proibire qualsiasi accesso, e poi aprire man mano solo i servizi di cui si ha bisogno a host fidati.
Attenzione |
Ricordate di usare comunque almeno una tra le opzioni "no_access" o "only_from"! Se nessuna delle due è presente, l'accesso è consentito! |
La sezione "defaults" serve a specificare valori predefiniti per tutti i servizi, validi se non specificato diversamente nella dichiarazione del servizio; vediamo uno di esempio:
defaults { instances = 15 log_type = FILE /var/log/servicelog log_on_success = HOST PID USERID DURATION EXIT log_on_failure = HOST USERID RECORD only_from = per_source = 5 disabled = shell login exec comsat disabled = telnet ftp disabled = name uucp tftp disabled = finger systat netstat #INTERNAL disabled = time daytime chargen servers services xadmin #RPC disabled = rstatd rquotad rusersd sprayd walld } includedir /etc/xinetd.d |
La nuova direttiva "disabled" permette di disabilitare i servizi anche se sono presenti nel file di configurazione, fornendo un metodo veloce che evita il doverli commentare.
In genere non serve fare nulla, visto che se i valori specificati nella sezione "defaults" vanno bene, basta solo inserire la chiamata del server, lasciandola vuota. Se invece si vuole cambiare o aggiungere qualcosa, allora si deve creare una sezione completa per il server. Alcuni argomenti sono obbligatori, in base al tipo di server:
Tabella 13-2. Argomenti obbligatori
Attributo | Commento |
---|---|
socket_type | tutti i servizi |
user | solo per servizi non INTERNAL |
server | solo per servizi non INTERNAL |
wait | tutti i servizi |
protocol | tutti i servizi RPC e tutti quelli non elencati in /etc/services |
rpc_version | tutti i servizi RPC |
rpc_number | tutti i servizi RPC |
port | tutti i servizi NON RPC e non elencati in /etc/services |
Alcuni esempi di configurazioni di servizi:
service ntalk { socket_type = dgram wait = yes user = nobody server = /usr/sbin/in.ntalkd only_from = 192.168.1.0/24 } service ftp { socket_type = stream wait = no user = root server = /usr/sbin/in.ftpd server_args = -l instances = 4 access_times = 7:00-12:30 13:30-21:00 nice = 10 only_from = 192.168.1.0/24 } service pop3 { disable = no socket_type = stream wait = no user = root server = /usr/sbin/ipop3d # log_on_success += USERID # log_on_failure += USERID } service nntp { socket_type = stream protocol = tcp wait = no user = news server = /usr/sbin/leafnode only_from = 127.0.0.1 192.168.0.0/16 disable = no } |
Come si vede, l'accesso è consentito solo alla rete locale, e per l'FTP, sono consentite solo 4 istanze simultanee e solo in determinati orari del giorno. Per quanto riguarda il POP3, attenzione a loggare anche lo USERID, in quando questo di solito richiede l'interrogazione di un server IDENT che deve essere presente su ogni client, altrimenti si avrebbero ritardi anche di 30 secondi per ogni richiesta al server POP3. Inoltre è molto facile ingannare un server IDENT...