]> git.piffa.net Git - doc/.git/blobdiff - source/servizi.txt
Servizi di rete: typos e correzioni
[doc/.git] / source / servizi.txt
index 40ea028a6384e38f286e16d2a1bc615ad24e9843..01f47e75bb3acc1fd99f495a579c12fa9fdf8231 100644 (file)
@@ -1,21 +1,22 @@
 ===============================
 Servizi di rete passo a passo
 ===============================
-----------------------------------------------------------
-Appunti sulla installazione e configurazione dei servizi
-----------------------------------------------------------
+------------------------------------------------------------------------------------
+Appunti sulla installazione e configurazione dei servizi di rete in ambiete Gnu/Linx
+------------------------------------------------------------------------------------
 
   :Author: Andrea Manni
   :Copyright: GFDL
-  :Version: 0.8
+  :Version: 0.92
 
-Questa guida e' dedicata agli studenti delle lezioni di informatica tenute da Andrea nel lab208. Nella parte iniziale sono presenti alcuni richiami alle impostazioni di rete e di installazione del laboratorio 208 (lab208) dove generalmente si tengono le lezioni. Questi parametri non sono interessanti per chiunque si trovasse al di fuori della rete piffa.net .
+Questa guida tratta la configurazione di base dei principali servizi di rete utilizzati con sistemi operativi *Unix* e derivati come *GNU/Linux* per gli studenti dei corsi per amministratori di rete in ambiente *GNU/Linux*. In particolare questa guida e' stata scritta usando come riferimento la distribuzione *Debian GNU/Linux*. Gli esempi presentati dovrebbero quindi essere direttamente utilizzabili anche su distribuzioni derivate da Debian come Ubuntu, per sistemi operativi diversi si presti attenzione ai percorsi dei file citati.
 
 .. sectnum::
 
 .. contents:: Indice degli argomenti
+.. |date| date::
 
-Generato con: http://docutils.sourceforge.net/rst.html
+Generato il |date| con: http://docutils.sourceforge.net/rst.html
 
 Configurazione sistema
 =========================
@@ -24,7 +25,7 @@ Solo per uso interno
 
 Impostazioni di base per la configurazione del sistema operativo e della rete nel laboratorio 208 facente parte della rete piffa.net .
 
-Qui riportati per comodita' degli studenti (e del docente che non sara' **mai piu'** costretto a ripeterli continuamente! ). Gli altri lettori potranno tenerli presenti per cercare di comprendere gli esempi nel testo. Ad esempio: quando leggerete ``10.10.208.254:3128`` saprete che si tratta del nostro *proxy http*, stara' quindi a voi sostituire i dati con gli equivalenti *IP* della vostra rete.
+Sono qui riportati i parametri della rete locale per comodita' degli studenti, gli altri lettori possono considerarli come riferimento per comprendere i valori espressi nei vari file di configurazione. Ad esempio: quando leggerete ``10.10.208.248:3128`` saprete che si tratta del nostro *proxy http* in ascolto sulla porta `3128`, stara' quindi a voi sostituire i dati con gli equivalenti *IP* della vostra rete.
 
 Rete
 ------
@@ -37,12 +38,29 @@ Parametri della rete attualmente in uso:
 rete         10.10.208.0/24
 netmask              255.255.255.0
 broadcast     10.10.208.255
-gateway              10.10.208.254
-DNS          10.10.208.254
-proxy http    10.10.208.254:3128
+gateway              10.10.208.248
+DNS          10.10.208.248
 ============= ================
 
