[NO SUPPORTO][HOWTO] VSFTPD Instal. & Conf.

Installazione, configurazione e uso di Ubuntu come server: web, ftp, mail, news, proxy, dns e altro.
Avatar utente
thece
Tenace Tecnocrate
Tenace Tecnocrate
Messaggi: 12919
Iscrizione: lunedì 23 aprile 2007, 14:16
Distribuzione: Debian 12 (Bookworm) - KDE

[NO SUPPORTO][HOWTO] VSFTPD Instal. & Conf.

Messaggio da thece »

Condivido i miei appunti per l'installazione del servizio VSFTPD. Spero possa essere di aiuto


Non fornisco supporto su questa discussione.
Questa discussione ha il solo scopo di suggerire all'utente "inesperto" una strada molto veloce per l'installazione e configurazione del servizio VSFTPD: questo è solo un modo! Vengono fatte assunzioni forti, viene calcata la mano all'utente "inesperto". Altre scelte potrebbero essere fatte sulla base delle proprie necessità.
Per qualsiasi correzione, osservazione, suggerimento o altro inerente questa discussione, cortesemente, mandatemi un messaggio in privato.



Happy Linux :ciao:


Di seguito verrà trattata la configurazione del servizio VSFTPD per l'utilizzo con utente ANONYMOUS e con gli UTENTI DI SISTEMA.


Sul PC SERVER installiamo il pacchetto vsftpd

Codice: Seleziona tutto

sudo apt install vsftpd
Verrà creato automaticamente l'utente di sistema ftp, usato anche per gestire le sessioni FTP anonime tramite l'utente FTP anonymous, con home in /srv/ftp. Controlliamo con

Codice: Seleziona tutto

cat /etc/passwd | grep ftp
ls -ld /srv/ftp
Spostiamo la home directory dell'utente ftp da /srv/ftp a /var/ftp/anonymous

Codice: Seleziona tutto

sudo mkdir -p /var/ftp/anonymous

Codice: Seleziona tutto

sudo chown ftp:ftp /var/ftp/anonymous

Codice: Seleziona tutto

sudo usermod --home=/var/ftp/anonymous ftp
Controlliamo con

Codice: Seleziona tutto

cat /etc/passwd | grep ftp
ls -ld /var/ftp/anonymous
Cancelliamo la directory /srv/ftp , in quanto non serve più

Codice: Seleziona tutto

sudo rmdir /srv/ftp
Disabilitiamo la shell dell'utente ftp. In questo modo l'utente ftp non potrà più fare login sul sistema

Codice: Seleziona tutto

sudo usermod --shell=/usr/sbin/nologin ftp
Controlliamo con

Codice: Seleziona tutto

cat /etc/passwd | grep ftp

Per abilitare l'accesso FTP degli utenti ftp (anonymous) e ftpuser (vedi dopo), entrambi con shell disabilitata, dobbiamo aggiungere nel file /etc/shells la linea:

Codice: Seleziona tutto

/usr/sbin/nologin

Creiamo le cartelle per il download e upload anonimo, rispettivamente di sola lettura e di lettura / scrittura:

Codice: Seleziona tutto

sudo mkdir -p /var/ftp/anonymous/downloads

Codice: Seleziona tutto

sudo chmod 555 /var/ftp/anonymous/downloads
(nella directory downloads, essendo "logicamente" di sola lettura, i permessi delle sottodirectory andrebbero portati a 555, quelli dei file a 444)

Codice: Seleziona tutto

sudo mkdir -p /var/ftp/anonymous/uploads

Codice: Seleziona tutto

sudo chmod 755 /var/ftp/anonymous/uploads

Codice: Seleziona tutto

sudo chmod 555 /var/ftp/anonymous
NOTA: per questioni di sicurezza di default VSFTPD non permette che le Home FTP degli utenti siano accessibili in lettura e scrittura (direttiva allow_writeable_chroot=NO)

Codice: Seleziona tutto

sudo chown -R ftp:ftp /var/ftp/anonymous

Creiamo l'utente di sistema ftpuser (con shell disabilitata) da usare per le sessioni FTP autenticate

Codice: Seleziona tutto

sudo adduser --home=/var/ftp/ftpuser --shell=/usr/sbin/nologin ftpuser
Controlliamo con

Codice: Seleziona tutto

cat /etc/passwd | grep ftp
ls -ld /var/ftp/ftpuser
Creiamo le cartelle per il download e upload, rispettivamente di sola lettura e di lettura / scrittura:

