FTP (File Transfer Protocol) è un protocollo TCP per inviare e scaricare file tra computer. Opera con un modello client/server in cui la parte server è chiamata demone FTP e resta in ascolto di eventuali richieste FTP da parte di clienti remoti. Alla ricezione di una richiesta, gestisce l'autenticazione e attiva la connessione. Per la durata della sessione esegue i comandi inviati dal client FTP.
L'accesso a un server FTP può essere gestito in due modi:
Anonimo
Con autenticazione
Nella modalità "Anonymous", i client remoti possono accedere al server FTP usando l'account predefinito "anonymous" o "ftp" usando come password un indirizzo email. Nella modalità "Authenticated", un utente deve avere un account e una password. L'accesso alle directory e ai file nel server FTP dipende dai permessi definiti per l'account usato per l'accesso. Come regola generale, il demone FTP nasconde la directory root del server FTP e la modifica con la directory home di FTP, nascondendo così il resto del file system dalle sessioni remote.
vsftpd è un demone FTP, facile da installare e configurare. Per installare vsftpd, eseguire il seguente comando:
sudo apt-get install vsftpd
By default vsftpd is not configured to only allow anonymous download.
If you wish to enable anonymous download edit /etc/vsftpd.conf
changing:
anonymous_enable=Yes
During installation a ftp user is created with a home directory
of /srv/ftp
. This is the default FTP directory.
If you wish to change this location, to /srv/files/ftp
for example, simply create a directory in another location and
change the ftp user's home directory:
sudo mkdir /srv/files/ftp sudo usermod -d /srv/files/ftp ftp
Applicate le modifiche, riavviare vsftpd:
sudo restart vsftpd
Finally, copy any files and directories you would like to make available
through anonymous FTP to /srv/files/ftp
, or /srv/ftp
if you wish to
use the default.
By default vsftpd is configured to authenticate
system users and allow them to download files. If you want users to be able to upload files, edit
/etc/vsftpd.conf
:
write_enable=YES
Riavviare vsftpd:
sudo restart vsftpd
Ora, quando gli utenti accedono via FTP, il loro punto di partenza sarà la propria directory home, dove potranno scaricare e caricare file e creare directory.
Gli utenti anonimi, come impostazione predefinita, non possono caricare alcun file su un server FTP. Per modificare questo comportamento, togliere il commento alla seguente riga e riavviare vsftpd:
anon_upload_enable=YES
![]() |
|
Abilitare il caricamento anonimo di file via FTP può compromettere la sicurezza del sistema. È sconsigliato abilitare il caricamento anonimo su server collegati direttamente a Internet. |
Il file di configurazione è composto da diversi parametri di configurazione, le cui informazioni sono disponibili nel file stesso. In alternativa, è possibile fare riferimento alla pagina man (man 5 vsftpd.conf).
All'interno del file di configurazione /etc/vsftpd.conf
di vsftpd, sono presenti molte opzioni per rendere il programma più sicuro. Per esempio, togliendo il commento a quanto segue, gli utenti possono essere limitati all'utilizzo solo della propria directory personale:
chroot_local_user=YES
È anche possibile limitare un particolare gruppo di utenti all'utilizzo delle sole directory personali:
chroot_list_enable=YES chroot_list_file=/etc/vsftpd.chroot_list
Tolto il commento alle opzioni precedenti, creare un file /etc/vsftpd.chroot_list
con l'elenco degli utenti, uno per riga, quindi riavviare vsftpd:
sudo restart vsftpd
Inoltre, il file /etc/ftpusers
contiene un elenco di utenti a cui è negato l'accesso FTP. L'elenco comprende gli utenti root, daemon, nobody, ecc... Per disabilitare l'accesso FTP ad altri utenti, aggiungerli semplicemente a questo elenco.
Il protocollo FTP può essere cifrato utilizzando FTPS. A differenza di SFTP, che è una sessione FTP all'interno di una connessione cifrata con SSH, FTPS è FTP su SSL (Secure Socket Layer). La principale differenza consiste nel fatto che gli utenti SFTP devono avere un account shell sul sistema al posto di una shell nologin. Fornire però una shell a tutti gli utenti potrebbe non essere sempre applicabile, come nei casi si servizio di host web.
Per configurare FTPS, modificare il file /etc/vsftpd.conf
aggiungendo:
ssl_enable=Yes
Inoltre, notare anche le opzioni relative al certificato e alla chiave:
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
Queste opzioni, come impostazioni predefinita, hanno impostati la chiave e il certificato forniti dal pacchetto ssl-cert. In un ambiente di produzione questi dovrebbero essere sostituiti con un certificato e una chiave generati per lo specifico host. Per maggiori informazioni sui certificati, consultare la sezione chiamata «Certificati».
Riavviare vsftpd e gli utenti non-anonimi utilizzeranno FTPS:
sudo restart vsftpd
Per consentire accesso FTP agli utenti dotati di una shell /usr/sbin/nologin
, ma non dispongono di accesso shell, modificare il file /etc/shells
aggiungendo nologin:
# /etc/shells: valid login shells /bin/csh /bin/sh /usr/bin/es /usr/bin/ksh /bin/ksh /usr/bin/rc /usr/bin/tcsh /bin/tcsh /usr/bin/esh /bin/dash /bin/bash /bin/rbash /usr/bin/screen /usr/sbin/nologin
Questo è necessario poiché, in modo predefinito, vsftpd utilizza PAM per l'autenticazione e i file di configurazione /etc/pam.d/vsftpd
contiene:
auth required pam_shells.so
Il modulo shells di PAM limita l'accesso alle shell indicate nel file /etc/shells
.
La maggior parte dei client FTP può essere configurata per utilizzare connessioni FTPS. Il client a riga di comando lftp è in grado di utilizzare FTPS.
Per maggiori informazioni, consultare il sito web di vsftpd.
Per maggiori informazioni sulle opzioni disponibili in /etc/vsftpd.conf
, consultare la pagina di manuale di vsftpd.conf.
L'articolo FTPS vs. SFTP: What to Choose di CodeGuru ha molte informazioni riguardo FTPS e SFTP.
Ulteriori informazioni possono essere trovate anche nella documentazione online.