Inetd e i servizi di rete: differenze tra le versioni

m
→‎Installazione: dovrebbe/dovesse
mNessun oggetto della modifica
m (→‎Installazione: dovrebbe/dovesse)
Riga 1: Riga 1:
==Introduzione==
==Il superdemone inetd==
Apt-cacher � un programma che ha lo scopo di creare una cache di pacchetti deb su un server, per poi renderli disponibili a tutte le macchine presenti sulla LAN. In questo modo � possibile limitare la banda utlizzata in uscita e velocizzare i tempi di installazione.


A differenza di apt-proxy (http://apt-proxy.sourceforge.net/), apt-cacher ha una struttura completamente piatta, per cui i pacchetti dela cache sono conservati in una unica directory anche se provengono da repository diversi; questa soluzione ne rende l'utilizzo pi� semplice e immediato.
===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.
==Installazione==
Per installare apt-cache � sufficiente digitare sul server che dovr� contenere la cache
<pre>
# apt-get install apt-cacher
</pre>


==Configurazione==
Viene chiamato superdemone proprio per questa sua funzione di controllo di altri demoni.
Per configurare apt-cacher � necessario:


1) modificare il file
Il vantaggio di usarlo è di ottimizzare le risorse del sistema, avviando il demone che gestisce un determinato servizio solo quando ci sono effettive richieste.
<pre>
/etc/default/apt-cacher
</pre>
ponendo ad 1 il valore di AUTOSTART. In questo modo apt-cacher si avvier� automaticamente ad ogni sessione. Nel caso vogliate avviare/fermare apt-cacher manualmente baster� usare il comando
<pre>
# /etc/init.d/apt-cacher {start|stop|restart|force-reload}
</pre>
2) modificare il file
<pre>
/etc/apt-cacher/apt-cacher.conf
</pre>
che contiene tutte le opzioni configurabili.
Riportiamo il file di configurazione originale per completezza
<pre>
#################################################################
# This is the config file for apt-cacher. On most Debian systems
# you can safely leave the defaults alone.
#################################################################


# cache_dir is used to set the location of the local cache. This can
Sebbene possa essere usato per gestire quasi tutti i servizi è consigliabile farlo solo per quelli a basso e occasionale traffico.
# become quite large, so make sure it is somewhere with plenty of space.
cache_dir=/var/cache/apt-cacher


# The email address of the administrator is displayed in the info page
===Installazione===
# and traffic reports.
Se per qualche motivo il demone inetd non dovesse essere installato è sufficiente installarlo tramite APT. Inoltre consiglio l'installazione dei TCP wrappers:
admin_email=root@localhost
<pre>$: apt-get install netkit-inetd tcpd</pre>


# For the daemon startup settings please edit the file /etc/default/apt-cacher.
===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>


# Daemon port setting, only useful in stand-alone mode. You need to run the
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:
# daemon as root to use privileged ports (<1024).
daemon_port=3142


# optional settings, user and group to run the daemon as. Make sure they have
<pre># These are standard services. 
# sufficient permissions on the cache and log directories. Comment the settings
#
# to run apt-cacher as the native user.
#ftp    stream  tcp  nowait  root  /usr/sbin/tcpd  in.ftpd -l -a 
group=www-data
#telnet stream  tcp  nowait  root  /usr/sbin/tcpd  in.telnetd
user=www-data
#
# 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>


# optional setting, binds the listening daemon to one specified IP. Use IP
Il formato tipico di ogni riga è il seguente:
# ranges for more advanced configuration, see below.
# daemon_addr=localhost


# If your apt-cacher machine is directly exposed to the Internet and you are
<pre>service type protocol wait user server cmdline</pre>
# worried about unauthorised machines fetching packages through it, you can
# specify a list of IPv4 addresses which are allowed to use it and another
# list of IPv4 addresses which aren't.
# Localhost (127.0.0.1) is always allowed. Other addresses must be matched
# by allowed_hosts and not by denied_hosts to be permitted to use the cache.
# Setting allowed_hosts to "*" means "allow all".
# Otherwise the format is a comma-separated list containing addresses,
# optionally with masks (like 10.0.0.0/22), or ranges of addresses (two
# addresses separated by a hyphen, no masks, like '192.168.0.3-192.168.0.56').
allowed_hosts=*
denied_hosts=


# And similiarly for IPv6 with allowed_hosts_6 and denied_hosts_6.
# Note that IPv4-mapped IPv6 addresses (::ffff:w.x.y.z) are truncated to
# w.x.y.z and are handled as IPv4.
allowed_hosts_6=fec0::/16
denied_hosts_6=


# This thing can be done by Apache but is much simplier here - limit access to
Un esempio pratico di una riga presente in '''/etc/inetd.conf''':
# Debian mirrors based on server names in the URLs
<pre>ftp stream tcp nowait root /usr/sbin/in.ftpd –l
#allowed_locations=ftp.uni-kl.de,ftp.nerim.net,debian.tu-bs.de


