Very Secure FTP Daemon (Italiano)
vsftpd (Very Secure FTP Daemon) è un server FTP leggero, stabile e sicuro per sistemi UNIX-like.
Installazione
Template:Codeline è incluso nel repository ufficiale. Basta installarlo con pacman:
# pacman -S vsftpd
Il server può essere avviato utilizzando lo script qui sotto:
# /etc/rc.d/vsftpd start
È inoltre possibile aggiungere vsftpd nella stringa demoni in Template:Filename se lo si vuole avviato automaticamente al boot.
Per usare Template:Codeline con Template:Codeline, vedere la sezione sottostante per le procedure adatte.
Configurazione
La maggior parte delle impostazioni in Template:Codeline sono fatte modificando il file Template:Filename. 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 Template:Codeline (5).
Abilitare l'upload
Il flag Template:Codeline deve essere impostato su YES in Template:Filename 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 Template:Filename per consentire agli utenti membri in Template:Filename di accedere al sistema:
local_enable=YES
Accesso anonimi
La seguente riga in Template:Filename 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
Si può impostare un ambiente chroot che impedisce all'utente di lasciare la sua home directory. A tal fine, aggiungere le seguenti righe a Template:Filename:
chroot_list_enable=YES chroot_list_file=/etc/vsftpd.chroot_list
La variabile Template:Codeline 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 Template:Codeline 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 Template:Filename:
userlist_enable=YES userlist_file=/etc/vsftpd.user_list
Template:Codeline 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 Template:Codeline 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 Template:Filename:
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 Template:Codeline con Template:Codeline, aggiungere le seguenti righe a Template:Filename:
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 Template:Filename:
pam_service_name=ftp
Infine, aggiungere Template:Codeline alla stringa demoni in Template:Filename. Non è necessario aggiungere Template:Codeline, poichè verrà chiamato da Template:Codeline 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 Template:Filename.
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 Template:Filename
#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 Template:Filename; 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 Template:Filename, 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 Template:Filename:
# chmod 600 /etc/vsftpd_login.db
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 Template:Filename 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
Ora è il momento di creare una home per gli utenti virtuali. Nell'esempio Template:Filename è 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 Template:Filename 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 Template:Filename. Queste sono le impostazioni necessarie per ottenere che Template:Codeline limiti l'accesso agli utenti virtuali, attraverso nomi utente e password, e circoscriva il loro accesso alla zona specificata Template:Filename:
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 Template:Codeline, 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 Template:Filename:
local_root=/srv/ftp/$USER user_sub_token=$USER