# Very Secure FTP Daemon (Italiano)

From ArchWiki
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

The translation of this article or section does not reflect the original text.

Reason: Last updated in 2013 (287662), out of sync with English page (Discuss in Talk:Very Secure FTP Daemon (Italiano)#)

vsftpd (Very Secure FTP Daemon) è un server FTP leggero, stabile e sicuro per sistemi UNIX-like.

## Installazione

`vsftpd` è incluso nel repository ufficiale. Basta installarlo con pacman:

    # pacman -S vsftpd

Il server può essere avviato utilizzando il seguente comando:

    # systemctl start vsftpd.service

Inoltre se si vuole che venga avviato automaticamente al boot è necessario abilitarlo in questo modo:

    # systemctl enable vsftpd.service

Per usare `vsftpd` con `xinetd`, vedere la sezione sottostante per le procedure adatte.

## Configurazione

La maggior parte delle impostazioni in `vsftpd` sono fatte modificando il file `/etc/vsftpd.conf`. Il file è di per se stesso ben documentato, per cui questa sezione mette in luce solo alcuni importanti cambiamenti che si potrebbe voler effettuare. Per tutte le opzioni disponibili e la documentazione, sfogliare vsftpd.conf(5) (5).

### Abilitare l'upload

Il flag `WRITE_ENABLE` deve essere impostato su YES in `/etc/vsftpd.conf` con il fine di consentire le modifiche al filesystem, come ad esempio il caricamento:

    write_enable=YES

### Accesso utenti locali

Bisogna impostare la seguente riga in `/etc/vsftpd.conf` per consentire agli utenti membri in `/etc/passwd` di accedere al sistema:

    local_enable=YES

### Accesso anonimi

La seguente riga in `/etc/vsftpd.conf` controlla se gli utenti anonimi possono effettuare il login:

    anonymous_enable=YES # Consentire l'accesso anonimo
    no_anon_password=YES # Nessuna password è richiesta per un login anonimo
    anon_max_rate=30000  # Velocità massima di trasferimento per un client anonimo in byte al secondo

### Limitare navigabilità con chroot

Si può impostare un ambiente chroot che impedisce all'utente di lasciare la sua home directory. A tal fine, aggiungere le seguenti righe a `/etc/vsftpd.conf`:

    chroot_list_enable=YES
    chroot_list_file=/etc/vsftpd.chroot_list

La variabile `chroot_list_file` specifica il file che contiene le direttive per gli utenti da circoscrivere.

Per una direttiva ancora più restrittiva, si può specificare la riga:

    chroot_local_user=YES

In questo modo gli utenti locali rimarranno limitati in via predefinita, e il file specificato da `chroot_list_file` elenca gli utenti che non rientrano nell'area limitativa chroot.

### Limitare il login degli utenti

È possibile impedire agli utenti di accedere al server FTP con l'aggiunta di due righe `/etc/vsftpd.conf`:

    userlist_enable=YES
    userlist_file=/etc/vsftpd.user_list

`userlist_file` specifica ora il file che elenca gli utenti che non sono autorizzati ad effettuare il login. Se si desidera consentire l'accesso solo ad alcuni utenti, aggiungere la riga:

    userlist_deny=NO

Il file specificato da `userlist_file` contiene ora gli utenti che sono autorizzati ad effettuare il login.

### Limitare le connessioni

Si può limitare la velocità di trasferimento dati, il numero di client e connessioni per IP di utenti locali, aggiungendo le informazioni in `/etc/vsftpd.conf`:

    local_max_rate=1000000 # Massima velocità di trasferimento dati in byte al secondo
    max_clients=50         # Numero massimo di client che possono essere collegati
    max_per_ip=2           # Numero massimo di connessioni per IP

### Utilizzo di xinetd

Se si vuole usare `vsftpd` con `xinetd`, aggiungere le seguenti righe a `/etc/xinetd.d/vsftpd`:

    service ftp
    {
            socket_type             = stream
            wait                    = no
            user                    = root
            server                  = /usr/sbin/vsftpd
            log_on_success  += HOST DURATION
            log_on_failure  += HOST
            disable                 = no
    }

L'opzione sottostante deve essere impostata in `/etc/vsftpd.conf`:

    pam_service_name=ftp

Infine, aggiungere `xinetd` alla stringa demoni in `/etc/rc.conf`. Non è necessario aggiungere `vsftpd`, poichè verrà chiamato da `xinetd` quando necessario.

In caso di errori del genere durante la connessione al server:

    500 OOPS: cap_set_proc

Sarà necessario aggiungere il modulo capability nella stringa MODULES in `/etc/rc.conf`.

Durante l'aggiornamento alla versione 2.1.0 si potrebbe ottenere un errore come questo quando ci si connette al server da un client:

    500 OOPS: could not bind listening IPv4 socket

Nelle versioni precedenti era sufficiente lasciare le seguenti righe commentate:

    # Use this to use vsftpd in standalone mode, otherwise it runs through (x)inetd
    # listen=YES

In questa nuova versione, e forse anche nelle prossime, è necessario configurare esplicitamente come non eseguibile in modalità standalone, in questo modo:

    # Use this to use vsftpd in standalone mode, otherwise it runs through (x)inetd
    listen=NO

### Utilizzo di SSL per la sicurezza dell'FTP

Generare un certificato SSL in questo modo:

    # cd /etc/ssl/certs
    # openssl req -x509 -nodes -days 7300 -newkey rsa:2048 -keyout /etc/ssl/certs/vsftpd.pem -out /etc/ssl/certs/vsftpd.pem
    # chmod 600 /etc/ssl/certs/vsftpd.pem

Verranno fatte varie domande sulla propria azienda, ecc, ma dato che il proprio certificato non è noto, non importa cosa si risponde durante la compilazione; lo si utilizzerà solo per la crittografia! Se si prevede di doverlo utilizzare con garanzie di fiducia (trusted), meglio ottenerne uno da compagnie come Thawte, Verisign ecc.

modificare la configurazione in `/etc/vsftpd.conf`

    #this is important
    ssl_enable=YES

    #choose what you like, if you accept anon-connections
    # you may want to enable this
    # allow_anon_ssl=NO

    #choose what you like,
    # it's a matter of performance i guess
    # force_local_data_ssl=NO

    #choose what you like
    force_local_logins_ssl=YES

    #you should at least enable this if you enable ssl...
    ssl_tlsv1=YES
    #choose what you like
    ssl_sslv2=YES
    #choose what you like
    ssl_sslv3=YES
    #give the correct path to your currently generated *.pem file
    rsa_cert_file=/etc/ssl/certs/vsftpd.pem
    #the *.pem file contains both the key and cert
    rsa_private_key_file=/etc/ssl/certs/vsftpd.pem

## Suggerimenti

### PAM con utenti virtuali

L'utilizzo di utenti virtuali ha il vantaggio di non richiedere un vero account per il login sul sistema. Mantenere l'ambiente in un contenitore è naturalmente una scelta più sicura.

Un database virtuale degli utenti deve essere creato facendo prima di tutto un semplice file di testo come questo:

    utente1
    password1
    utente2
    password2

Includere quanti utenti virtuali si preferisca, secondo la struttura nell'esempio. Salvarlo come `logins.txt`; il nome del file non ha alcun significato. Il passo successivo dipende dal sistema database Berkeley, che è incluso nel sistema principale di Arch. Come root creare il database effettivo con l'aiuto del file `logins.txt`, o come è stato chiamato:

    # db_load -T -t hash -f logins.txt /etc/vsftpd_login.db

Si raccomanda di limitare le autorizzazioni per l'ormai creato file `vsftpd_login.db`:

    # chmod 600 /etc/vsftpd_login.db

Attenzione: Fare attenzione sul fatto che conservare password in file di testo normale non è sicuro. Non dimenticare quindi di rimuovere il file temporaneo con `rm logins.txt`.

PAM dovrebbe ora essere impostato per poter utilizzare vsftpd_login.db. Per fare in modo che PAM controlli l'autenticazione utente, creare un file chiamato ftp nella cartella `/etc/pam.d/` con le seguenti informazioni:

    auth required pam_userdb.so db=/etc/vsftpd_login crypt=hash
    account required pam_userdb.so db=/etc/vsftpd_login crypt=hash

Nota: Si usi /etc/vsftpd_login senza l'estensione .db nella configurazione di PAM!

Ora è il momento di creare una home per gli utenti virtuali. Nell'esempio `/srv/ftp` è adibito ad ospitare i dati degli utenti virtuali, concetto che riflette anche la struttura delle directory di default di Arch. Per prima cosa creare l'utente virtuale generale e fare di `/srv/ftp` la sua home:

    # useradd -d /srv/ftp virtual

Rendere virtuale il proprietario:

    # chown virtual:virtual /srv/ftp

configurare vsftpd per utilizzare l'ambiente creato modificando `/etc/vsftpd.conf`. Queste sono le impostazioni necessarie per ottenere che `vsftpd` limiti l'accesso agli utenti virtuali, attraverso nomi utente e password, e circoscriva il loro accesso alla zona specificata `/srv/ftp`:

    anonymous_enable=NO
    local_enable=YES
    chroot_local_user=YES
    guest_enable=YES
    guest_username=virtual
    virtual_use_local_privs=YES

Se viene utilizzato il metodo `xinetd`, avviare il servizio. Ora si dovrebbe essere autorizzati solo al login con nome utente e password in base al database creato.

#### Aggiungere cartelle private per gli utenti virtuali

Innanzitutto creare le directory per gli utenti:

    # mkdir /srv/ftp/user1
    # mkdir /srv/ftp/user2
    # chown virtual:virtual /srv/ftp/user?/

Quindi, aggiungere le seguenti righe a `/etc/vsftpd.conf`:

    local_root=/srv/ftp/$USER
    user_sub_token=$USER

## Ulteriori risorse

- vsftpd official homepage
- vsftpd.conf man page

Category:

- Networking (Italiano)

Hidden category:

- Pages or sections flagged with Template:Bad translation