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
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
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
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