-Sul portatile di Andrea, corrispondente all'IP 254, gira un DHCP, proxy http e mirror di Debian ( http://debian.piffa.net). Se Andrea non e' in aula (o ancora peggio non c'e' il suo portatile Net) gli studenti dovranno darsi un indirizzo IP manualmente e disabilitare il proxy (che pero' e trasparente, quindi fate pure come se non ci fosse ;) . Ad oggi il *lab208* e' servito dal server Bender (254 o 248) che ha ripreso le sue vecchie funzioni.
+Dal server locale degli studeti, **Bender**, corrispondente all'IP ``10.10.208.248``, vengono erogati i servizi DHCP, DNS, gateway (con NAT), proxy http e mirror della distribuzione Debian ( http://debian.piffa.net). Altri servizi in esecuzione sul server:
+
+- Rsync server e altri software di aggiornamento / installazione di massa
+- Server imap / pop3 / webmail / smtp
+- Server ssh per i test degli studenti 
+- File server Samba, NFS e controller di qualsiasi altro FS distribuito
+- Print server per la gestione delle stampanti
+- DNS server
+- Mirror locale delle \*.iso dei sistemi operativi e dei vari software usati durante le lezioni
+- Spazi web con PHP, MySQL, Postgresql (altri DB o framework vengono attivati a seconda dei corsi attivi)
+
+
+Durante il corso delle lezioni e' opportuno che le macchine degli studenti si appoggino al server Bender (ottetto finale ``248``), nel caso questo non fosse raggiungibile (ad esempio per permettere impostazioni di DHCP / routing diverse) sara' comunque disponibile il ``10.10.208.254`` come gateway | DNS per la rete ``10.10.208.10``.
+
+**Non e' piu' possibile** raggiungere Bender tramite l'IP pubblico ``212.22.136.248`` o *qualsiasi altro ip* della classe ``C 212.22.136.0/24`` precedentemente disponibile.
+
+Il computer del docente con il server VNC e' sempre configurato con l'ottetto finale: ``177`` della rete utilizzata durante le lezioni (quindi generalmente la VNC sara' disponibile sul ``10.10.208.177:1``. 
+
+Gli studenti sono pregati di non impedire l'accesso SSH alla propria macchina dal computer del docente, e non modificare la password dell'utente ``root`` del sistema operativo *pre-istallato* (ad es: *Diurno*).
 
 interfaces
 ~~~~~~~~~~~~~~~
@@ -57,7 +75,6 @@ Segue un esempio del file di configurazione della scheda di rete con configurazi
        iface lo inet loopback
 
        # La prima scheda di rete (se si chiama eth0)
-       # (network, broadcast and gateway sono optional)
        iface etho inet static
          # esempio con dhcp:
          # iface etho inet dhcp
@@ -67,14 +84,14 @@ Segue un esempio del file di configurazione della scheda di rete con configurazi
         broadcast 10.10.208.255
         gateway 10.10.208.254
 
-       # Quali interfacci devono partire automaticamente:
+       # Quali interfaccie devono partire automaticamente:
        auto lo eth0
 
 Controllare il nome della propria scheda di rete: a volte *udev* rinomina la prima scheda a ``eth1``, oppure potreste avere piu' di una scheda di rete (anche un'interfaccia *firewire* puo' essere automaticamente abilitata come scheda di rete).
 
 Se si usano *schede di rete virtuali* ( eth0:1 , eth0:1 , ...) ricordarsi che queste dipendono dalla scheda fisica a cui sono associate: abbattere con ``ifconfig down eth0`` la scheda principale fara' cadere anche queste. Tornando ad attivare la scada principale con ``ifconfig eth0 up`` la virtuale tornera' attiva: nel caso voleste disabilitarla dovrete quindi sempre abbattere manualmente la scheda virtuale *prima* della scheda reale.
 
-I DNS vanno indicati nel file ``/etc/resolv.conf`` , la cui sintassi e' spiegata al punto 4.6 .
+I DNS vanno indicati nel file ``/etc/resolv.conf`` , la cui sintassi e' spiegata al punto 4.6 . Come DNS si *deve* usare il server Bender, alcuni parametri dei software di installazione, risoluzione dei mirror, vengono opportunamente modificatia da questo DNS.
 
 Bash completion
 -------------------
@@ -102,7 +119,7 @@ Esempio di ~/.bahsrc ::
         alias ll='ls $LS_OPTIONS -l'
         alias l='ls $LS_OPTIONS -lA'
        
-       # Some more alias to avoid making mistakes:
+       # Abilitare i seguenti alias per impostare la conferma per cancellare file
        # alias rm='rm -i'
        # alias cp='cp -i'
        # alias mv='mv -i'
@@ -116,17 +133,19 @@ Links:
 
 * `An introduction to bash completion <http://www.debian-administration.org/articles/316>`_
 * `Working more productively with bash 2.x/3.x <http://www.caliban.org/bash/>`_
+* UNIX / Linux Shell Scripting Tutorial: http://steve-parker.org/sh/sh.shtml
 
 Vim
 ------------
 
 Vim e' l'editor di testo preferito dai sistemisti, quindi sara' conveniente impostare fin da subito alcune impostazioni per renderlo piu' comodo.
 
-Assicurarsi che sia installata nel sistema la versione completa dell'editor ``vim`` installando il  pacchetto ``vim``::
+Assicurarsi che sia installata nel sistema la versione completa dell'editor installando il  pacchetto ``vim``::
 
        # apt-get install vim
 
- e modificare il file di configurazione generale ``/etc/vim/vimrc`` ::
+
+Modificare poi il file di configurazione generale ``/etc/vim/vimrc`` ::
 
     " All system-wide defaults are set in $VIMRUNTIME/debian.vim (usually just
     " /usr/share/vim/vimcurrent/debian.vim) and sourced by the call to :runtime
@@ -195,21 +214,46 @@ Assicurarsi che sia installata nel sistema la versione completa dell'editor ``vi
 
 I principianti faranno bene ad esercitarsi con ``vimtutor it``.
 
+Altri link per VIM:
+
+- Vim Introduction and Tutorial: http://blog.interlinked.org/tutorials/vim_tutorial.html
+- http://blog.smr.co.in/category/vim/
+- http://vimdoc.sourceforge.net/
+
 VNC
 ------------
 
-I Virtual Network Computing (o VNC) sono software di controllo remoto e servono per amministrare il proprio computer a distanza o visualizzare la sessione di lavoro di un altro computer sul proprio a scopo didattico. 
+I Virtual Network Computing (o VNC) sono software di controllo remoto e servono per amministrare un computer a distanzai.  Nel nostro caso la VNC sara'  utilizzata per visualizzare la sessione di lavoro di un altro computer sul proprio a scopo didattico. 
+
+Per collegarvi al server del docente usate lo script ``guarda.sh`` che dovrebbe gia essere disponibili sui sistemi preconfigurati, oppure potete invocare direttamente il collegamento con::
+
+       xtightvncviewer -viewonly 10.10.208.177:1
 
-Scaricare il pacchetto ``xtightvncviewer`` e lo script ``guarda.sh`` in una posizione (collocazione nel *path* degli utenti, es ``echo $PATH`` per visualizzare l'attuale path ) comoda per gli utenti ( in genere ``/bin`` ), rendere eseguibile lo script.
+
+Se il comando non fosse disponibile installate il pacchetto ``xtightvncviewer``. Potete anche scaricare lo script ``guarda.sh`` e renderlo eseguibile, ed eventualmente creare una voce nel menu di KDE per richiamarlo.
 
 Procedura::
 
     su root
-    cd /bin
-    wget http://debian.piffa.net/guarda.sh
+    cd /usr/local/bin
+    wget http://bender/guarda.sh
     chmod +x guarda.sh
     exit
 
+
+Per eseguire lo script digitare semplicemente ``guarda.sh``, oppure creare un link / collegamento sul Desktop allo script ``/usr/local/bin/guarda.sh``.
+
+Le impostazioni del server VNC sono:
+
+===================== =================
+Parametro              Valore
+===================== =================
+IP                     10.10.208.177:1
+Server grafico         :1
+password               password
+===================== =================
+
+
 Si noti che non e' possibile lanciare un applicativo sul server grafico di un utente da una shell in cui si sta lavorando come altro utente, anche se root. E' quindi necessario essere l'utente di sistema che si e' loggato inizialmente nella sessione grafica per poter lanciare lo script guarda.sh da una shell.
 
 Controllare con ``whoami`` di essere l'utente normale (es ``utente | studente | proprio nome`` ), in caso si sia assunta una altra ``id`` si apra un altra shell o si esca da quella attuale con ``exit`` .
@@ -221,7 +265,7 @@ I pacchetti installati generalmente [#]_ per poter seguire le lezioni sono::
 
        kde-core kdm kde-i18n-it xorg vim less xtightvncviewer 
 
-.. [#] ``kde-core`` e' piu' leggero del pacchetto ``kde``. Esiste un equivalente ``gnome-core gnome`` per chi preferisce gnome, nel caso si potrebbe installare  il log-in manager ``gdm`` al posto di ``kdm``.    
+.. [#] ``kde-core`` e' piu' leggero del pacchetto ``kde``. Esiste un equivalente ``gnome-core`` per chi preferisce Gnome, nel caso si potrebbe installare  il log-in manager `gdm` al posto di `kdm`.    
 
 Apt configurazione
 ---------------------
@@ -239,7 +283,7 @@ Questo file contiene i sorgenti da cui *apt* preleva i pacchetti da installare t
 
 Gli archivi sono generalmente:
 
-* ``deb`` per pacchetti Debian binari
+* ``deb`` per pacchetti Debian binari, pronti per l'installazione.
 
 * ``deb-src`` per i pacchetti sorgenti (quindi da compilare, come il kernel) degli stessi pacchetti binari. In genere se non compilate spesso potete evitare di tracciare i sorgenti per risparmiare tempo e banda.
 
@@ -249,26 +293,34 @@ Gli archivi sono generalmente:
     # esempio di accesso a un CDROM:
     # cdrom:[Debian GNU/Linux 5.0.1 _Lenny_ - Official i386 kde-CD Binary-1 20090$
     
-    # Archivio principale debian via http su piffa.net,
-    # non funziona al di fuori dell'aula dei corsi
-    deb http://debian.piffa.net/debian/ Lenny main
+    # ftp.it.debian.org viene rediretto su un mirror interno
+    # quando vi trovate nella rete interna piffa.net
+    deb http://ftp.it.debian.org/debian/ lenny main
     # Sono disponibili anche i rami non-free contrib
-    # deb http://debian.piffa.net/debian/ lenny  non-free contrib
+    # deb http://ftp.it.debian.org/debian/ lenny  non-free contrib
+    # Sono disponibili anche le release unstable e testing
+    # deb http://ftp.it.debian.org/debian/ testing  main non-free contrib
+    # deb http://ftp.it.debian.org/debian/ sid  main non-free contrib
+    
+    # Sorgenti dei pacchetti:
+    # deb-src http://ftp.bononia.it/debian/ lenny main
     
-    # Mirror da kernel.org da usare a casa:
+    # Mirror da kernel.org europa da usare a casa:
     deb http://mirrors.eu.kernel.org/debian/ lenny main
     
     # Security dal sito principale
     deb http://security.debian.org/ lenny/updates main
-    deb-src http://security.debian.org/ lenny/updates main
+    deb-src http://security.debian.org/ lenny/updates main
     
-    # Debian volatile per le cose soggette a cambiamenti non legati
-    # a dinamiche di sicurezza
+    # Debian volatile per i pacchetti soggetti a frequanti cambiamenti
+    # non legati a dinamiche di sicurezza
     deb http://volatile.debian.org/debian-volatile Lenny/volatile main
-    deb-src http://volatile.debian.org/debian-volatile Lenny/volatile main
+    deb-src http://volatile.debian.org/debian-volatile Lenny/volatile main
     
     # Esempio di accesso a un file system locale contenente i pacchetti:
-    # deb file:/mnt/mirror Sid main non-free contrib
+    # Potete scaricarei in aula con debmirror  da debian.piffa.net
+    # un mirror locale da usare poi a casa anche senza internet
+    # deb file:/mnt/mirror sid main non-free contrib
 
 
 /etc/apt/apt.conf
@@ -276,20 +328,22 @@ Gli archivi sono generalmente:
 
 Questo file contiene le opzioni di apt, come ad esempio il proxy::
 
-    Acquire::http::Proxy "http://10.10.208.254:3128";
+    Acquire::http::Proxy "http://10.10.208.248:3128";
+
+Si tenga conto che se si imposta un proxy per apt sul proprio portatile e tornati a casa propria si vuole scaricare nuovi pacchetti si dovra' disabilitare il proxy commentando la riga con ";" (''punto-e-virgola''). Su un portatile vi conviene tracciare il mirror ``ftp.it.debian.org`` senza impostare il proxy: in aula verra' rediretto al mirror locale e a casa vi appoggerete al mirror ufficiale.
 
-Si tenga conto che se si imposta un proxy per apt sul proprio portatile e tornati a casa propria si vuole scaricare nuovi pacchetti si dovra' disabilitare il proxy.
+E' consigliabile impostare il proxy per apt anche in presenza di un proxy-http *trasparente*.
 
 
 Squid
 ======
 
-Squid e' un proxy  cache http (ma anche FTP e https) robusto e strutturato, puo' essere usato sia in reti relativamente piccole grazie alla semplicita' di configurazione che in scenari piu' complessi grazie alla possibilita' di gestirne in modo granulare le risorse.  Si partira' dalle configurazioni piu' semplici per la semplice *condivisione della navigazione* internet, per poi poter configurare la gestione degli accessi, il filtraggio dei contenuti (Squid e' una applicazione che si muove nel 4' livello del modello TCP/IP a differenza di un *ipfilter* limitato al 2') nel l bilanciamento del carico tra piu' hosts.
+Squid e' un proxy  cache http (ma anche FTP e https) robusto e strutturato, puo' essere usato sia in situazioni relativamente semplici che in scenari piu' complessi grazie alla possibilita' di gestirne in modo granulare le risorse.  Si partira' dalle configurazioni piu' semplici per la semplice *condivisione della navigazione* internet all'interno di una rete locale, per poi poter negoziare la gestione degli accessi, il filtraggio dei contenuti (Squid e' una applicazione che si muove nel 4' livello del modello TCP/IP a differenza di un *ipfilter* limitato al 2'), nel  bilanciamento del carico tra piu' server proxy.
 
 Inoltre Squid svolge la funzione di *anonymizer*:
-       nasconde i client http alla rete internet: risulta solo il server proxy nei log dei server web frequentati dagli utenti di Squid.
+       Nasconde i client http alla rete internet:  e' solo il server proxy ad accedere ai server web frequentati dai client: questi non sono percepiti ed esposti all'esterno della rete locale ma si relazionano solo con il server proxy. Dal punto di vista della sicurezza della rete locale questo e' preferibile ad un approccio alla navigazione basato su *NAT*.
 
-Cosa a volte sottovalutata, Squid permette la navigazione web a una rete basata su *indirizzi IP privati* (es una 192.168.0.0/24). E se la rete privata deve *solo navigare* in internet, non serve un *NAT* od altro, basta il solo Squid. Per altro non servira' neanche un servizio DNS dato che *sara' il solo Squid a risolvere i nomi di dominio* per i suoi client http.
+Cosa a volte sottovalutata, Squid permette la navigazione web a una rete basata su *indirizzi IP privati* (es una 192.168.0.0/24). E se la rete privata deve *solo navigare* in internet, non serve introdurre nella rete un *NAT* (si veda la sezione sui firewall) per condividere la connessione: basta il solo Squid. Per altro non servira' neanche un servizio DNS accessibile dai clients dato che *sara' il solo Squid a risolvere i nomi di dominio* per i suoi client http.
 
 Squid ascolta di default sulla porta 3128,  per impostare *apt* per utilizzarlo si aggiunga ad ``/etc/apt/apt.conf`` ::
 
@@ -313,7 +367,9 @@ Cache dir serve per impostare dimensione e percorso della cache creata sul suppo
 
 La dimensione ovviamente dipendera' dallo spazio disponibile, dimensioni tipiche e massime degli oggetti che si vuole tenere in cache (un solo file *.iso e' circa ``700 MB``, il pacchetto *Openoffice.org* circa ``150 MB``, un pacchetto debian circa ``20 MB``), numero dei client.
 
-Si presti poi attenzione alla natura dei dati che saranno salvati nella cache: sono tutti dati facilmente sostituibili (gli originali sono *on-line*) la cui perdita non arreca danni permanenti. Questo rende la cache di Squid un possibile candidato ad un *RAID stirpe* (livello 0), con vantaggi sia per le prestazioni (e la velocita' di navigazione e' uno dei motivi per cui si installa Squid) che per l'utilizzo estensivo dello spazio di storaggio. Questo fino al momento in cui per voi non sia piu' importante *garantire la disponibilita' del servizio* (se il RAID stripe dovesse rompersi gli utenti non potrebbero piu' navigare, cosa che per natura dello stripe e' maggiormente probabile rispetto  ad un *mirror* o a un filesytem *normale*)  con un RAID mirror o 5.
+Si presti poi attenzione alla natura dei dati che saranno salvati nella cache: sono tutti dati facilmente sostituibili (gli originali sono *on-line*) la cui perdita non arreca danni permanenti. Questo rende la cache di Squid un possibile candidato ad un *RAID stirpe* (livello 0) a ad un file system che prediliga le performance a scapito della consistenza, con vantaggi sia per le prestazioni (e la velocita' di navigazione e' uno dei motivi per cui si installa Squid) che per l'utilizzo estensivo dello spazio di storaggio. 
+
+Questo fino al momento in cui per voi non sia piu' importante *garantire la disponibilita' del servizio*, ad esempio con un RAID *mirror* o 5 (se il RAID stripe dovesse rompersi gli utenti non potrebbero piu' navigare, cosa che per natura dello stripe e' maggiormente probabile rispetto  ad un *mirror* o a un filesytem *normale*).
 
 Altra considerazione: i dati del proxy vengono slavati sul filesytem del server dietro richiesta di utenti esterni talvolta sconosciuti. Come per i servizi di file sharing o per la posta elettronica non c'e' motivo che il filesystem su cui sono ospitati questi dati abbia i privilegi di eseguibilita' o suid (in genere si puo' anche usare *noatime* per renderlo piu' veloce, che si usi o meno il journal dipende dalle preferenze: affidabilita' oppure prestazioni):
 
@@ -321,9 +377,9 @@ Altra considerazione: i dati del proxy vengono slavati sul filesytem del server
 
        ...
        # Filesystem per Squid http cache
-       /dev/md3/       /var/spool/squid/       ext3,noexec,nosuid,noatime  0 3
+       /dev/md3/       /var/spool/squid/       ext2,noexec,nosuid,noatime  0 3
 
-Ora possiamo impostare la cache direttamente nel file ``/etc/squid3/squid.conf``::
+Ora possiamo impostare la cache nel file di configurazione ``/etc/squid3/squid.conf``::
 
        #TAG: cache_dir (riga 1628)
        #       Usage:
@@ -336,13 +392,13 @@ Ora possiamo impostare la cache direttamente nel file ``/etc/squid3/squid.conf``
        #Default:
        # cache_dir ufs /var/spool/squid3 100 16 256
        cache_dir aufs /var/spool/squid3 300 24 256
+       #         |    |                 |   |  secondo livello di directory 
+       #         |    |                 |   directory primo livello
+       #         |    |                 dimensione in MB
+       #         |    path della cache
        #         algoritmo
-       #              path della cache
-       #                                dimensione in MB
-       #                                    directory primo livello
-       #                                       secondo livello di directory 
 
-Se si modifica la struttura del filesytem della cache di Squid, ad esempio variando il numero delle directory, puo' essere opportuno rigenerare la struttura della cache di squid (per lo meno se si *aumenta* il numero delle directory di primo o secondo livello). Tipicamente e' consigliabile cancellare (se si ha *ridotto* il numero delle directory) la vecchia cache e poi generare una nuova struttura. Se si vuole *star nel sicuro* ogni volta che si modifica l'impostazione delle directory *si svuoti la vecchia cache e se ne generi una nuova* ::
+Se si modifica la struttura del filesytem della cache di Squid, ad esempio variando il numero delle directory, puo' essere opportuno rigenerare la struttura della cache di squid. Tipicamente e' consigliabile cancellare (se si ha *ridotto* il numero delle directory) la vecchia cache e poi generare una nuova struttura. Se si vuole *star nel sicuro* ogni volta che si modifica l'impostazione delle directory *si svuoti la vecchia cache e se ne generi una nuova* ::
 
        # /etc/init.d/squid3 stop
        # rm -r /var/spool/squid3/??
@@ -376,10 +432,10 @@ TAG: cache_mem
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 *Cache_mem* imposta quanta memoria RAM venga utilizzata per la cache di Squid. 
-Questo dipendera' dalla RAM disponibile sul sistema, e da quanta di questa volete mettere a disposizione di Squid (altri servizi importanti girano sulla stessa macchina?).
+Questo dipendera' dalla RAM disponibile sul sistema, e da quanta di questa volete mettere a disposizione di Squid (altri servizi importanti girano sulla stessa macchina? ).
 Questo parametro influisce sulle prestazioni e sul degrado dei supporti di storaggio (sopratutto se magnetici).
 
-Se si stesse pensando di usare dell'hardware *embedded* a basse prestazioni / consumo per realizzare un server gateway / NAT / Squid si tenga presente che Squid e' relativamente esoso di risorse: avra' bisogno di una macchina con ``~25MB`` (MegaByte) di RAM e *~150MHZ di CPU ARM* per servire decorosamente una decina di client http su una rete ethernet 10/100. In questo caso non fate scendere ``cache_mem`` sotto i ``2/4 MB`` pena un accesso continuo al supporto di storaggio.
+Se si stesse pensando di usare dell'hardware *embedded* a basse prestazioni / consumo per realizzare un server gateway / NAT / Squid si tenga presente che Squid e' relativamente esoso di risorse rispetto agli altri servizi: avra' bisogno di  ``~25MB`` (MegaByte) di RAM e *~150MHZ di CPU ARM* per servire decorosamente una decina di client http su una rete ethernet 10/100. In questo caso non fate scendere ``cache_mem`` sotto i ``2/4 MB`` pena un accesso continuo al supporto di storaggio.
 
 Se invece si disponesse di una macchina dedicata a Squid con gigabytes di RAM non si esiti a dedicarne buona parte a *cache_mem*.
 
@@ -398,7 +454,9 @@ TAG: cache_mem   (1566)::
 TAG: minimum_object_size
 ~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-Questo parametro imposta la dimensione minima degli oggetti salvati nella cache. Settato a ``0`` o a valori molto piccoli puo' influire negativamente sulla deframmentazione del filesytem e consumare un numero elevato di *inode* (cosa non piu' importante con ext4 o altri filesytem).
+Questo parametro imposta la dimensione minima degli oggetti salvati nella cache. Settato a ``0`` o a valori molto piccoli puo' influire negativamente sulla frammentazione del filesytem e consumare un numero elevato di *inode* (cosa non piu' importante con ext4 o altri filesytem).
+
+In  scenari con connessioni molto veloci ( >~10Mb), pochi client (una decina) e server poco performanti nella velocita' di accesso ai filesystem ( ~20MB/s, per quanto il limte sia piuttosto il *seek-time* ) tenere in cache i file piu' piccoli aumenta la latenza della navigazione.
 
 TAG: minimum_object_size::
 