Codice: Seleziona tutto

sudo mkdir -p /var/ftp/ftpuser/downloads

Codice: Seleziona tutto

sudo chmod 555 /var/ftp/ftpuser/downloads
(nella directory downloads, essendo "logicamente" di sola lettura, i permessi delle sottodirectory andrebbero portati a 555, quelli dei file a 444)

Codice: Seleziona tutto

sudo mkdir -p /var/ftp/ftpuser/uploads

Codice: Seleziona tutto

sudo chmod 755 /var/ftp/ftpuser/uploads

Codice: Seleziona tutto

sudo chmod 555 /var/ftp/ftpuser
NOTA: per questioni di sicurezza di default VSFTPD non permette che le Home FTP degli utenti siano accessibili in lettura e scrittura (direttiva allow_writeable_chroot=NO)

Codice: Seleziona tutto

sudo chown -R ftpuser:ftpuser /var/ftp/ftpuser

Personalizziamo i file di configurazione /etc/vsftpd.conf e /etc/vsftpd.userlist

/etc/vsftpd.conf

Codice: Seleziona tutto

# Generale
listen=YES
# listen_port=2121
ftpd_banner=Welcome to PINCOPALLINO FTP Server
max_clients=10
download_enable=YES
write_enable=YES
file_open_mode=0666
use_localtime=YES

# FTP Passivo
pasv_enable=YES
pasv_min_port=65000
pasv_max_port=65535
connect_from_port_20=NO

# FTP Attivo
# pasv_enable=NO
# connect_from_port_20=YES

# Logging
syslog_enable=NO
vsftpd_log_file=/var/log/vsftpd.log
dual_log_enable=NO
xferlog_enable=YES
# Logging completo
# xferlog_std_format=NO
# log_ftp_protocol=YES

# FTP Anonimo
chown_uploads=YES
chown_username=ftp
anonymous_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
anon_root=/var/ftp/anonymous
anon_umask=0022
anon_max_rate=0

# Utenti Locali
local_enable=YES
chroot_local_user=YES
# Se abilitato in fase di compilazione dell'applicazione,
# è possibile per far accedere in lettura/scrittura gli utenti locali alle rispettive Home FTP sbloccando l'opzione indicata di seguito
# allow_writeable_chroot=YES
local_umask=0022
local_max_rate=0

# Per abilitare solo gli utenti specificati
# userlist_enable deve avere lo stesso valore di local_enable
userlist_enable=YES
userlist_file=/etc/vsftpd.userlist
userlist_deny=NO

# Personalizzazioni di Debian
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
/etc/vsftpd.userlist

Codice: Seleziona tutto

# Utente anonimo
anonymous

# Utente autenticato
ftpuser

Riavviamo il servizio VSFTPD

Codice: Seleziona tutto

sudo systemctl restart vsftpd.service
Per verificare che il servizio VSFTPD sia effettivamente in ascolto usare i comandi

Codice: Seleziona tutto

systemctl status vsftpd.service

Codice: Seleziona tutto

sudo ss -tlnp | grep ftp
Ultima modifica di thece il mercoledì 20 gennaio 2021, 10:17, modificato 3 volte in totale.
Avatar utente
thece
Tenace Tecnocrate
Tenace Tecnocrate
Messaggi: 12919
Iscrizione: lunedì 23 aprile 2007, 14:16
Distribuzione: Debian 12 (Bookworm) - KDE

Re: [NO SUPPORTO][HOWTO] VSFTPD Instal. & Conf.

Messaggio da thece »

Abilitare FTP over SSL / TSL

Sul PC SERVER creiamo il certificato SSL eseguendo il comando il comando

Codice: Seleziona tutto

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem
accettiamo pure le opzioni di default premendo ripetutamente il tasto [Invio]


Modifichiamo il file /etc/vsftpd.conf aggiungendo la sezione

Codice: Seleziona tutto

...
# Per abilitare solo gli utenti specificati
...

# FTP over SSL/TSL
rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem
ssl_enable=YES
allow_anon_ssl=YES
force_local_data_ssl=YES
force_local_logins_ssl=YES

# Personalizzazioni di Debian
...

Riavviamo il servizio VSFTPD

Codice: Seleziona tutto

sudo systemctl restart vsftpd.service
Ultima modifica di thece il martedì 19 gennaio 2021, 19:21, modificato 2 volte in totale.
Avatar utente
thece
Tenace Tecnocrate
Tenace Tecnocrate
Messaggi: 12919
Iscrizione: lunedì 23 aprile 2007, 14:16
Distribuzione: Debian 12 (Bookworm) - KDE

