Inetd e i servizi di rete: differenze tra le versioni
Nessun oggetto della modifica |
|||
Riga 126: | Riga 126: | ||
}</pre> | }</pre> | ||
Dove: | Dove i seguenti attributi indicano: | ||
:* '''service_name''' è l’indicazione di un servizio gestito da xinetd; | :* '''service_name''' è l’indicazione di un servizio gestito da xinetd; | ||
:* '''attribute''' indica un attributo relativo al servizio service_name; | :* '''attribute''' indica un attributo relativo al servizio service_name; | ||
:* '''assign_op''' è un operatore di assegnamento, e può essere = (specifica l’unico valore dell’attributo), += (aggiunge un valore all’attributo) o -= (rimuove un valore dall’attributo). | :* '''assign_op''' è un operatore di assegnamento, e può essere = (specifica l’unico valore dell’attributo), += (aggiunge un valore all’attributo) o -= (rimuove un valore dall’attributo). | ||
===Esempi di configurazione di Xinetd=== | |||
Di seguito sono riportati alcuni esempi pratici e semplici di un file di configurazione '''/etc/xinetd.conf''': | |||
<pre>service shell | |||
{ | |||
socket_type = stream | |||
wait = no | |||
user = root | |||
instances = UNLIMITED | |||
server = /usr/etc/in.rshd | |||
log_on_success += HOST RECORD | |||
} | |||
service ftp | |||
{ | |||
socket_type = stream | |||
wait = no | |||
nice = 10 | |||
user = root | |||
server = /usr/etc/in.ftpd | |||
server_args = -l | |||
instances = 4 | |||
log_on_success += DURATION HOST USERID | |||
access_times = 2:00-9:00 12:00-24:00 | |||
}</pre> | |||
Per una guida dettagliata di ogni singolo parametro è possibile consultare il '''man''' una volta installato xinetd. Xinetd è un demone molto flessibile e tramite il suo file di configurazione è possibile specificare decine e decine di opzioni. | |||
===Opzioni di Xinetd=== | ===Opzioni di Xinetd=== |
Versione delle 11:44, 24 gen 2006
Il superdemone inetd
Introduzione
Inetd (Internet Super-Server) è un demone che ascolta sulle porte specificate nel suo file di configurazione e fa avviare il relativo servizio nel momento in cui viene fatta una richiesta. Esso controlla tramite dei wrappers i file /etc/hosts.allow e /etc/hosts.deny per verificare che la connessione sia consentita.
Viene chiamato superdemone proprio per questa sua funzione di controllo di altri demoni.
Il vantaggio di usarlo è di ottimizzare le risorse del sistema, avviando il demone che gestisce un determinato servizio solo quando ci sono effettive richieste.
Sebbene possa essere usato per gestire quasi tutti i servizi è consigliabile farlo solo per quelli a basso e occasionale traffico.
Installazione
Se per qualche motivo il demone inetd non dovrebbe essere installato è sufficiente installarlo tramite APT. Inoltre consiglio l'installazione dei TCP wrappers:
$: apt-get install netkit-inetd tcpd
Configurazine
Per prima cosa è necessario modificare i permessi al file /etc/inetd.conf in modo che solo root abbia accesso:
$: chmod 600 /etc/inet.conf
Ogni riga di /etc/inetd.conf corrisponde ad un servizio che viene gestito da inetd. Se è commentata con un # il servizio non viene avviato e inetd non mette la relativa porta in listening. Esempio:
# These are standard services. # #ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd -l -a #telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd # # Shell, login, exec, comsat and talk are BSD protocols. # #shell stream tcp nowait root /usr/sbin/tcpd in.rshd #login stream tcp nowait root /usr/sbin/tcpd in.rlogind #exec stream tcp nowait root /usr/sbin/tcpd in.rexecd #comsat dgram udp wait root /usr/sbin/tcpd in.comsat #talk dgram udp wait root /usr/sbin/tcpd in.talkd #ntalk dgram udp wait root /usr/sbin/tcpd in.ntalkd #dtalk stream tcp waut nobody /usr/sbin/tcpd in.dtalkd
Il formato tipico di ogni riga è il seguente:
service type protocol wait user server cmdline
Un esempio pratico di una riga presente in /etc/inetd.conf:
ftp stream tcp nowait root /usr/sbin/in.ftpd –l ftp: nome del servizio stream: indica il tipo tcp: indica il protocollo nowait: indica se deve attendere user: indica l’utente che ha il privilegio di accesso server: indica dove si trova il programma cmdline:indica il nome dell’eseguibile e eventuali flag
Inoltre inetd si appoggia su un altro file di configurazione dei servizi:
/etc/services File che assegna un nome di servizio alla relativa porta. Viene usato anche da altri programmi come file di riferimento.
Se si vogliono utilizzare i tcpwrapper per limitare l'accesso al servizio la riga sopra diventa:
ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd –l
Nelle distribuzioni Linux, solitamente inetd è già configurato per supportare i tcp wrappers.
TCP wrappers
I tcp wrapper TCPD, sviluppati dall'olandese Wietse Venema, sono un layer software che permette il controllo e il filtro degli accessi a servizi del sistema, tipicamente gestiti con inetd.
In pratica da una configurazione:
client -----> inetd -----> servizio
Si passa ad una configurazione:
client -----> inetd -----> TCPD -----> servizio
Nella nuova configurazione i tcpwrappers possono limitare l'accesso al servizio secondo criteri configurabili ed hanno funzionalità anti-spoofing e anti tcp seguence guessing. La configurazione dei tcp wrappers si fa essenzialmente in due file.
Questo file permette di specificare quali servizi abilitare e da quali indirizzi IP:
/etc/hosts.allow
Questo file permette di specificare come limitare l'accesso a specifici servizi:
/etc/hosts.deny
Comandi utili
Per avviare, riavviare, fermare il servizio inetd:
$: /etc/rc.d/init.d/inetd start/stop/restart
Configurazioni utili
Nega l'accesso a tutti i client e controlla che ip - nome.host corrispondano:
File da applicare: /etc/hosts.deny ALL:ALL@ALL,PARANOID
Consente l'accesso a tutti i client e controlla che ip - nome.host corrispondano:
File da applicare: /etc/hosts.allow ALL: LOCAL 192.168.1.0/255.255.255.0
Permette l'accesso SSH all'host prova.it corrispondente all'IP 10.0.0.1
File da applicare: /etc/hosts.allow sshd: 10.0.0.1 prova.it
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.
File da applicare: /etc/hosts.allow in.telnetd : ALL@ALL : spawn ( /bin/mail -s "Connessione telnet da: %a %u" admin_mail ) &
Da inetd a Xinetd
Differenze
A differenza del precedessore, xinetd (extended inetd):
- Limita o regola l'accesso a determinati servizi senza ricorrere al Tcp Wrapper;
- Offre un sistema di logging indipendente da syslog;
- Permette di limitare l'accesso ai servizi in determinate ore della giornata;
- Supporta il protocollo Ipv6;
- Utilizza vari meccanismi che mitigano l'impatto di un attacco DOS.
File di configurazione
La configurazione del demone e dei servizi può essere suddivisa in più file non compatibili con i vecchi file di configurazione del demone inetd. Le directory contenenti i file di configurazione sono leggermente cambiate:
/etc/xinetd.conf File di configurazione del demone /etc/xinetd.d/* Directory che contiene i singoli file dei servizi offerti da xinetd
Il file di configurazione di xinetd è un file di testo che indica i servizi gestiti da xinetd. Contiene delle sezioni, ognuna delle quali identifica un servizio, con la seguente sintassi:
service service_name { attribute assign_op [value] [value] [...] [...] }
Dove i seguenti attributi indicano:
- service_name è l’indicazione di un servizio gestito da xinetd;
- attribute indica un attributo relativo al servizio service_name;
- assign_op è un operatore di assegnamento, e può essere = (specifica l’unico valore dell’attributo), += (aggiunge un valore all’attributo) o -= (rimuove un valore dall’attributo).
Esempi di configurazione di Xinetd
Di seguito sono riportati alcuni esempi pratici e semplici di un file di configurazione /etc/xinetd.conf:
service shell { socket_type = stream wait = no user = root instances = UNLIMITED server = /usr/etc/in.rshd log_on_success += HOST RECORD } service ftp { socket_type = stream wait = no nice = 10 user = root server = /usr/etc/in.ftpd server_args = -l instances = 4 log_on_success += DURATION HOST USERID access_times = 2:00-9:00 12:00-24:00 }
Per una guida dettagliata di ogni singolo parametro è possibile consultare il man una volta installato xinetd. Xinetd è un demone molto flessibile e tramite il suo file di configurazione è possibile specificare decine e decine di opzioni.
Opzioni di Xinetd
Le opzioni che possono essere utilizzate per la modalità di funzionamento di xinetd sono le seguenti:
- -d abilita la modalità di debug;
- -syslog syslog_facility imposta la facility relativa al system log44 secondo quanto specificato da syslog_facility;
- -filelog logfile' indica di redirigere il log degli eventi di xinetd nel file logfile;
- -f config_file indica il file di configurazione da considerare secondo quanto specificato da config_file (default /etc/xinetd.conf);
- -pidfile pid_file indica di scrivere nel file pid_file il PID del processo lanciato;
- -stayalive indica di rimanere in esecuzione anche se nel file di configurazione non è stato specificato nessun servizio;
- -limit proc_limit imposta il numero massimo di processi che xinetd può lanciare secondo quanto specificato da proc_limit;
- -logprocs limit imposta il numero massimo di daemon che possono essere lanciati in esecuzione per ogni utente, secondo quanto specificato da limit;
- -version visualizza la versione di xinetd;
- -inetd_compat indica di considerare anche il file di configurazione /etc/inetd.conf subito dopo /etc/xinetd.conf;
- -cc interval indica di controllare un controllo periodico del proprio stato ogni interval secondi;
Il processo xinetd effettua le operazioni elencate in corrsipondenza dei seguenti segnali.
- SIGHUP rilegge il file di configurazione e termina l’esecuzione dei daemon relativi a servizi non più attivi (secondo quanto specificato nel file di configurazione).
- SIGQUIT termina la sua esecuzione.
- SIGTERM termina l’esecuzione di tutti i daemon prima di terminare anche la sua esecuzione.
- SIGUSR1 scrive il suo stato interno (dump) nel file /var/run/xinetd.dump.
- SIGIOT controlla la consistenza delle sue strutture dati, visualizzando quindi un messaggio relativo.
Autore: Net deity