# Apt-cacher can generate usage reports every 24 hours if you set this
ftp: nome del servizio
# directive to 1. You can view the reports in a web browser by pointing
stream: indica il tipo
# to your cache machine with '/apt-cacher/report' on the end, like this:
tcp: indica il protocollo
#      http://yourcache.example.com/apt-cacher/report
nowait: indica se deve attendere
# Generating reports is very fast even with many thousands of logfile
user: indica l’utente che ha il privilegio di accesso
# lines, so you can safely turn this on without creating much
server: indica dove si trova il programma
# additional system load.
cmdline:indica il nome dell’eseguibile e eventuali flag</pre>
generate_reports=1


# Apt-cacher can clean up its cache directory every 24 hours if you set
Inoltre inetd si appoggia su un altro file di configurazione dei servizi:
# this directive to 1. Cleaning the cache can take some time to run
# (generally in the order of a few minutes) and removes all package
# files that are not mentioned in any existing 'Packages' lists. This
# has the effect of deleting packages that have been superseded by an
# updated 'Packages' list.
clean_cache=1


# The directory to use for apt-cacher access and error logs.
<pre>/etc/services
# The access log records every request in the format:
File che assegna un nome di servizio alla relativa porta.
# date-time|client ip address|HIT/MISS/EXPIRED|object size|object name
Viene usato anche da altri programmi come file di riferimento.</pre>
# The error log is slightly more free-form, and is also used for debug
# messages if debug mode is turned on.
# Note that the old 'logfile' and 'errorfile' directives are
# deprecated: if you set them explicitly they will be honoured, but it's
# better to just get rid of them from old config files.
logdir=/var/log/apt-cacher


# apt-cacher can use different methods to decide whether package lists need to
Se si vogliono utilizzare i tcpwrapper per limitare l'accesso al servizio la riga sopra diventa:
# be updated,
<pre>ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd –l</pre>
# A) looking at the age of the cached files
# B) getting HTTP header from server and comparing that with cached data. This
# method is more reliable and avoids desynchronisation of data and index files
# but needs to transfer few bytes from the server every time somebody requests
# the files ("apt-get update")
# Set the following value to the maximum age (in hours) for method A or to 0
# for method B
expire_hours=0


# Apt-cacher can pass all its requests to an external http proxy like
Nelle distribuzioni Linux, solitamente inetd è già configurato per supportare i tcp wrappers.
# Squid, which could be very useful if you are using an ISP that blocks
# port 80 and requires all web traffic to go through its proxy. The
# format is 'hostname:port', eg: 'proxy.example.com:8080'.
http_proxy=proxy.example.com:8080


# Use of an external proxy can be turned on or off with this flag.
===TCP wrappers===
# Value should be either 0 (off) or 1 (on).
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.
use_proxy=0


# External http proxy sometimes need authentication to get full access. The
In pratica da una configurazione:
# format is 'username:password'.
http_proxy_auth=proxyuser:proxypass


# Use of external proxy authentication can be turned on or off with this flag.
<pre>client -----> inetd -----> servizio</pre>
# Value should be either 0 (off) or 1 (on).
use_proxy_auth=0


# Rate limiting sets the maximum bandwidth in bytes per second to use
Si passa ad una configurazione:
# for fetching packages. Syntax is fully defined in 'man wget'.
# Use 'k' or 'm' to use kilobits or megabits / second: eg, 'limit=25k'.
# Use 0 or a negative value for no rate limiting.
limit=0


# Debug mode makes apt-cacher spew a lot of extra debug junk to the
<pre>client -----> inetd -----> TCPD -----> servizio</pre>
# error log (whose location is defined with the 'logdir' directive).
# Leave this off unless you need it, or your error log will get very
# big. Acceptable values are 0 or 1.
debug=0


# Adapt the line in the usage info web page to match your server configuration
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.
# example_sources_line=deb&nbsp;http://<b>my.cacher.server:3142/</b>ftp.au.debian.org/debian&nbsp;unstable&nbsp;main&nbsp;contrib&nbsp;non-free


# Print a 410 (Gone) HTTP message with the specified text when accessed via
Questo file permette di specificare quali servizi abilitare e da quali indirizzi IP:
# CGI. Useful to tell users to adapt their sources.list files when the
<pre>/etc/hosts.allow</pre>
# apt-cacher server is beeing relocated (via apt-get's error messages while
# running "update")
#cgi_advise_to_use = Please use http://cacheserver:3142/ as apt-cacher access URL
#cgi_advise_to_use = Server relocated. To change sources.list, run perl -pe "s,/apt-cacher\??,:3142," -i /etc/apt/sources.list