@@ -420,9 +478,9 @@ Open Relay:
        Un servizio a cui possono accedere tutti indiscriminatamente.
        La cosa puo' andare bene per servizi come i server web, che aspirano per loro natura
        al maggior numero possibile di utenti, ma non a servizi come i proxy http oppure
-       ai server di posta elettronica (che permetterebbero l'invio di SPAM).
+       ai server di posta elettronica (adibiti ai soli utenti della rete locale).
 
-Generalmente non volete che il vostro proxy http venga usato da persone sconosciute le quali sostanzialmente *navigherebbero sotto l'identita' del vostro proxy* (probabilmente per visionare materiali che non vorrebbero fossero ricondotti direttamente a loro, per motivi che sta a voi prendere in considerazione) consumando traffico e banda della vostra connessione a internet. Tenere Squid in modalita' *Open relay* e' al giorno d'oggi un buon modo per essere inseriti in una *black list*.
+Generalmente non volete che il vostro proxy http venga usato da persone sconosciute ed esterne alla vostra rete, le quali sostanzialmente *navigherebbero sotto l'identita' del vostro proxy* (probabilmente per visionare materiali che non vorrebbero fossero ricondotti direttamente a loro) generando traffico e consumando banda della vostra connessione a internet. Tenere Squid in modalita' *Open relay* e' al giorno d'oggi un buon modo per essere inseriti in una *black list*.
 
 Per poter limitare gli accessi a Squid dal punto di vista dell'applicazione (quarto livello TCP/IP) si identifichera' inizialmente l'entita' *rete locale* (es: ``localnet``) con una ACL di tipo *src* (indirizzi IP sorgenti) indicando la *classe / range di IP* della nostra rete.
 
@@ -431,6 +489,9 @@ Per poter limitare gli accessi a Squid dal punto di vista dell'applicazione (qua
 Per maggiori dettagli sulla sintassi utilizzabile per esprimere i range di IP: 
 http://www.visolve.com/squid/squid24s1/access_controls.php
 
+E' poi sempre possibile tenere il proxy in ascolto su un solo indirizzo IP, nel caso si disponga di piu' devicei di rete, oppure settare un firewall per limitare il traffico dai primi livelli del TCP/IP.
+
+
 
 ACL e http access
 ~~~~~~~~~~~~~~~~~~~~~
@@ -510,19 +571,37 @@ Si puo' controllare il corretto funzionamento del server seguendo i log di acces
 In oltre e' possibile configurare diversi *analizzatori di log* come ``Webalizer`` per studiare i log di Squid.
 
 
+Tiny proxy
+==========
+
+Se avete l'esigenza di un proxy server per la condivisione della connessione ad internet ma non avete la necessita' o le risorse di un *caching* proxy come Squid potete considerare **tinyproxy**, questo e' molto piu' leggero (utilizza circa ~2MB di RAM e ovviamente non deve accedere continuamente ad un file system per lo storaggio della cache) e risulta piu' semplice nella configurazione.
+
+TinyProxy puo' essere utilizzato come sostituto di emergenza in una rete in cui Squid e' momentaneamente non disponibile.
+
+File di configurazione: ``/etc/tinyproxy/tinyproxy.conf`` ::
+       
+       # Porta su cui ascoltare
+       Port 3128
+       # IP su cui ascoltare
+       Listen 10.10.208.160
+       # Negoziazione accessi
+       Allow 10.10.208.0/24
+
+
+
 Apache
 ========
 
-Apache HTTP Server, o piu' comunemente Apache, e' il nome dato alla piattaforma server Web modulare piu' diffusa (ma anche al gruppo di lavoro open source che ha creato, sviluppato e aggiornato il software server), in grado di operare da sistemi operativi UNIX-Linux e Microsoft.
+Apache HTTP Server, o piu' comunemente Apache (*a patchy NCSA web server* ), e' il server web modulare piu' diffuso e strutturato disponibile con licenza libera, in grado di operare da sistemi operativi UNIX/Linux e Microsoft.
 
-Un server web e' un processo, e per estensione il computer su cui e' in esecuzione, che si occupa di fornire, su richiesta del browser, una pagina web (spesso scritta in HTML). Le informazioni inviate dal server web viaggiano in rete trasportate dal protocollo HTTP. L'insieme di server web dà vita al World Wide Web, uno dei servizi piu' utilizzati di Internet.
+Un server web e' un processo, e per estensione il computer su cui e' in esecuzione, che si occupa di fornire, su richiesta del browser, una pagina web (spesso scritta in HTML). Le informazioni inviate dal server web viaggiano in rete trasportate dal protocollo HTTP. L'insieme di server web da' vita al World Wide Web, uno dei servizi piu' utilizzati di Internet.
 
 Pacchetti da installare::
 ----------------------------
 
         apache2 apache2-doc
 
-Con la release 2.0 di Apache viene automaticamente resa disponibile anche la versione SSL (Secure Socket Layer, connessioni criptate ) del web server.
+Con la release 2.0 di Apache viene automaticamente resa disponibile anche la versione SSL (Secure Socket Layer, connessioni criptate ) del web server senza che ci sia la necessita' di installare altri pacchetti.
 
 
 Configurazione di Apache
@@ -570,6 +649,7 @@ Server-Pool Size Regulation
 AccessFileName
          Il nome del file che viene onorato per modificare le impostazioni per una singola directory, legato alla direttiva AllowOverride .
 
+
 Installazione di PHP
 ---------------------
 
@@ -584,8 +664,8 @@ Creare nella cartella ``/var/www`` (o altra cartella visibile) un file con esten
 
 Questa funzione di php generera' la tipica pagina con le impostazioni attuali per PHP. Richiamando la pagina (es: ``http://localhost/info.php`` ) verra' generata dall'interprete PHP la pagina HTML e resa disponibile tramite Apache ai client HTTP, a prova del corretto funzionamento del modulo di PHP e della sua integrazione con il server web Apache.  In caso contrario se il client http proporra' di scaricare la pagina invece che visualizzarla nel browser: non funziona l'interprete di php o sono mal configurati i MIME-type. prima di tutto assicurarsi di aver fatto ripartire Apache.
 
-Installazione del supporto per Mysql
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Installazione del supporto per Mysql a PHP
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 Installare i pacchetti::
 
@@ -594,14 +674,14 @@ Installare i pacchetti::
 Controllare tramite la pagina php.info che sia abilitato il supporto per Mysql (ripartito Apache, ricaricare la pagina e cercare con CTRL+f ``mysql``).
 
 phpmyadmin
-~~~~~~~~~~~~~~~~~~~~~
+~~~~~~~~~~
 
 L'interfaccia web Phpmyadmin non richiede necessariamente la presenza di un database Mysql locale, puo' infatti essere utilizzata per gestire database remoti (il suo file di configurazione: ``/etc/phpmyadmin/config.inc.php`` ). Nel caso si voglia installare localmente Mysql si utilizzi il pacchetto ``mysql-server`` .
 
 Phpmyadmin dovrebbe essere disponibile all'URL: ``http://localhost/phpmyadmin/``, se cosi non fosse controllare che sia incluso il file ``/etc/phpmyadmin/apache.conf`` in ``/etc/apache2/conf.d/`` .
 
-Installazione del supporto per Postgresql
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Installazione del supporto per Postgresql a PHP
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 Installare i pacchetti::
 
@@ -639,19 +719,24 @@ Gestione DNS
 
 Prima di tutto per poter impostare i virtual hosts dovete avere un server DNS che risolva i vostri nomi di dominio sull'indirizzo IP del server. Questo si puo' ottenere in vari modi, ad es:
 
-        *Bind* (DNS server)
-         Impostare i campi A nelle proprie zone gestite dal server DNS Bind. Ad es: ``papo            A       212.22.136.248``
 
-        *Servizio DNS dinamico on line*.
-         Utilizzare un servizio come ad es: https://www.dyndns.com/ per mappare nomi di dominio sul proprio indirizzo IP, comodo ad esempio se si dispone di un indirizzo IP pubblico (anche se dinamico) per la propria connessione ad internet.
+        ``/etc/hosts``
+         Per prove sul proprio sistema potete impostare i nomi dei vostri virtual server nel file /etc/hosts .
 
         *Dnsmasq* (DNS server)
          Utilizzabile al livello della rete locale per fare dei test, utilizzando direttive come: ``address=/davide.piffa.net/10.10.208.178``
 
-        ``/etc/hosts``
-         Per prove sul proprio sistema potete impostare i nomi dei vostri virtual server nel file /etc/hosts .
+        *Servizio DNS dinamico on line*.
+         Utilizzare un servizio come ad es: https://www.dyndns.com/ per mappare nomi di dominio sul proprio indirizzo IP, comodo ad esempio se si dispone di un indirizzo IP pubblico (anche se dinamico) per la propria connessione ad internet.
+
+        *Bind* (DNS server)
+         Impostare i campi A nelle proprie zone gestite dal server DNS Bind. Ad es: ``papo            A       212.22.136.248``
+
+
+Eseguire una query DNS con ``dig``::
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-Query DNS con ``dig``::
+Per testare la corretta risoluzione dei vostri nomi di dominio sui relaivi indirizzi IP si usi dig (o altre utlity, vedere la sezione relativa i DNS). Dig e' contenuto nel pacchetto ``dnsutils``. 
 
     # dig 177.piffa.net
 
@@ -666,11 +751,16 @@ Query DNS con ``dig``::
     
     ;; ANSWER SECTION:
     177.piffa.net.          0       IN      A       10.10.208.177
+
+    ;; SERVER: 10.10.208.248#53(10.10.28.248)
     
 
 La parte interessante e' l'*ANSWER SECTION*: ``177.piffa.net.          0       IN      A       10.10.208.177`` . Il nome di dominio 177.piffa.net viene risolto sull'ip 10.10.208.177 , nel nostro Apache (che risponde all'ip 10.10.208.177 ) dovra' essere disponibile un virtual host che corrisponde al nome ``177.piffa.net`` (``ServerName``) .
 