Re: [NO SUPPORTO][HOWTO] VSFTPD Instal. & Conf.

Messaggio da thece »

Di seguito verrà trattata la configurazione del servizio VSFTPD per l'utilizzo con utente ANONYMOUS e con gli UTENTI VIRTUALI.


Sul PC SERVER installiamo i pacchetti

Codice: Seleziona tutto

sudo apt install vsftpd libpam-pwdfile db-util
Verrà creato automaticamente l'utente di sistema ftp, usato anche per gestire le sessioni FTP anonime tramite l'utente FTP anonymous, con home in /srv/ftp. Controlliamo con

Codice: Seleziona tutto

cat /etc/passwd | grep ftp
ls -ld /srv/ftp
Spostiamo la home directory dell'utente ftp da /srv/ftp a /var/ftp/anonymous

Codice: Seleziona tutto

sudo mkdir -p /var/ftp/anonymous

Codice: Seleziona tutto

sudo chown ftp:ftp /var/ftp/anonymous

Codice: Seleziona tutto

sudo usermod --home=/var/ftp/anonymous ftp
Controlliamo con

Codice: Seleziona tutto

cat /etc/passwd | grep ftp
ls -ld /var/ftp/anonymous
Cancelliamo la directory /srv/ftp , in quanto non serve più

Codice: Seleziona tutto

sudo rmdir /srv/ftp
Disabilitiamo la shell dell'utente ftp. In questo modo l'utente ftp non potrà più fare login sul sistema

Codice: Seleziona tutto

sudo usermod --shell=/usr/sbin/nologin ftp
Controlliamo con

Codice: Seleziona tutto

cat /etc/passwd | grep ftp

Per abilitare l'accesso FTP dell'utente FTP anonymous con shell disabilitata dobbiamo aggiungere nel file /etc/shells la linea:

Codice: Seleziona tutto

/usr/sbin/nologin

Creiamo le cartelle per il download e upload anonimo, rispettivamente di sola lettura e di lettura / scrittura:

Codice: Seleziona tutto

sudo mkdir -p /var/ftp/anonymous/downloads

Codice: Seleziona tutto

sudo chmod 555 /var/ftp/anonymous/downloads
(nella directory downloads, essendo "logicamente" di sola lettura, i permessi delle sottodirectory andrebbero portati a 555, quelli dei file a 444)

Codice: Seleziona tutto

sudo mkdir -p /var/ftp/anonymous/uploads

Codice: Seleziona tutto

sudo chmod 755 /var/ftp/anonymous/uploads

Codice: Seleziona tutto

sudo chmod 555 /var/ftp/anonymous
NOTA: per questioni di sicurezza di default VSFTPD non permette che le Home FTP degli utenti siano accessibili in lettura e scrittura (direttiva allow_writeable_chroot=NO)

Codice: Seleziona tutto

sudo chown -R ftp:ftp /var/ftp/anonymous

Creiamo il file di testo che ci farà da sorgente per il database degli utenti virtuali e delle relative password

Codice: Seleziona tutto

sudo mkdir -p /etc/vsftpd

Codice: Seleziona tutto

sudo touch /etc/vsftpd/vsftpd_virtual_users.txt

Codice: Seleziona tutto

sudo chmod 600 /etc/vsftpd/vsftpd_virtual_users.txt
Il file /etc/vsftpd/vsftpd_virtual_users.txt deve avere il seguente formato:

Codice: Seleziona tutto

FTP_VIRTUAL_USER_01
PASSWORD_01
FTP_VIRTUAL_USER_02
PASSWORD_02
...
FTP_VIRTUAL_USER_NN
PASSWORD_NN
Creiamo il database degli utenti virtuali e delle relative password

Codice: Seleziona tutto

sudo db_load -T -t hash -f /etc/vsftpd/vsftpd_virtual_users.txt /etc/vsftpd/vsftpd_virtual_users.db
NOTA: a rigore il file /etc/vsftpd/vsftpd_virtual_users.txt dovrebbe essere cancellato

Codice: Seleziona tutto

sudo rm /etc/vsftpd/vsftpd_virtual_users.txt
Consultare la pagina man del comando db_load per la gestione degli utenti virtuali e delle relative password


