1 760
contributi
(→Altro) |
|||
Riga 1: | Riga 1: | ||
==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: | |||
<pre>$: apt-get install netkit-inetd tcpd</pre> | |||
=== | ===Configurazine=== | ||
Per prima cosa � necessario modificare i permessi al file '''/etc/inetd.conf''' in modo che solo root abbia accesso: | |||
<pre>$: chmod 600 /etc/inetd.conf</pre> | |||
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: | |||
<pre># 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</pre> | |||
Il formato tipico di ogni riga � il seguente: | |||
<pre>service type protocol wait user server cmdline</pre> | |||
Un esempio pratico di una riga presente in '''/etc/inetd.conf''': | |||
<pre>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</pre> | |||
Inoltre inetd si appoggia su un altro file di configurazione dei servizi: | |||
<pre>/etc/services | |||
File che assegna un nome di servizio alla relativa porta. | |||
Viene usato anche da altri programmi come file di riferimento.</pre> | |||
Se si vogliono utilizzare i tcpwrapper per limitare l'accesso al servizio la riga sopra diventa: | |||
<pre>ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd �l</pre> | |||
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: | |||
<pre>client -----> inetd -----> servizio</pre> | |||
Si passa ad una configurazione: | |||
<pre>client -----> inetd -----> TCPD -----> servizio</pre> | |||
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: | |||
<pre>/etc/hosts.allow</pre> | |||
Questo file permette di specificare come limitare l'accesso a specifici servizi: | |||
<pre>/etc/hosts.deny</pre> | |||
===Comandi utili=== | |||
Per avviare, riavviare, fermare il servizio inetd: | |||
<pre>$: /etc/rc.d/init.d/inetd start/stop/restart</pre> | |||
=== | ===Configurazioni utili=== | ||
Nega l'accesso a tutti i client e controlla che ip - nome.host corrispondano: | |||
<pre>File da applicare: /etc/hosts.deny | |||
ALL:ALL@ALL,PARANOID</pre> | |||
Consente l'accesso a tutti i client e controlla che ip - nome.host corrispondano: | |||
<pre>File da applicare: /etc/hosts.allow | |||
ALL: LOCAL 192.168.1.0/255.255.255.0</pre> | |||
Permette l'accesso SSH all'host prova.it corrispondente all'IP 10.0.0.1 | |||
<pre>File da applicare: /etc/hosts.allow | |||
sshd: 10.0.0.1 prova.it</pre> | |||
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. | |||
<pre>File da applicare: /etc/hosts.allow | |||
in.telnetd : ALL@ALL : spawn ( /bin/mail -s "Connessione telnet da: %a %u" admin_mail ) & </pre> | |||
=== | ==Da inetd a Xinetd== | ||
===Differenze=== | |||
A differenza del precedessore, xinetd (e'''x'''tended 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: | |||
<pre>/etc/xinetd.conf | |||
File di configurazione del demone | |||
/etc/xinetd.d/* | |||
Directory che contiene i singoli file dei servizi offerti da xinetd</pre> | |||
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: | |||
<pre>service service_name | |||
{ | |||
attribute assign_op [value] [value] [...] | |||
[...] | |||
}</pre> | |||
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''': | |||
<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=== | ||
* | 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: [[Utente:Net deity|Net deity]] | |||
contributi