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...