]> git.piffa.net Git - doc/.git/blobdiff - source/servizi.txt
Servizi, samba
[doc/.git] / source / servizi.txt
index 58e91176721c99961512c1e080fb6a1f20d1a856..20fb1433d171888443372f7c24ab5eef82c9c862 100644 (file)
@@ -1,13 +1,13 @@
 ===============================
 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.9
+  :Version: 0.95
 
 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.
 
@@ -338,19 +338,18 @@ E' consigliabile impostare il proxy per apt anche in presenza di un proxy-http *
 Squid
 ======
 
-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.
+Squid e' un proxy cache http (ma puo' anche gestire i protocolli FTP e https) robusto e strutturato, grazie alla sua flessibilita' puo' essere utilizzato sia in piccole reti locali che in scenari piu' complessi. E' molto semplice configurarlo per la semplice *condivisione della navigazione internet* all'interno di una rete locale, per poi poter sucessivamente implementare la autenticazione degli utenti, 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'), il bilanciamento del carico tra piu' server proxy.
 
-Inoltre Squid svolge la funzione di *anonymizer*:
-       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*.
+Se il server Squid e' in grado di accedere a internet puor' 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.
 
-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.
+Inoltre Squid svolge la funzione di *anonymizer*: 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 Squid. Dal punto di vista della sicurezza della rete locale questo e' preferibile ad un approccio alla navigazione basato su NAT.
 
-Squid ascolta di default sulla porta 3128,  per impostare *apt* per utilizzarlo si aggiunga ad ``/etc/apt/apt.conf`` ::
+Squid ascolta di default sulla porta ``3128``, per quanto in genere la porta preferita per i servizi di caching http sia la ``8080``. Per utilizzarlo subito anche per apt si aggiunga ad ``/etc/apt/apt.conf`` ::
 
        Acquire::http::Proxy "10.10.208.254:3128";
 
 
-Per installare Squid si usino i pacchetti::
+Per installare Squid si usi il pacchetto::
 
        squid3
 
@@ -358,20 +357,23 @@ Per installare Squid si usino i pacchetti::
 Configurazione: squid.conf
 -------------------------------
 
-Segue un estratto delle direttive principali viste in aula presenti nel file di configurazione ``/etc/squid3/squid.conf`` .
+egue un estratto delle direttive principali viste in aula presenti nel file di configurazione ``/etc/squid3/squid.conf`` .
 
 Cache_dir
 ~~~~~~~~~~~~
 
-Cache dir serve per impostare dimensione e percorso della cache creata sul supporto di storaggio. Essendo la dimensione di default della cache pari a ``~100 MB`` e' altamente consigliabili aumentare questo parametro se si vuole poter utilizzare la funzione di *cache* http del software.
+Cache dir serve per impostare caratteristiche fondamentali della cache creata sul supporto di storaggio quali dimensione e percorso nel file-system. Essendo la dimensione di default della cache pari a ~``100 MB`` e' altamente consigliabili aumentare questo parametro se si vuole godere dei vantaggi della funzione di cache per piu' clients.
 
