]> git.piffa.net Git - doc/.git/blobdiff - source/servizi.txt
Merge branch 'master' of chrome:/home/git/doc
[doc/.git] / source / servizi.txt
index 4a0e9ac7061243c27e620684bfce73ce068dc7fc..3d34edd6cb5f43663761d463abdfeafa0f35a1c0 100644 (file)
@@ -7,7 +7,7 @@ Appunti sulla installazione e configurazione dei servizi di rete in ambiete Gnu/
 
   :Author: Andrea Manni
   :Copyright: GFDL
-  :Version: 0.91
+  :Version: 0.93
 
 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.
 
@@ -2289,19 +2289,208 @@ 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 --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':
+
+- 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
+------------------------
+
+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
+----------------------------
 
-Bind:
-        - altri esempi commenti su una zona
-        - esempi di una zona PTR?
-        - dns secondari
-        - nsupdate
 
+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!)::
 
-sintassi: in ``monospace`` :
 
-* nomi di files
-* comandi
-* pacchetti
+       # 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.
+
+
+
+