-Virtual host
+Il server DNS utilizzato dal sistema e' evidenziato dalla stringa: ``;; SERVER: 10.10.28.248#53(10.10.28.248)`` che dovrebbe corrispondere a quanto impostato nel vostro ``/etc/resolv.conf``. Se il vostro browser web utilizza un proxy http sara questo a risolvere i nomi di dominio, tipicamente potete disabilitare l'uso del proxy per determinati domini nella sezione di configurazione del browser.
+
+
+Virtual hosts
 ~~~~~~~~~~~~~~
 
 Esempio di Virtual host::
@@ -693,7 +783,7 @@ Quelle che abbiamo appena visto sono le direttive essenziali per definire un sit
        Log degli errori separato dai restanti siti web ospitati dal server.
        
 * ``LogLevel warn``
-       Livello di importanza degli eventi loggati= warning *attenzione* . 
+       Livello di importanza degli eventi loggati: warning *attenzione* . 
 
 * ``CustomLog /var/log/apache2/177.piffa.net/access.log combined``
        Log di accesso separati dagli altri siti, utile anche qua per statistiche di accesso per il solo sito virtuale.
@@ -750,6 +840,8 @@ Ora l'IP 192.168.0.1 non potra' piu' accedere ai materiali dell'intero sito virt
 In questo modo solo la classe IP ``192.168.0.0/24`` potra' accedere alla directory ``/limitata``
 Si tenga pero' conto che e' relativamente facile per un malintenzionato cambiare il proprio indirizzo IP, oppure collegarsi da un altra zona. Meno facile e' accedere ad una classe privata trovandosi all'esterno di questa, ma ci sono comunque soluzioni piu' eleganti.
 
+* Mod_access:  http://httpd.apache.org/docs/2.0/mod/mod_access.html
+* mod_authz_hosti(Available in Apache 2.1 and later):  http://httpd.apache.org/docs/2.2/mod/mod_authz_host.html
 
 User Authentication
 ---------------------