Per ogni utente virtuale FTP_VIRTUAL_USER_XX definito più sopra creiamo le directory Home FTP, di download e di upload, rispettivamente "logicamente" di sola lettura e di lettura / scrittura.
A scopo di esempio creiamo un solo utente virtuale ftpvirtualuser, quindi

Il file /etc/vsftpd/vsftpd_virtual_users.txt sarà compilato così:

Codice: Seleziona tutto

ftpvirtualuser
ftpvirtualpassword

Codice: Seleziona tutto

sudo mkdir -p /var/ftp/ftpvirtualuser

Codice: Seleziona tutto

sudo mkdir -p /var/ftp/ftpvirtualuser/downloads

Codice: Seleziona tutto

sudo chmod 555 /var/ftp/ftpvirtualuser/downloads
(nella directory downloads, essendo "logicamente" di sola lettura, i permessi delle sottodirectory andrebbero portati a 555, quelli dei file a 444)

Codice: Seleziona tutto

sudo mkdir -p /var/ftp/ftpvirtualuser/uploads

Codice: Seleziona tutto

sudo chmod 755 /var/ftp/ftpvirtualuser/uploads

Codice: Seleziona tutto

sudo chmod 555 /var/ftp/ftpvirtualuser
NOTA: per questioni di sicurezza di default VSFTPD non permette che le Home FTP degli utenti siano accessibili in lettura e scrittura (direttiva allow_writeable_chroot=NO)

Codice: Seleziona tutto

sudo chown -R ftp:ftp /var/ftp/ftpvirtualuser

Creiamo il file di autenticazione per PAM

Codice: Seleziona tutto

touch /etc/pam.d/vsftpd.virtual
Inseriamo nel file di autenticazione per PAM le righe

Codice: Seleziona tutto

# %PAM-1.0
auth       required     pam_userdb.so db=/etc/vsftpd/vsftpd_virtual_users
account    required     pam_userdb.so db=/etc/vsftpd/vsftpd_virtual_users
session    required     pam_loginuid.so

Personalizziamo i file di configurazione /etc/vsftpd.conf e /etc/vsftpd.userlist

/etc/vsftpd.conf

Codice: Seleziona tutto

# Generale
listen=YES
# listen_port=2121
ftpd_banner=Welcome to PINCOPALLINO FTP Server
max_clients=10
download_enable=YES
write_enable=YES
file_open_mode=0666
use_localtime=YES

# FTP Passivo
pasv_enable=YES
pasv_min_port=65000
pasv_max_port=65535
connect_from_port_20=NO

# FTP Attivo
# pasv_enable=NO
# connect_from_port_20=YES

# Logging
syslog_enable=NO
vsftpd_log_file=/var/log/vsftpd.log
dual_log_enable=NO
xferlog_enable=YES
# Logging completo
# xferlog_std_format=NO
# log_ftp_protocol=YES

# FTP Anonimo
chown_uploads=YES
chown_username=ftp
anonymous_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
anon_root=/var/ftp/anonymous
anon_umask=0022
anon_max_rate=0

# Utenti Locali
local_enable=NO
chroot_local_user=YES
# Se abilitato in fase di compilazione dell'applicazione,
# è possibile per far accedere in lettura/scrittura gli utenti locali alle rispettive Home FTP sbloccando l'opzione indicata di seguito
# allow_writeable_chroot=YES
local_umask=0022
local_max_rate=0

# Utenti Virtuali
guest_enable=YES
guest_username=ftp
virtual_use_local_privs=YES
user_sub_token=$USER
local_root=/var/ftp/$USER
hide_ids=YES

# Per abilitare solo gli utenti specificati
# userlist_enable deve avere lo stesso valore di local_enable
userlist_enable=YES
userlist_file=/etc/vsftpd.userlist
userlist_deny=NO

# Personalizzazioni di Debian
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd.virtual
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
NOTA: il cambio di modulo per l'autenticazione PAM (direttiva pam_service_name) di fatto disabilita l'autenticazione via FTP degli utenti di sistema.

/etc/vsftpd.userlist

Codice: Seleziona tutto

# Utente anonimo
anonymous

# Utente virtuale autenticato
ftpvirtualuser

Riavviamo il servizio VSFTPD

Codice: Seleziona tutto

sudo systemctl restart vsftpd.service
Per verificare che il servizio VSFTPD sia effettivamente in ascolto usare i comandi

Codice: Seleziona tutto

systemctl status vsftpd.service

Codice: Seleziona tutto

sudo ss -tlnp | grep ftp
Scrivi risposta

Ritorna a “Ubuntu su server”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 7 ospiti