# Server mapping - this allows to hide real server names behind virtual paths
Questo file permette di specificare come limitare l'accesso a specifici servizi:
# that appear in the access URL. This method is known from apt-proxy. This is
<pre>/etc/hosts.deny</pre>
# also the only method to use FTP access to the target hosts. The syntax is simple, the part of the beginning to replace, followed by a list
#of mirror urls, all space separated. Multiple profile are separated by semicolons
# path_map = debian ftp.uni-kl.de/pub/linux/debian ftp2.de.debian.org/debian ; ubuntu archive.ubuntu.com/ubuntu ;
#security security.debian.org/debian-security ftp2.de.debian.org/debian-security
# Note that you need to specify all target servers in the allowed_locations
# options if you make use of it. Also note that the paths should not overlap
# each other. FTP access method not supported yet, maybe in the future.
</pre>


Le opzioni pi� importanti sono:
===Comandi utili===
Per avviare, riavviare, fermare il servizio inetd:
<pre>$: /etc/rc.d/init.d/inetd start/stop/restart</pre>


# <code>cache_dir</code> che determina la directory in cui verr� salvata la cache
===Configurazioni utili===
# <code>allowed_hosts</code> che specifica uno o pi� indirizzi a cui limitare l'accesso alla cache
Nega l'accesso a tutti i client e controlla che ip - nome.host corrispondano:
# <code>daemon_port</code> che specifica la porta sulla quale ascolta apt-cacher
<pre>File da applicare: /etc/hosts.deny
ALL:ALL@ALL,PARANOID</pre>


==Client==
Consente l'accesso a tutti i client e controlla che ip - nome.host corrispondano:
Non � necessario installare apt-cacher sui client. Per accedere alla cache dovrete solo modificare il file
<pre>File da applicare: /etc/hosts.allow
ALL: LOCAL 192.168.1.0/255.255.255.0</pre>


<pre>
Permette l'accesso SSH all'host prova.it corrispondente all'IP 10.0.0.1
/etc/apt/sources.list
<pre>File da applicare: /etc/hosts.allow
</pre>
sshd: 10.0.0.1 prova.it</pre>


inserendo una riga da del tipo
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>


<pre>
==Da inetd a Xinetd==
deb http://server_con_cache:porta/repository_da_utilizzare/debian [flavour] [sezioni]
===Differenze===
</pre>
A differenza del precedessore, xinetd (e'''x'''tended inetd):


Chiariamo il concetto con un esempio. <br>
:*Limita o regola l'accesso a determinati servizi senza ricorrere al Tcp Wrapper;
Supponiamo che il server abbia hostname computer e apt-cacher ascolti sulla porta 3142 (quella di default). Supponiamo poi che il repository utilizzato sia
:*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.


<pre>
===File di configurazione===
deb http://ftp.it.debian.org/debian unstable main contrib non-free
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>
<pre>/etc/xinetd.conf
File di configurazione del demone


La nuova riga da inserire per utilizzare la cache sar�
/etc/xinetd.d/*
Directory che contiene i singoli file dei servizi offerti da xinetd</pre>


<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:
deb http://computer:3142/ftp.it.debian.org/debian unstable main contriib non-free
<pre>service service_name
</pre>
{
    attribute assign_op [value] [value] [...]
    [...]
}</pre>


Baster� poi salvare e lanciare un
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).


<pre>
===Esempi di configurazione di Xinetd===
# apt-get update
Di seguito sono riportati alcuni esempi pratici e semplici di un file di configurazione '''/etc/xinetd.conf''':
</pre>
<pre>service shell
          {
                socket_type        = stream
                wait                = no
                user                = root
                instances          = UNLIMITED
                server              = /usr/etc/in.rshd
                log_on_success      += HOST RECORD
          }


per cominciare ad utilizzare la cache.  
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>


Importante notare che tutte le righe dovranno presentare la dicitura deb http e non deb ftp.
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.


==Importare Pacchetti==
===Opzioni di Xinetd===
A questo punto siamo pronti per usare apt-cacher. Se per� si hanno gi� a disposizione tanti pacchetti installati sul server e presenti nella directory
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;


<pre>
Il processo xinetd effettua le operazioni elencate in corrsipondenza dei seguenti segnali:
/var/cache/apt/archives
</pre>


potreste volerli importare nella cache. Niente di pi� semplice :)
:*'''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.


Copiate tutti i pacchetti nella directory
Autore: [[Utente:Net deity|Net deity]]
 
[[Categoria:Server]][[Categoria:Networking]]
<pre>
/var/cache/apt-cacher/import
</pre>
 
e poi lanciate il comando
 
<pre>
# /usr/share/apt-cacher/apt-cacher-import.pl
</pre>
 
che mette a disposizione tutti i pacchetti importati nella cache.
 
Non resta che augurare happy caching!
 
 
----
Autore: giorsat <br>
Esteso da: [[Utente:Sal|Sal]]
 
[[Categoria:Server]][[Categoria:Apt]]
[[Categoria:Repository]]
806

contributi