@@ -1058,10 +1150,14 @@ Il file ``/etc/resolv.conf`` contiene le impostazioni sul dns usato dal sistema,
 
        - ``search``: nome di dominio usato dalla rete sul quale cercare gli hosts. Ad esempio se impostato su ``piffa.net`` pingando l' host ``bender`` viene automaticamente fatto un tentativo di ricerca per ``bender.piffa.net``.
 
+Predisponendo l'infrastruttura di rete della vostra LAN e' consigliabile impostare sempre almeno un DNS cache sul vostro server locale per i vari client. In questo modo in caso di malfunzionamento del DNS o necessita' di intervenire / sostituire i DNS non sara' piu' necessario dover reimpostare ogni singolo client della LAN: bastera' intervenire sul server DNS cache, ad esempio per utilizzare un nuovo forwarder, o modificare al volo un record DNS. La modifica, anche detta *mascheramento*, di un record come il *server smtp* o un *MX* potrebbe tirarvi rapidamente fuori dai guai nel caso di un problema improvviso con la posta elettronica o qualunque altro servizio che possiate reindirizzare col DNS.
+
+Utilizzare un server DHCP e una DNS cache come ``Dnsmasq`` possono permettervi di risolvere al volo molte delle problematiche relative alla configurazione della vostra LAN: ad esempio dover intervenire manualmente su decine di client per modificare le impostazioni di SMTP | gateway | DNS | proxy.
 
 Si veda anche la pagina man di resolv.conf.
 
-Attenzione: se si usa un client DHCP o simile questo file potra' essere riscritto automaticamente in base a quanto ottenuto dal DHCP. Si veda la documentazione del pacchetto ``resolvconf``.
+.. warning::
+       Attenzione: se si usa un client DHCP, ppp (ADSL compresa)  o simile questo file potrebbe' essere riscritto automaticamente in base a quanto ottenuto dal DHCP. Si veda la documentazione del pacchetto ``resolvconf``.
 
 
 /etc/hosts
@@ -1077,39 +1173,50 @@ Tabella statica per l'associazione tra IP e nomi di dominio::
         91.191.138.15   thepiratebay.org
         192.168.0.11    chrome  chrome.mydomain.com
 
-Il contenuto e' un associazione tra un *IP* e stringhe di testo (anche piu' di una es: ``mirror`` e ``mirror.piffa.net``), un record per riga.
+Il contenuto del file e' un associazione tra un *IP* e stringhe di testo (anche piu' di una per IP) es: ``mirror`` o  veri e propi nomi di dominio ``mirror.piffa.net``. Si puo inserire un nome semplice come *casa* per riferirsi ad un host che si ha necessita' di contattare spesso, oppure mappare un nome di dominio completo su un indirizzo IP.
 
-Il problema e' la gestione di questo file: quando gli host cambiano IP si devono aggiornare i records, e poi c'e' il problema di distribuire questo file tra i vari hosts della propria LAN. Un metodo semplice per distribuire questo file e' utilizzare ``Dnsmasq``: questo infatti legge e onora il file ``hosts`` locale e lo *distribuisce* ai clients.
+Il problema e' la gestione di questo file su molti hosts: quando gli host cambiano IP si devono aggiornare manualmente i records, operazione in se' non particolarmente gravosa ma che andra' fatta per ogni client della vostra LAN. Un metodo semplice per distribuire questo file e' utilizzare ``Dnsmasq``: questo infatti legge e onora il file ``hosts`` che avete prodotto e lo rende disponibile ai clients tramite le query DNS.
 