-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.
+Per stabilire il dimensionamento della cache si tenga conto dello spazio disponibile, dimensioni tipiche e massime degli oggetti che si vuole tenere in cache (un solo file .iso occupa circa ``700 MB``, il pacchetto Openoffice.org circa 150 MB, un pacchetto Debian circa 20 MB), e in fine del 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) 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. 
+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 causerebbe solo la necessita' di ripopolare la cache. 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*).
+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' piu' probabile rispetto ad 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):
+Opzioni del file system
+`````````````````````````
+
+I dati che compongono la cache vengono salvati sul filesytem del server dietro richiesta dei client http degli utenti della rete locale. 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 abbiano i privilegi di eseguibilita' o suid (in genere si possono anche usare opzioni come noatime per rendere i file-systems piu' veloci, scegliere di utilizzare un journal dipende dalla dimesione della cache dalle preferenze: affidabilita' oppure prestazioni):
 
 /etc/fstab ::
 
@@ -379,6 +381,10 @@ Altra considerazione: i dati del proxy vengono slavati sul filesytem del server
        # Filesystem per Squid http cache
        /dev/md3/       /var/spool/squid/       ext2,noexec,nosuid,noatime  0 3
 
+
+Configurazioni di Cache_dir
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
 Ora possiamo impostare la cache nel file di configurazione ``/etc/squid3/squid.conf``::
 
        #TAG: cache_dir (riga 1628)
@@ -398,7 +404,7 @@ Ora possiamo impostare la cache nel file di configurazione ``/etc/squid3/squid.c
        #         |    path della cache
        #         algoritmo
 
-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* ::
+Se si modifica la struttura della cache di Squid, ad esempio variando il numero delle directory, puo' essere opportuno cancellare e rigenerare la cache. 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/??
@@ -431,9 +437,9 @@ TAG: maximum_object_size (1760)::
 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 parametro influisce sulle prestazioni e sul degrado dei supporti di storaggio (sopratutto se magnetici).
+**Cache_mem** imposta quanta memoria RAM venga dedicata alla cache di Squid. Si consideri non solo quanta RAM sia disponibile sul sistema, ma anche quale sia l'utilizzo tipico di questo: altri servizi fondamentali necessitano di molta memoria?
+
+Questo parametro per altro influisce sulle prestazioni e sul degrado dei supporti di storaggio (sopratutto se magnetici). Ad esempio se si stanno utilizzando dischi rigidi esterni USB per la cache sara' preferibile cercare di usare quanta piu' RAM possibile per evitare il sovraccarico computazionale dovuto alla gestione dello stack USB, fenomeno evidente sui sistemi embedded come NAS.
 
 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.
 
@@ -456,7 +462,7 @@ 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 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.
+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 finisce per aumentare la latenza della navigazione.
 
 TAG: minimum_object_size::
 
@@ -472,7 +478,7 @@ TAG: minimum_object_size::
 Negoziazione degli accesi al servizio
 ---------------------------------------
 
-Squid e' uno di quei servizi soggetto a problemi di tipo *open relay* , si deve quindi limitare la rete che puo' accedere al servizio. 
+Squid fa parte di quei servizi suscettibili di diventare un open relay, sara' quindi necessario prestare attenzione a delimitare la rete che puo' accedere al servizio.
 
 Open Relay:
        Un servizio a cui possono accedere tutti indiscriminatamente.
@@ -489,7 +495,7 @@ 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.
+E' poi sempre possibile tenere il proxy in ascolto su un solo indirizzo IP, nel caso si disponga di piu' device di rete, oppure settare un IP firewall per limitare il traffico in base al protocollo IP.
 
 
 
@@ -544,7 +550,7 @@ Si proceda a creare una ``ACL`` di tipo ``src`` per identificare la nostra rete
 Testare Squid
 ---------------
 
-Configurato squid e' fondamentale testarne il corretto funzionamento per assicurarsi di non aver creato un *open-relay*. Per fare dei test significativi serve utilizzare degli host remoti: ci si connetta via ssh a questi per poi utilizzare ``wget`` da riga di comando.
+Dopo aver configurato squid e' fondamentale testarne il corretto funzionamento per assicurarsi di non aver creato un *open-relay*. Per fare dei test significativi serve utilizzare degli host remoti: ci si connetta via ssh a questi e si usi ``wget`` da riga di comando.
 
 
 Client: ~/.wgetrc
@@ -1547,9 +1553,36 @@ Ora possiamo provare dal client a effettuare l'iserimento di un record per testa
        
        > 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`` .
+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
 
-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.
+
+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:
@@ -1592,11 +1625,11 @@ Passwords e autenticazione
 Per poter configurare Samba in modo che usi un sistema di negoziazione degli accessi alle cartelle condivise basato su accoppiate *nome utente / password* bisogna distinguere tra 3 livelli di password (e generalmente volete usare *sempre la stessa password* per ognuno di questi) e delle differenze tra le modalita' di *autenticazione* (e quindi anche di criptaggio delle passwords) usate da sistemi GNU/Linux e Windows:
 
 1 Sistema \*Unix ( GNU/Linux )
-         E' la password dell'*utente di sistema* che viene usata sul sistema operativo su cui gira il software Samba. E' importante tenere conto anche delle *user-id* e *group-id* degli utenti che dovranno fisicamente scrivere sui file system. Se un utente non puo' scrivere in una certa posizione del file system (ad esempio nella cartella ``/mnt/condivisione`` che sara' stata necessariamente creata inizialmente dall'utente ``root``)  per mancanza dei privilegi di scrittura allora neanche Samba potra' farlo nel momento in  mette a disposizione la risorsa all'utente. Se si montano file-system dedicati per le condivisioni controllare i permessi e proprieta' dei *punti di mount**.
+         E' la password dell'*utente di sistema* che viene usata sul sistema operativo su cui gira il software Samba. E' importante tenere conto anche delle *user-id* e *group-id* degli utenti che dovranno fisicamente scrivere sui file system. Se un utente non puo' scrivere in una certa posizione del file system (ad esempio nella cartella ``/mnt/condivisione`` che sara' stata necessariamente creata inizialmente dall'utente ``root``)  per mancanza dei privilegi di scrittura allora non potra' farlo neanche quando Samba rendera' disponibile la risorsa all'utente. Se si montano file-system dedicati per le condivisioni controllare i permessi e proprieta' dei *punti di mount**.
           Queste passwords sono salvate nel solito file /etc/shadow (richiamato da /etc/passwd).
 
 2 Password per l'applicativo Samba
-         Samba deve essere compatibile con Windows e quindi utilizzare un sistema di criptazione delle password diverso da /etc/shadow . Le password per Samba possono essere gestite ad esempio col comando ``smbpasswd`` e vengono generalmente salvate all'interno di  ``/var/lib/samba/passdb.tdb`` .
+         Samba deve essere compatibile con Windows e quindi utilizzare un sistema di criptazione delle password diverso da ``/etc/shadow`` . Le password per Samba possono essere gestite ad esempio col comando ``smbpasswd`` e vengono normalmente salvate all'interno di  ``/var/lib/samba/passdb.tdb`` .
 
 3 Password per Windows.
           Gli utenti Windows effettuano il log-in alla partenza della sessione di Windows. Se si avra' l'accortezza di usare sempre la *stessa password* data precedentemente anche a Windows (o viceversa impostare la password per GNU/Linux / Samba uguale a quella di Windows) l'utente potra' accedere automaticamente alle condivisioni a lui disponibili.
@@ -1611,7 +1644,7 @@ Creazione di un utente denominato sambo::
        
        adduser --shell /bin/false sambo
 
-Nel file ``/etc/passwd`` avremo qualcosa come::
+Nel file ``/etc/passwd`` comparira' qualcosa come::
 
        sambo:x:1001:1001:Sambo utente Samba,,,:/home/sambo:/bin/false
 
@@ -1625,7 +1658,7 @@ Se successivamente si vorra' modificare la password di un utente gia' esistente
        smbpasswd  sambo
 
 
-La password sotto Windows verra' modificata sul sistema Windows.
+La password sotto Windows andra' modificata sul sistema Windows.
 
 Creare la condivisione
 ------------------------
@@ -1640,7 +1673,7 @@ Creazione della risorsa sambo_share nella home dell'utente sambo::
 Sicurezza: permessi di esecuzione sul server
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-Bisognerebbe notare sul server i permessi di esecuzione del file-system che ospita la cartella da condividere. Se i file che saranno contenuti nella condivisione saranno da usarsi sotto Windows non c'e' motivo che questi siano eseguibili sotto GNU/Linux. 
+A lato server si presti attenzione ai permessi di esecuzione del file-system che ospita la cartella da condividere. Se i file che saranno contenuti nella condivisione saranno da usarsi sotto Windows non c'e' motivo che questi siano eseguibili sotto GNU/Linux. 
 Si potrebbe avere quindi, ipotizzando una condivisione in ``/mnt/share`` che risieda su di un file system dedicato:
 
 ``/etc/fstab`` 
@@ -1652,7 +1685,7 @@ Si noti anche l'uso di *nosuid* per evitare la possibilita' di eseguire programm
 Configurazione dell'applicativo Samba vero e proprio.
 ------------------------------------------------------
 
-Avendo preparato gli utenti (ancora una volta: non si dia una shell completa a un utente che serve solo per Samba o la posta elettronica) e la cartella sul file system si puo' procedere a configurare la condivisione su Samba.
+Avendo preparato gli utenti (ancora una volta: non si dia una shell completa a un utente che accede solo a Samba o alla posta elettronica) e la cartella sul file system si puo' procedere a configurare la condivisione su Samba.
 
 
 /etc/samba/smb.conf riga ~235 , Share Definitions (in vim si usi 235gg )::
@@ -1960,7 +1993,7 @@ Links
 ------
 
 * http://openskill.info/topic.php?ID=124
-* http://iptables-tutorial.frozentux.net/iptables-tutorial.html
+* http://www.frozentux.net/iptables-tutorial/chunkyhtml/c962.html
 
 Ipfilter
 ----------
@@ -2016,7 +2049,9 @@ Vantaggi e svantaggi: consumo elettrico, efficienza, flessibilita', strumenti di
 Percorso dei pacchetti tra tabelle e catene
 -------------------------------------------
 
-link: http://iptables-tutorial.frozentux.net/iptables-tutorial.html#TRAVERSINGOFTABLES
+E importante conoscere il percorso che i paccheti seguono passando tra le varie catene, l'ordine infatti puo' cambiare il riusultato ottenuto (che il pacchetto raggiunga o meno l'host, oppure modificare il pachetto stesso).
+
+link: http://www.frozentux.net/iptables-tutorial/chunkyhtml/c962.html
 
 
 Concetti di base
@@ -2238,7 +2273,7 @@ Masquerading (sNAT)
 ~~~~~~~~~~~~~~~~~~~~
 
 Per attivare la network address translation (in questo caso un SNAT) per la rete locale privata sull'indirizzo ip del *modem*::
-       iptables -A POSTROUTING -s 192.168.0.0/255.255.255.0 -o ppp0 -j MASQUERADE
+       iptables -t nat -A POSTROUTING -s 192.168.0.0/255.255.255.0 -o ppp0 -j MASQUERADE
 
 Il *Masquerading* a differenza dello *SNAT* puro (``-j SNAT --to-source proprio_ip_pubblico ) legge l'indirizzo ip del device ``ppp0``. In questo modo se l'IP cambia automaticamente si aggiorna anche il source natting. Se avete un indirizzo IP statico assegnato al vostro gateway potete invece usare lo SNAT semplice.
 
@@ -2263,18 +2298,259 @@ Per limitare attacchi di tipo brute force su SSH::
 
 
 
-NOTE
-========
+Proc filesystem
+---------------------
+
+Tramite il filesystem virtuale **proc** possiamo monitorare talvolta anche modificarei, a seconda dei casi, alcuni parametri utili per il networking. La parte di proc che ci interessa si riconduce al percorso: ``/proc/sys/net/ipv4`` : vediamo alcuni dei parametri fondamentali.
+
+ip_forward
+~~~~~~~~~~~~~~~~~~~~~~~
+
+Questa variabile determine se l'instradamento dei pacchetti e' attvo, in caso positivo il kernel instradera' i pacchetti (routing). Con ip_forward settato a ``0`` la nostra macchina continuera' a vedere le varie reti su cui eventualmente si trova (gateway) ma non instradera' i pacchetti da parte di altri host.
+
+Questo parametro determina tutti gli instradamenti che il nostro host puo' fare, quindi e' determinante anche per NAT, firewall, masquerading.
+
+E' possibile settarlo per le singole interfacce, ad esempio per eth0: ``/proc/sys/net/ipv4/conf/eth0/forwarding`` .
+
+Per approfondimenti su cosa si intenda per instradamento: rfc1812.txt sezione 2.3:: 
+
+       In the Internet model, constituent networks are connected together by
+          IP datagram forwarders which are called routers or IP routers.  In
+          this document, every use of the term router is equivalent to IP
+          router.  Many older Internet documents refer to routers as gateways.
+       
+        A router connects to two or more logical interfaces, represented by
+          IP subnets or unnumbered point to point lines (discussed in section
+          [2.2.7]).  Thus, it has at least one physical interface.  Forwarding
+          an IP datagram generally requires the router to choose the address
+          and relevant interface of the next-hop router or (for the final hop)
+          the destination host.  This choice, called relaying or forwarding
+          depends upon a route database within the router.  The route database
+          is also called a routing table or forwarding table.  The term
+          "router" derives from the process of building this route database;
+          routing protocols and configuration interact in a process called
+          routing.
+       
+       Routers provide datagram transport only, and they seek to minimize
+          the state information necessary to sustain this service in the
+          interest of routing flexibility and robustness.
+
+
 
-Bind:
-        - altri esempi commenti su una zona
-        - esempi di una zona PTR?
-        - dns secondari
-        - nsupdate
+ip_default_ttl
+~~~~~~~~~~~~~~~~
+
+*Time to leave* di default usato dal nostro host: in genere ``64``. 
+
+
+ip_local_port_range
+~~~~~~~~~~~~~~~~~~~~~
+
+Il range di porte usato dal nostro host quando si connette come client ad altri host. Puo' essere utile modificarlo per poi intercettare piu' facilmente i pacchetti provenienti da qusto host, oppupure quel qualunqe limitazione vogliamo imporre sul range da usarsi. Si ricorda che solo root puo' aprire porte sotto la ``1024``.
+
+
+FTP Server
+===========
+
+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*.
 
-sintassi: in ``monospace`` :
+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':
+
+- 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
+
+
+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
+------------------------
 
-* nomi di files
-* comandi
-* pacchetti
+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/`` (``/srv/ftp`` in Squeeze)::
+
+       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
+
+
+Shell dell'utente
+----------------------
+
+Come gia' detto piu' volte le passwords degli utenti viaaggiano in rete in chiaro, ponendo un grave problema di sicurezza. Sara' quindi opportuno disbilitare la shell di questi utenti, tramite il flag ``--shell /bin/false`` in fase di creazione degli utenti::
+
+       # adduser --shell /bin/false nome_utente
+
+
+Oppure correggiendo manualmente il file ``/etc/passwd`` per modificare l'inpostazione della shell dell'utente::
+
+       nome_utente:x:1001:1001::/var/spool/postfix:/bin/bash
+       # la riga sopra deve essere trasformata in
+       nome_utente:x:1001:1001::/var/spool/postfix:/bin/false
+
+
+Sui sistemi DEbian REcenti sara' necessario aggiungere ``/bin/false`` all'elenco delle shell valide.
+
+``/etc/shells`` ::
+
+       ...
+       /bin/false
+
+
+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.
+
+
+
+