LKN: Ricette per Configurare il Kernel: differenze tra le versioni

Pagine 6,7,8 di 22
(Pagine 3,4,5, di 22)
(Pagine 6,7,8 di 22)
Riga 1: Riga 1:
Mi chiamo Marco Bellumori e abito a Lucca, ma sono nato in provincia di Grosseto nel 1960. Ho iniziato con il software e con i personal computer in genere nel 1982. Per mestiere mi occupo di contabilit�, amministrazione e anche di IT in generale. Costruisco programmi di contabilit� e amministrazione aziendale come dipendente di una societ� di capitali. Per scelte aziendali e non certo mie, nel lavoro, per programmare, non utilizzo sistemi operativi GNU/Linux e software per questi sistemi. In ufficio c'� soltanto una macchina Debian, che viene utilizzata quasi esclusivamente con OpenOffice.org. Di consequenza sono obbligato a conoscere molto bene i sistemi operativi e i software proprietari. Ne farei volentieri a meno, ma..... cos� a meno, che per utilizzo personale (home) e per la programmazione al di fuori dell'ambito lavorativo, nel 1997 ho deciso di abbandonare i sistemi operativi proprietari per passare ai sistemi operativi GNU/Linux. Per la verit� non ho iniziato con Debian GNU/Linux, ma con Slackware 3.2 (autunno 1997). Dopo circa un anno, ho voluto provare la Debian (hamm). E' stato un amore a prima vista e, a parte una parentesi nel 2000, perch� in quel periodo non possedevo una macchina personale, non ho pi� abbandonato Debian (oggi, in due partizioni distinte, utilizzo Etch 4.0 e testing Lenny + inserimenti da Sid , tutto rigorosamente con Fluxbox, quando mi serve un W.M.). In quasi 10 anni di utenza Debian Gnu/Linux, ho installato e utilizzato questa distribuzione sulle molte macchine che ho posseduto (oggi utilizzo un portatile Packard Bell) e ho aiutato ad installare e utilizzare Debian su molte macchine di amici e conoscenti. Molti di loro sono ormai diventati molto bravi e autosufficienti. Alcuni hanno abbandonato Debian per utilizzare delle derivate (a loro dire pi� semplici), altri hanno cambiato tipo di distribuzione. Altri ancora hanno addirittura optato per i sistemi proprietari. Io sono ancora qu�, con le mie idee e le mie convinzioni.
==Il superdemone inetd==
Durante questi anni ho anche ricavato delle piccole partizioni sul mio hard disk per provare altre distribuzioni (quasi sempre Debian/derivate), ma dopo qualche mese di prova (la prova di Ubuntu � durata quasi un anno) non mi hanno convinto come Debian GNU/Linux. In questo momento come ho gi� detto, in due partizioni distinte, ho installato Etch 4.0 e testing Lenny + inserimenti da Sid. Dal 1999 fino alla met� del 2007 ho utilizzato anche l'ambiente grafico GNOME e devo ammettere che � una bella comodit�. Dalla met� del 2007, ho abbandonato Gnome per motivi "politici" e oggi utilizzo il windows manager Fluxbox per gestire i programmi grafici. I programmi generici che utilizzo pi� frequentemente sono: Gnu/Emacs21, Mutt, Nano, Blue Fish, Kompozer, OpenOffice,org (tutto), Gimp, Scribus, Totem-Xine, XineUi, Rhythmbox, Iceweasel, Claws-mail . Per quanto riguarda invece i programmi di utilit� e per la manutenzione utilizzo: Bash, Eterm, Xterm, Midnight Commander, Boot Up Manager, Deb Orphan, Gparted, K3b, PCmanFM, XFE.
 
===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 [[wrapper]] 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 dovesse essere installato � sufficiente installarlo tramite APT. Inoltre consiglio l'installazione dei TCP wrappers:
<pre>$: apt-get install openbsd-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/init.d/openbsd-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 corrispondenza 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]]
[[Categoria:Server]][[Categoria:Networking]]
9

contributi