-Modificare (riconducendola a un IP interno, cosi' annullandola) la risoluzione di un nome di dominio e' un modo drastico e funzionale per *annullarlo* rendendolo indisponibile alla propria rete locale, ad esempio aggiungere al file ``/etc/hosts``::
+Dnsmasq lavora come un server DNS, i vostri client lo interrogheranno per tradurre nomi di host e domini in indirizzi IP, risolvendo il problema della *distribuzione* del file ``hosts`` tra molteplici clients. Infatti il servizio DNS indica appunto una *directory distribuita* per la risoluzione dei nomi di dominio, risolvendo i problemi dell'aggiornamento e diffusione dei continui cambiamenti di questa.
+
+Modificare la risoluzione di un nome di dominio esistente (ad esempio riconducendola a un IP interno)  e' un modo drastico e funzionale per *annullarlo* rendendolo non disponibile alla propria rete locale. Ad esempio aggiungere al file ``/etc/hosts``::
        
         127.0.0.1       www.facebook.com 
 
-Impedira' agli utenti della LAN di raggiungere *facebook*, ora reindirizzato a i``localhost``.
+Impedira' agli utenti della LAN di raggiungere *facebook*, ora reindirizzato a ``localhost``.
 
+Oppure si potrebbe ricondurre l'indirizzo IP di un server HTTP pubblico usato per i downloads (ad esempio un mirror della propia distribuzione come ``ftp.it.debian.org``) a un equivalente mirror creato all'interno della rete locale, riducendo il traffico verso l'esterno e aumentando notevolmente la velocita' di scaricamento.
 
 Hostname
 ------------
 
-Ogni computer ha un *proprio nome* visualizzabile (e modificabile) con il comando ``hostname``.
+Ogni computer ha un *proprio nome* visualizzabile (e modificabile) con il comando ``hostname``. Quando utilizzate a una shell su un host in genere l'hostname compare nel prompt della shell.
 
-Per modificare in modo permanente il nome del computer si modifichi il contenuto del file ``/etc/hostname``.
+Per visualizzare il nome dell'host su cui si sta operando si digiti semplicemnte ``hostname``, lo stesso comando con un oggetto modifica temporaneamente il nome dell'host. Per modificare in modo permanente il nome del computer si modifichi il contenuto del file ``/etc/hostname``.
 
-Tipicamente si vuole mantenere una correlazione tra il nome dell' host, o meglio la stringa con cui il server si qualifica all'esterno, e il *PTR* dell'IP. Nel caso di *servizi virtuali* ci sara' un *nome server* principale associato al *PTR* condiviso.
-Non e' automatico che un servizio, ad esempio un server di posta, si qualifichi leggendo il contenuto di questo file e magari aggiungendo come suffisso il dominio di cui fa parte l' host: a volte questo parametro puo' essere specificato nel file di configurazione del servizio::
+Si faccia attenzione a non aver un hostname puramente numerico: ad es. ``161``. E' opportuno che il nome sia comunque un alfanumerico: ``host-161`` o simile.
 
-        * Squid: ``visible_hostname``
+FQDN
+~~~~~~~~~
 
-        * Postfix: ``myhostname``
+Per semplicita' gli host sono generalemente raggiungibili dall'esterno mappando il loro IP su un nome di dominio FQDN: fully qualified domain name, composto generalmente da *hostname*.``domain-name``, ad es. *bender*.``piffa.net``.
 
-Si faccia attenzione a non aver un hostname puramente numerico: ad es. ``161``. E' opportuno che il nome sia comunque un alfanumerico: ``host-161`` o simile.
-        
+Alcuni servizi internet fanno affidamento sul PTR dell'IP del server per cercare una conferma che il *servizio* sia veramente chi afferma di essere (ad esempio STMP).
+
+Non e' automatico che un servizio, ad esempio un server di posta, si qualifichi leggendo il contenuto del file ``hostname`` aggiungendo come suffisso il dominio della rete di cui fa parte l' host: a volte questo parametro puo' essere specificato nel file di configurazione del servizio::
+
+        * Squid (HTTP proxy): ``visible_hostname``
+
+        * Postfix (SMTP server): ``myhostname``
+
+I motivi sono diversi, senza entrare nel dettaglio dei vari protocolli si pensi comunque che un host ha sempre un solo nome, ma puo' avere un numero variabile di *device di rete* sia fisici che virtuali con relativi *indirizzi IP*, e piu' servizi in ascolto sui vari IP.
+  
 DNSmasq
 ========
 
-Dnsmasq puo' svolgere le funzioni di  un DNS cache / forwarder e un server DHCP caratterizzato dalla facilita' di configurazione, leggerezza e dalla possibilita' di modificare rapidamente i record DNS serviti alla rete. Puo' essere anche utilizzato come `server per il boot da rete <http://www.debian-administration.org/articles/478>_` .
+Dnsmasq puo' svolgere le funzioni di  un DNS cache / forwarder, server DHCP, e' caratterizzato dalla facilita' di configurazione, limitato uso di risorse, adattabilita' a connessioni *dinamiche* come ADSL o altre punto a punto (anche via cellulari) per condividere rapidamente la rete (cosa molto utile se ci dovesse trovare a ridare connettetivita' a una rete momentaneamente sprovvista),  dalla possibilita' di modificare rapidamente i record DNS serviti alla rete anche grazie alla distribuzione del file ``/etc/hosts`` locale. Puo' essere anche utilizzato come `server per il boot da rete <http://www.debian-administration.org/articles/478>_` .
 
-Dnsmasq e' un interessante alternativa all'uso del server DNS Bind in modalita' cache-only (non autoritativo) accompagnato dal server DHCPd. I vantaggi sono:
+Dnsmasq e' un interessante alternativa all'uso del server DNS Bind in modalita' *forwarding e cache-only* (non autoritativo) accompagnato dal server DHCPd. I vantaggi sono:
 
 - Leggerezza: puo' essere fatto girare su una macchina relativamente debole in caso di bisogno.
 - Rapidita' di configurazione (in particolare per servire dei record A / MX alla rete, modificando al volo i valori originali ospitati sul server DNS pubblico).
@@ -1155,7 +1262,7 @@ Si faccia *attenzione*: in una rete puo' essere presente **un solo server DHCP**
 DNS cache
 -----------
 
-Aggiungere al file ``/etc/resolv.conf`` il nameserver localhost in cima alla lista dei *nameserver* disponibili. Dnsmasq usera' la propria cache e in caso non abbia disponibile il *record DNS* richiesto fara' partire una query al primo DNS::
+Dnsmasq lavora di default come cache dns: inserire al file ``/etc/resolv.conf`` il nameserver localhost in cima alla lista dei *nameserver* disponibili. 
        
        nameserver      127.0.0.1
 
@@ -1273,9 +1380,11 @@ piffa.net::
         ns1             A       94.23.63.105
         ns2             A       65.98.21.97
         zoo             A       94.23.63.105
+        smtp            A       94.23.63.105
         test.piffa.net. A       94.23.63.105
         *.piffa.net.    A       94.23.63.105 ; *catch all domain
         www             CNAME   zoo
+        ftp             CNAME   zoo
 
 
 
@@ -1327,7 +1436,7 @@ TXT
         Informazioni testuali associate ad un record
 
 NS
-        Name Server della zona
+        Name Server della zona. Non deve essere un cname.
 
 A
         Indirizzo ipv4 da associare al record
@@ -1336,14 +1445,139 @@ AAA
         Indirizzo ipv6 da associare al record
 
 CNAME
-        Canonical Name: un alias per un host
+        Canonical Name: un alias per un host: ad esempio per il dominio piffa.net possiamo settare degli alias come ``www.piffa.net, http.piffa.net, virtual.piffa.net, ftp.piffa.net, imap.piffa.net``. Comodo quando diversi alias sono sempre riferiti allo stesso ip.
 
 MX
-        Mail Exchanger: server di posta che si occupera' della posta elettronica per questo dominio.E' opportuno avere almeno un server di posta di back-up, per indicare la priorita' di un MX rispettoad un altro si usa un valore di 2 cifre: il valore piu' basso indica priorita' piu' bassa. Es: ``MX    10 smtp.piffa.net.`` per il server SMTP principale e ``MX      40 smtp2.piffa.net`` per il secondario.
+        Mail Exchanger: server di posta che si occupera' della posta elettronica per questo dominio.E' opportuno avere almeno un server di posta di back-up, per indicare la priorita' di un MX rispettoad un altro si usa un valore di 2 cifre: il valore piu' basso indica priorita' piu' bassa. Es: ``MX    10 smtp.piffa.net.`` per il server SMTP principale e ``MX      40 smtp2.piffa.net`` per il secondario. Non deve essere un cname.
 
 PTR
         Reverse look-up, usato per la mappatura inversa di un indirizzo ip a una stringa identificativa dell'host. Si noti che per poter modificare questi record si deve avere *in gestione* la *zona IP*, se cosi' non fosse si dovra' chiedere al propio provider la modifica di questo record per il propio ip. Links: http://www.zytrax.com/books/dns/ch3/
 
+DNS slave
+-------------
+
+Data l'importanza del servizio DNS e' necessario avere ridondanza per i server DNS che ospitano i vostri dati: in caso di indisponibilita' del server *master* (nel caso fosse il solo a tenere i dati questo comporterebbe la *scomparsa* di tutti i servizi / host da esso seviti!) il client potrebbe contattare uno degli *slave*.
+
+Gli slave recuperano i dati dei recordos RR direttamente dal master e non sara' quindi necessario dover mantenere manualmente il file di configurazione della zona sugli slaves, ogni volta che aggiorneremo il master questi dati si  propaghera' agli slaves automaticamente.
+
+Per attivare uno *slave* per la nostra zona di esempio ``piffa.net`` si inserisca nel file ``named.conf.local`` dello slave server::
+
+       zone "piffa.net" {
+               type slave;
+               file "/etc/bind/pz/piffa.net";
+               masters { 192.168.0.1; };
+               };
+       
+Facendo ripartire Bind il file ``/etc/bind/pz/piffa.net`` viene creato automaticamente.
+
+Segue un estratto di ``/var/log/syslog`` al ``restart`` di ``bind9`` sullo slave::
+
+       ... slave named[2256]: zone piffa.net/IN: loaded serial 200905245
+       ... slave named[2256]: running
+       ... slave named[2256]: zone piffa.net/IN: sending notifies (serial 200905245)
+       ... slave named[2256]: client 192.168.0.1#1464: received notify for zone 'piffa.net'
+       ... slave named[2256]: zone piffa.net/IN: notify from 192.168.0.1#1464: zone is up to date
+
+.. warning::
+       Bind9 (versione 9.3 presente in Debian Lenny) richiede una esplicita autorizzazione alla notifica per lo stesso server slave, che in fase di avvio interroghera' (inviando un notify) se' stesso per valutare se i dati relativi alla zona di cui e' slave sono aggiornati. Si aggiunga quindi al file ``/etc/bind/named.conf.options`` dello slave: ``allow-notify { 192.168.0.1; };`` all'interno della stanza ``options``, in cui l'inidirizzo IP inserito e' quello dello stesso slave server.
+
+Aggiornamento dinamico: nsupdate
+----------------------------------
+
+Dalla versione 8 di Bind e' dsponibile l'utility ``nsupdate`` (disponibile nel pacchetto ``dnsutils``) per aggiornare automaticamente i record di una zona secondo il paradigma client / server ( RFC2136 ) . Posto che abbiate a disposizione un server DNS Bind on-line su un indirizzo IP fisso e un zona da gestire (che potrebbe essere anche solo la delega di un dominio di terzo livello come *casa.miodominio.net*) sara' possibile aggiornare automaticamente i record che tirano a degli indirizzi IP *pubblici ma dnamici*, come quelli spesso messi a disposizione dei provider per le connessioni ad internet residenziali, in modo da poter rendere sempre raggiungibile la vostra workstation a casa anche dopo un aggiornamento dell'ip dinamico associato alla connessione.
+
+L'auenticazione del client nsupdate che avra' la possibilita' di aggiornare il server DNS master avviene tramite *Transaction signatures* (TSIG, RFC2845) usando un algoritmo di criptazione dati asimmetrico *HMAC-MD5* : generata una coppia di chiavi sul client / nsupdate  con l'utility  si dovra' trasferire la chiave pubblica sul server *master*, che verra' configurato per onorare gli aggiornamenti (eliminazione e inserimento di record RR) autenticati dalla chiave privata.
+
+Configurazione client (nsupdate)
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Sul client, sul quale non deve essere necessariamente  installato un server DNS Bind ma la sola utility ``nsupdate``, generiamo la coppia di chiavi con l'utility ``dnssec-keygen`` installabile tramite il pacchetto  ``bind9utils``::
+       
+       dnssec-keygen -a HMAC-MD5 -b 512 -n USER home.piffa.net.
+
+Otterremo le due chiavi ``Khome.piffa.net.+157+04331.key  Khome.piffa.net.+157+04331.private``, la chiave pubblica dovra' essere resa noto al server master che ricevera' l'update dei records. 
+
+Configurazione server: riconoscimento chiave
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Per rendere nota al server la chiave pubblica generata sul client si aggiunga quindi al file ``/etc/bind/named.conf`` sul server::
+       key home.piffa.net. {
+               algorithm HMAC-MD5;
+               secret "txfAkNTScANEu2V73mCeiDpXNc3pmf+7ONOoKnTKQKIZMzierSmeHjK5 Z8ntnByt/PJwv26jCIsVh8n+xzVsRw==";
+               };
+
+.. note::
+       La parte ``secret``, che potete leggere direttamente nel file \*.key della chiave genearta, e' scritto *tutto sulla stessa riga* senza ritorni a capo.
+
+
+Server: gestione dell'intera zona
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Sul server modifichiamo il file di configurazione ``named.conf.local`` della zona della quale vogliamo concedere l'aggiornamento al client::
+       
+       zone "piffa.net" {
+               type master;
+               file "/etc/bind/pz/piffa.net" ;
+               allow-update {
+                               key  home.piffa.net;
+                               };
+        };
+
+Sara' necessario assicurarsi che il demone di Bind sia in grado di modificare il file ``/etc/bind/pz/piffa.net``: dato che questo file ora sara' gestito da lui si proceda a cedergli la propieta' del file::
+       chown bind /etc/bind/pz/piffa.net
+
+Altro problema che si potrebbe porre: gli orologi di sistema dei due host devono essere sincronizzati per poter valutare l'opportunita' di un aggiornamento: si consigla di installare su entrambi l'utility ``ntpdate`` e di eseguirla facendo riferimento ai time server di Debian::
+
+       apt-get install ntpdate
+       ntpdate-debian
+
+
+Ora possiamo provare dal client a effettuare l'iserimento di un record per testarne il funzionamento::
+
+       # nsupdate -k Khome.piffa.net.+157+04331.private -v
+       > server ns1.piffa.net
+       > update add home.piffa.net. 86400 A 192.168.0.2
+       > show
+       Outgoing update query:
+       ;; ->>HEADER<<- opcode: UPDATE, status: NOERROR, id:      0
+       ;; flags: ; ZONE: 0, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
+       ;; UPDATE SECTION:
+       home.piffa.net.         86400   IN      A       192.168.0.1
+       
+       
+       > send
+
+Per comprendere meglio l'uso dell'utility ``nsupdate`` si consiglia la lettura della relativa pagina man. Nella prima riga viene invocato il comando ``nsupdate`` impostando col flag ``-k`` la chiave privata generata precedentemente, con ``server`` si imposta quale server NS autoritario della zona (che abbiamo precedentemente configurato per ricevere gli aggiornamenti) vogliamo contattare. Alla riga sucessiva ``update`` viene aggiunto un record ``A`` per la il dominio ``home.piffa.net`` indirizzato all'IP ``192.168.0.2``, poi ``show`` mostra quanto ci si prepara a comunicare al server con il finale ``send`` .
+
+Si noti che in questo modo *l'intera zona* piffa.net e suscettibile di essere modificata dal client, che potra' eliminare e inserire qualunque record. E' possibile gestire in modo piu' granulare la zona, ad esempio concedendo al client i privilegi per gestire solo una parte della zona o i tipo di record da gestire.
+
+Automatizzare l'aggiornamento dinamico
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Nsupdate risulta comodo per tenere aggiornati i record DNS degli host connessi ad internet con indirizzi IP dinamici (pubblici) assegnati dal provider. Il client deve essere in grado di contattare autonomamente il server DNS per comunicare un cambiamento del suo ip. Vediamo innanzi tutto un primo script per nsupdate::
+
+       #!/bin/bash
+       # Diamo al demone ppp un po' di tempo per negoziare la connessione
+       # prima di leggere l'IP ottenuto
+       sleep 15
+       IPADDR=$(/sbin/ifconfig ppp0 | awk '/inet/ { print $2 } ' | sed -e s/addr://)
+       
+       nsupdate  -k /root/dns/Khome.piffa.net.+157+04331.private <<-EOF
+               server 192.168.0.254
+               zone home.piffa.net.
+               update delete home.piffa.net. A
+               update delete home.piffa.net. MX
+               update add home.piffa.net. 432000 A $IPADDR
+               update add home.piffa.net. 432000 MX 10  home.piffa.net.
+               show
+               send
+               EOF
+
+
+Questo script legge il valore del device di rete ``ppp0`` creato dal `pppoe` di una connessione ADSL per ottenere l'indirizzo IP ottenuto dal provider (prima di farlo aspetta 15 secondi per dare il tempo al ``pppoe`` di negoziare la connessione).Vengono poi eliminati gli esistenti valori ``A`` e ``MX`` per ``home.piffa.net`` (si noti il punto finale dopo *net*) e inseriti quelli attuali. 
+
+Resta da decidere quando richiamare questo script: l'evento che causa l'assegnazione del nuovo IP in questo caso e una nuova connessione ``pppoe``, quindi sarebbe consigliabile inserire lo script nelle routine comprese in ``/etc/ppp/ip-up.d`` (si veda la documentazione di ppp), nel caso questo non desse i risultati sperati (per problemi di connessione) come via estrema si consideri di mettere lo script nella routine del demone ``cron`` in modo che venga eseguito periodicamente (ad esempio ogni giorno).
+
 
 Link suggeriti:
 ----------------
@@ -1734,20 +1968,20 @@ oppure utilizzare i log piu' vecchi ad es. ``/var/log/mail.log.0``
 Firewall
 ==========
 
-In Informatica, nell'ambito delle reti di computer, un firewall (termine inglese dal significato originario di parete refrattaria, muro tagliafuoco, muro ignifugo; in italiano anche parafuoco o parafiamma) e' un componente passivo di difesa perimetrale che puo anche svolgere funzioni di collegamento tra due o piu' tronconi di rete. Usualmente la rete viene divisa in due sotto reti: una, detta esterna, comprende l'intera Internet mentre l'altra interna, detta LAN (Local Area Network), comprende una sezione piu' o meno grande di un insieme di computer locali. In alcuni casi e' possibile che si crei l'esigenza di creare una terza sotto rete detta DMZ (o zona demilitarizzata) atta a contenere quei sistemi che devono essere isolati dalla rete interna ma devono comunque essere protetti dal firewall.
+In Informatica, nell'ambito delle reti di computer, un firewall (termine inglese dal significato originario di parete refrattaria, muro tagliafuoco, muro ignifugo; in italiano anche parafuoco o parafiamma) e' un componente passivo di difesa perimetrale che puo anche svolgere funzioni di collegamento tra due o piu' tronconi di rete. Usualmente la rete viene divisa in due sotto reti: una, detta esterna, comprende l'intera Internet mentre l'altra interna, detta LAN (Local Area Network), comprende una sezione piu' o meno grande di un insieme di computer locali. In alcuni casi e' possibile che si crei l'esigenza di creare una terza sotto rete detta DMZ (o zona demilitarizzata) atta a contenere quei sistemi che devono essere isolati dalla rete interna ma devono comunque essere protetti dal firewall.
 
-Una prima definizione chiusa di firewall è la seguente:
+Una prima definizione chiusa di firewall e' la seguente:
 
 Apparato di rete hardware o software che filtra tutti i pacchetti entranti ed uscenti, da e verso una rete o un computer, applicando regole che contribuiscono alla sicurezza della stessa.
 
-In realta'à un firewall puo'ò essere realizzato con un normale computer (con almeno due schede di rete e software apposito), puo'ò essere una funzione inclusa in un router o puo'ò essere un apparato specializzato. Esistono inoltre i cosiddetti "firewall personali", che sono programmi installati sui normali calcolatori, che filtrano solamente i pacchetti che entrano ed escono da quel calcolatore; in tal caso viene utilizzata una sola scheda di rete.
+In realta' un firewall puo' essere realizzato con un normale computer (con almeno due schede di rete e software apposito), puo' essere una funzione inclusa in un router o puo' essere un apparato specializzato. Esistono inoltre i cosiddetti "firewall personali", che sono programmi installati sui normali calcolatori, che filtrano solamente i pacchetti che entrano ed escono da quel calcolatore; in tal caso viene utilizzata una sola scheda di rete.
 
-La funzionalita'à principale in sostanza è quella di creare un filtro sulle connessioni entranti ed uscenti, in questo modo il dispositivo innalza il livello di sicurezza della rete e permette sia agli utenti interni che a quelli esterni di operare nel massimo della sicurezza. Il firewall agisce sui pacchetti in transito da e per la zona interna potendo eseguire su di essi operazioni di:
+La funzionalita' principale in sostanza e' quella di creare un filtro sulle connessioni entranti ed uscenti, in questo modo il dispositivo innalza il livello di sicurezza della rete e permette sia agli utenti interni che a quelli esterni di operare nel massimo della sicurezza. Il firewall agisce sui pacchetti in transito da e per la zona interna potendo eseguire su di essi operazioni di:
 controllo
 modifica
 monitoraggio
 
-Questo grazie alla sua capacita'à di "aprire" il pacchetto IP per leggere le informazioni presenti sul suo header, e in alcuni casi anche di effettuare verifiche sul contenuto del pacchetto.
+Questo grazie alla sua capacita' di "aprire" il pacchetto IP per leggere le informazioni presenti sul suo header, e in alcuni casi anche di effettuare verifiche sul contenuto del pacchetto.
 
 Links
 ------
@@ -1822,12 +2056,12 @@ Iptables lavora su 3 tabelle (tables) di default:
 
 * filter - Regola il firewalling: quali pacchetti accettare, quali bloccare
 
-* nat - Regola le attivita'à di natting
+* nat - Regola le attivita' di natting
 
 * mangle - Interviene sulla alterazione dei pacchetti.
 
 Ogni tabella ha delle catene (chains) predefinite (INPUT, OUTPUT, FORWARD ... ) a cui possono essere aggiunte catene custom. 
-Ogni catena è composta da un elenco di regole (rules) che identificano pacchetti di rete secondo criteri diversi (es: -p tcp --dport 80 -d 10.0.0.45)
+Ogni catena e' composta da un elenco di regole (rules) che identificano pacchetti di rete secondo criteri diversi (es: -p tcp --dport 80 -d 10.0.0.45)
 Ogni regola termina con una indicazione (target) su cosa fare dei pacchetti identificati dalla regola stessa (es: -j ACCEPT,  -j DROP ...)
 
 Match 
@@ -1884,23 +2118,23 @@ Target principali:
        Simile a SNAT, si applica quando i pacchetti escono da interfacce con IP dinamico (dialup, adsl, dhcp...). Si usa solo in nat / POSTROUTING e prevede l'opzione --to-ports porte. 
 
 -j REDIRECT 
-       Redirige il pacchetto ad una porta locale. Usabile solo in nat / PREROUTING e nat / OUTPUT è previsto per fare un transparent proxy (con proxy server in esecuzione sulla macchina con iptables)
+       Redirige il pacchetto ad una porta locale. Usabile solo in nat / PREROUTING e nat / OUTPUT e' previsto per fare un transparent proxy (con proxy server in esecuzione sulla macchina con iptables)
 
 -j RETURN 
-       Interrompe l'attraversamento della catena. Se questa è una secondaria, il pacchetto torna ad attraversare la catena madre da punto in cui aveva fatto il salto nella secondaria. Se il RETURN è in una delle catene di default, il pacchetto interrompe l'attraversamento e segue la policy di default.
+       Interrompe l'attraversamento della catena. Se questa e' una secondaria, il pacchetto torna ad attraversare la catena madre da punto in cui aveva fatto il salto nella secondaria. Se il RETURN e' in una delle catene di default, il pacchetto interrompe l'attraversamento e segue la policy di default.
 
 -j TOS 
        Usabile solo nella tabella mangle, permette di cambiare il TOS (Type Of Service) di un pacchetto con l'opzione --set-tos. Per un elenco dei parametri disponibili: iptables -j TOS -h
 
 -j MIRROR 
-       Curioso e sperimentale, questo target invia un pacchetto speculare al mittente. In pratica è come se facesse da specchio per tutti i pacchetti ricevuti. Da usare con cautela, per evitare attacchi DOS indiretti.
+       Curioso e sperimentale, questo target invia un pacchetto speculare al mittente. In pratica e' come se facesse da specchio per tutti i pacchetti ricevuti. Da usare con cautela, per evitare attacchi DOS indiretti.
 
 
 Tabella Filter
 ---------------
 
 E' quella implicita e predefinita (-t filter)
-Riguarda le attività di filtraggio del traffico.
+Riguarda le attivita' di filtraggio del traffico.
 Ha 3 catene di default:
 INPUT - Riguarda tutti i pacchetti destinati al sistema. In entrata da ogni interfaccia.
 OUTPUT - Riguarda i pacchetti che sono originati dal sistema e destinati ad uscire.
@@ -1929,7 +2163,7 @@ Se state provando una configurazione del firewall per una macchina remota e' buo
 Gestione regole (rules)
 --------------------------
 
-Il comando iptables viene usato per ogni attivita'à di gestione e configurazione.
+Il comando iptables viene usato per ogni attivita' di gestione e configurazione.
 
 Inserimento regole:
 
@@ -2049,24 +2283,192 @@ Brute force
 ~~~~~~~~~~~~
 
 Per limitare attacchi di tipo brute force su SSH::
+
        iptables -A INPUT -i ppp0 -p tcp -m tcp --dport 22 -m state --state NEW -m recent --update --seconds 3000 --hitcount 4 --name DEFAULT --rsource -j DROP
 
        iptables -A INPUT -i ppp0 -p tcp -m tcp --dport 22 -m state --state NEW -m recent --set --name DEFAULT --rsource
 
 
+FTP Server
+===========
 
-NOTE
-========
+Il File Transfer Protocol (FTP) (protocollo di trasferimento file), è un Protocollo per la trasmissione di dati tra host basato su TCP, in genere usato dagli autori di pagine web per *pubblicare* queste nei propio spazi web. Storicamente veniva anche usato, mediate l'utilizzo di utenze anonime, come punto di scambio per materiali di vari utenti tra loro sconosciuti (una directory dei materiali scaricabili e una dedicata agli *uploads* degli utenti, poi riordinati dall'*ftpmaster*). Tuttora si mantiene la cosuetudine di renedere disponibile i materiali dei *mirrors* anche tramite FTP, probabilmente per garantire l'accesso ai client piu' datati che non possono utilizzare tecnologie piu' recenti.
+
+
+Il protocollo FTP e' in chiaro (cioe' non criptato), sia per quanto riguarda il traffico ad esso associato che per il passaggio delle passwords degli utenti, facilmente sniffabili da chiunque abbia accesso alla rete. Naturalmente vsftp per quanto votato alla sicurezza non modifica queste caratteristiche del protocollo FTP (ma consente di usare OpenSSL per la autenticazione degli utenti).
+
+Se propio si deve mettere a disposizione un server FTP ai propi utenti si considerino le seguenti alternative:
+
+- Spingere gli utenti ad usare SFTP invece che FTP
+- Spingere gli utenti ad usare SSL per autenticarsi al server FTP
+- Nel caso di webdesigners si consideri la possibilita' di offrire alternative come GIT, Subversion, Rsync o Webdav
+
+Nel caso non si possa evitare il server FTP: 
+
+- Non dare agli utenti FTP una shell di sistema ( Concedere come shell ``ftp`` al posto di ``bash`` in ``/etc/passwd``)
+- Rendere il filesytem su cui scrive il demone FTP ``noexec`` e ``nosuid`` (vedi dopo)
+- Utilizzare un demone FTP come Vsftp: un server FTP con una forte inclinazione alla sicurezza: *Very Secure FTP Daemon*.
+
+Per maggiori informazioni sulle scelte di design legate alla sicurezza del demone si veda: http://vsftpd.beasts.org/DESIGN
+
+Vsftp mette a disposizione le seguenti funzionalita':
 
-Bind:
-        - altri esempi commenti su una zona
-        - esempi di una zona PTR?
-        - dns secondari
-        - nsupdate
+- Virtual IP configurations
+- Virtual users
+- Standalone or inetd operation
+- Powerful per-user configurability
+- Bandwidth throttling
+- Per-source-IP configurability
+- Per-source-IP limits
+- IPv6
+- Encryption support through SSL integration
 
 
-sintassi: in ``monospace`` :
+Pacchetti
+---------------
+
+Per installare il demone vero e propio si usi il pacchetto ``vsftpd`` , mentre per aver un client da cui fare qualche test sono dipsonibili:
+
+- ``ftp`` (pacchetto da installare) e' il solito client a riga di comando
+- ``gftp`` e' un client grafico simile al classico *WSftp*
+- Normalmente i file mananager com Konqueror possono lavarorare come client FTP
+
+
+Sessioni ftp
+-------------
+
+Vediamo alcuni dei comandi di base per gestire una sessione ftp a riga di comando:
+
+ftp nome_host
+       stabilire la connessione all'host, poi verra' chiesta la password dell'utente. Se avete sbagliato utente: user .
+
+help                   
+       Lista dei comandi disponibili.
+help [nome_comando]    
+       Cosa fa quel comando.
+put                    
+       Per caricare un file.
+get                    
+       Per scaricare un file.
+ls                     
+       Lista dei file disponibili.
+cd                     
+       Spostarsi in un altra directory.
+lcd                    
+       Cambio directory in LOCALE.
+mput/mget              
+       Per lavorare su file multipli.
+prompt                 
+       Per uscire dalla modalita' interattiva
+        (non vi chiede conferma di ogni singola operazione
+         su ogni singolo file...).
+binary                 
+       Entra in modalita' trasferimento binario.
+asii                   
+       Entra in modalita' trasferimento ascii.
+bye                    
+       Per chiudere la sessione.
+
+
+Configurazione iniziale
+------------------------
+
+Il demone di vsftpd e' immediatamente disponibile ma solo in modalita' anonima (si pensi a uno scenario in cui si vuole rendere disponibili dei files tramite FTP) e in *sola lettura*. Per accedere al servizio si usi quini come utente ``anonymous`` (la passwords in genere e' come consuetudine il propio indirizzo email), la cui *home* directory sara' ``/home/ftp/``::
 
-* nomi di files
-* comandi
-* pacchetti
+       zoo:~# ftp localhost
+       Connected to localhost.localdomain.
+       220 (vsFTPd 2.0.7)
+       Name (localhost:root): anonymous
+       331 Please specify the password.
+       Password:
+       230 Login successful.
+       Remote system type is UNIX.
+       Using binary mode to transfer files.
+       ftp> ls
+       200 PORT command successful. Consider using PASV.
+       150 Here comes the directory listing.
+       -rw-r--r--    1 0        0               0 Feb 03 17:17 anoni
+       226 Directory send OK.
+
+
+
+Abilitare gli utenti locali
+----------------------------
+
+
+Per poter modificare le impostazioni iniziali, ad esempio per permettere l'accesso agli utenti del server, si modifichera' il file ``/etc/vsftpd.conf``, a seguire le impostazioni fondamentali ed altre interessanti per rendere il server accessibile da utenti di sistema (autenticati tramite la loro password, quindi con PAM) per il tipico utilizzo di web designers che debbano pubblicare le loro pagine web (e non si siano fatti convincere a usare SFTP!)::
+
+
+       # Allow anonymous FTP? (Beware - allowed by default if you comment this out).
+       anonymous_enable=NO
+       # Disabilitiamo l'utente anonimo
+
+       # Uncomment this to allow local users to log in.
+       local_enable=YES
+       # Accesso garantito agli utenti di sistema
+
+       # Uncomment this to enable any form of FTP write command.
+       write_enable=YES        
+       # Permettiamo agli utenti di caricare documenti nella loro home
+
+       # You may fully customise the login banner string:
+       ftpd_banner=Benvenuti al servizio ftp del sito example.com
+
+
+Per abilitare i cambiamenti si proceda a riavviare il server: ``/etc/init.d/vsftpd restart`` e si monitorizzi  il file di log ``tail -f /var/log/vsftpd.log`` per controllarne il funzionamento (e anche ``/var/log/syslog`` nel caso non si riuscisse a far partire correttamente il servizio.
+
+NOTE: Se non riuscite ad ottenere un *directory listing* (``ls``) ottenendo un errore ``500 Illegal PORT command? FTP error`` abilitare la modalita' passiva col comando ftp ``passive``.
+
+
+Jail chroot
+------------
+
+Si puo' impedire all'utente di spostarsi arbitrariamente per il file system del servere visualizzare il contenuto delle directory, ad esempio la cartella ``/etc``, confinandolo in una jail chroot limitata alla sua home directory::
+
+       # You may restrict local users to their home directories.  See the FAQ for
+       # the possible risks in this before using chroot_local_user or
+       # chroot_list_enable below.
+       chroot_local_user=YES
+
+
+Generalmente un utente di sistema con il solo accesso FTP non dovrebbe avere la possibilita' di poter navigare liberamente per il file system del server, esponendo file di configurazione e quant'altro l'utente potrebbe trarre utili informazioni sul quali software siano installati e di che tipo::
+
+
+       Remote system type is UNIX.
+       Using binary mode to transfer files.
+       ftp> pwd
+       257 "/"
+       ftp> cd /etc/
+       550 Failed to change directory.
+
+
+Permessi sul filesystem
+-------------------------
+
+Come accennato precedentemente e' opportuno che i filesystems sui quali un utente puo' scrivere o modificare il contenuto non abbiano i privilegi di eseguibilita' e suid, nel nonstro caso vsftpd lavora sull'intera ``/home/`` directory quindi avremo in ``/etc/fstab``::
+
+       /dev/mapper/store-homes /home   ext3    rw,nosuid,noexec     0      2
+
+
+
+Altre opzioni
+-----------------
+
+xferlog_enable=YES
+       Verra' tenuto un file di log ``/var/log/vsftpd.log`` degli upload e download sul server.
+
+hide_ids=YES
+       Nasconde le userid e groupid mascherandole con ``ftp`` .
+
+anon_root=/home/ftp
+       Home directory dell'utente anonimo.
+
+write_enable=YES
+       Permette agli utenti di eseguire i comandi che possono modificare il filesystem: STOR, DELE, RNFR, RNTO, MKD, RMD, APPE e SITE .
+
+idle_session_timeout=600
+       Permette agli utenti di restare connessi piu' a lungo, utile per i webdesigners che passano intere giornate connessi al server.
+
+
+
+