Come configurare vsftpd per la directory di un utente su un Ubuntu 18.04 VPS o server dedicato

introduzione

Vsftpd corto di Very Secure File Transfer Protocol Daemon è un FTP sicuro (File Transfer Protocol) per sistemi Ubuntu. FTP è il protocollo di rete standard più comunemente usato per il download e il caricamento di file tra due computer in una determinata rete.


Per impostazione predefinita, i dati FTP non sono sicuri perché le informazioni critiche come nomi utente, dati, password, ecc. Vengono normalmente trasmesse non crittografate in testo semplice. Pertanto, è importante assicurarsi che le connessioni FTP siano crittografate utilizzando vsftpd.

In questo tutorial, ti mostreremo come configurare vsftpd con supporto SSL / TLS su Ubuntu 18.04 VPS.

Prerequisiti

Prima di iniziare, assicurati di disporre di quanto segue:

  • Un utente non root con privilegi sudo.
  • Un VPS o un server dedicato in esecuzione su Ubuntu 18.04
  • Un indirizzo IP statico configurato.

Passaggio 1: installazione di vsftpd

Per iniziare, aggiorna i pacchetti e installa il demone vsftpd eseguendo i comandi seguenti:

$ Sudo apt update
$ Sudo apt installa vsftpd

Una volta installato il file, controlla lo stato di vsftpd usando il seguente comando:

$ Sudo service vsftpd status

Ora copiamo il file di configurazione corrente e creiamo un backup originale per esso prima di configurare il firewall:

$ sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.orig

Passaggio 2: configurazione del firewall

Inizia controllando se il firewall è abilitato. Ma prima, assicurati di consentire il traffico SSH, altrimenti il ​​firewall potrebbe bloccare questi test.

Ora controlla lo stato del firewall. stampa y poi accedere se avvisato di modificare la connessione SSH.

$ Sudo stato ufw

Se il firewall funziona correttamente, dovresti ottenere uno stato: messaggio attivo e le regole del firewall verranno aggiunte automaticamente:

Stato: attivo

All’azione da
—                         ——      —-
OpenSSH ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)

Ora vai avanti e apri le porte 20 e 21 per FTP, comprese le porte 40000-50000 per FTP passivo. Inoltre, apri la porta 990 per abilitare TLS che configureremo in seguito:

$ Sudo ufw consente 20 / tcp
$ Sudo ufw consentire 21 / tcp
$ Sudo ufw consente 990 / tcp
$ Sudo ufw allow 40000: 50000 / tcp
$ Sudo stato ufw

Una volta completato il processo, l’output delle regole del firewall dovrebbe essere simile al seguente:

Stato: attivo

All’azione da
—                         ——      —-
OpenSSH ALLOW Anywhere
990 / tcp ALLOW Anywhere
20 / tcp ALLOW Anywhere
21 / tcp ALLOW Anywhere
40000: 50000 / tcp ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
20 / tcp (v6) ALLOW Anywhere (v6)
21 / tcp (v6) ALLOW Anywhere (v6)
990 / tcp (v6) ALLOW Anywhere (v6)
40000: 50000 / tcp (v6) ALLOW Anywhere (v6)

Dopo aver installato vsftpd e dopo aver verificato che le porte richieste siano aperte, possiamo procedere alla creazione di un utente FTP.

Passaggio 3: creazione dell’utente FTP

Creiamo un nuovo utente per FTP. Assicurati di aggiungere un utente di prova. Nel nostro esempio, chiameremo il nostro nuovo utente ftpuser.

$ Sudo adduser ftpuser

Crea una password complessa per questo. Verrà richiesto di inserire alcune informazioni chiave, quindi premere ACCEDERE per ogni caso.

Affinché FTP sia più sicuro per gli utenti, dovrebbe essere indirizzato a una determinata directory. Vsftpd può farlo utilizzando chroot. Abilitare chroot per gli utenti li limita a una home directory specifica. Ma poiché vsftpd garantisce che la home directory sia sicura, non dovrebbe essere scrivibile dall’utente locale.

In questo tutorial, invece di sbarazzarci dei privilegi di scrittura nella home directory, ne creeremo uno nuovo ftp directory al posto di chroot e una corrispondente scrivibile File directory per i file originali.

Per creare un nuovo ftp cartella, eseguire il comando seguente:

$ sudo mkdir / home / ftpuser / ftp

Creare un file di proprietà nella directory ftp in nessuno: nogroup:

$ Sudo chown nobody: nogroup / home / ftpuser / ftp

Elimina le autorizzazioni di scrittura:

$ Sudo chmod a-w / home / ftpuser / ftp

Ora, verifica queste autorizzazioni:

$ Sudo ls -la / home / ftpuser / ftp

Questo ti darà un output come quello qui sotto

totale 8
4 dr-xr-xr-x 2 nobodynogroup 4096 24 agosto 21:29 .
4 drwxr-xr-x 3 ftpuser ftpuser 4096 24 agosto 21:29 ..

Il passaggio successivo consiste nel creare una nuova directory per archiviare i caricamenti e assicurarsi che siano assegnati all’utente locale:

$ sudo mkdir / home / ftpuser / ftp / files
$ sudo chown ftpuser: ftpuser / home / ftpuser / ftp / files

Ora, esegui il comando seguente per verificare l’autorizzazione nella directory ftp:

$ Sudo ls -la / home / ftpuser / ftp

Questo ti darà il seguente output:

totale 12
dr-xr-xr-x 3 nobodynogroup 4096 26 agosto 14:01 .
drwxr-xr-x 3 ftpuser ftpuser 4096 26 agosto 13:59 ..
drwxr-xr-x 2 ftpuser ftpuser 4096 ago 26 14:01 file

Ora aggiungi un altro file test.txt a scopo di prova:

$ echo"file di test vsftpd" | sudo tee /home/ftpuser/ftp/files/test.txt

Una volta che il ftp la directory è sicura e il file File la directory è accessibile dall’utente, andare avanti e configurare FTP.

Passaggio 4: configurazione dell’accesso FTP -vsftpd

Sono già state configurate le principali impostazioni per consentire a un singolo utente di connettersi con FTP vsftpd.conf. Creare un file di backup prima di modificare il file di configurazione.

$ sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bak

Ora, apri il file di configurazione per confermare che le impostazioni di configurazione che hai corrispondono a quanto segue:

$ Sudo nano /etc/vsftpd.conf

Dovresti vedere l’output di seguito:

. . .
# Consenti FTP anonimo? (Disabilitato per impostazione predefinita).
anonymous_enable = NO
#
# Rimuovi il commento per consentire agli utenti locali di accedere.
local_enable = SI
. . .

Ora, è necessario consentire agli utenti FTP di caricare file sul server decommentando l’impostazione etichettata write_enable nella directory /etc/vsftpd.conf.

. . .
write_enable = SI
. . .

Ora vai avanti e modifica il chroot per assicurarti che gli utenti FTP non abbiano accesso a nessun file oltre a quelli nella directory /etc/vsftpd.conf:

. . .
chroot_local_user = SI
. . .

Aggiungere un user_sub_token riga per includere un nome utente in local_root directory per garantire che il processo di configurazione funzioni per l’utente locale e tutti gli altri utenti in futuro. Aggiungi le seguenti impostazioni nel file /etc/vsftpd.conf:

. . .
user_sub_token = $ USER
local_root = / home / $ USER / ftp

Inoltre, aggiungiamo l’intervallo limite di porte per FTP passivo per garantire che siano disponibili connessioni sufficienti:

. . .
pasv_min_port = 40000
pasv_max_port = 50000

Si noti che abbiamo aperto queste porte nel passaggio 2 per configurare l’intervallo di porte per FTP passivo. In caso di modifiche apportate a questi valori, assicurarsi di aggiornare le impostazioni del firewall.

Per assicurarsi che gli utenti possano accedere all’FTP solo quando si trovano nell’elenco e non per impostazione predefinita, impostiamo la seguente configurazione nella directory /etc/vsftpd.conf:

. . .
userlist_enable = SI
userlist_file = / etc / vsftpd.userlist
userlist_deny = NO

Dalla configurazione sopra, se userlist_deny è impostato su SÌ, significa che gli utenti aggiunti all’elenco non otterranno l’accesso FTP. Se è impostato su NO, gli unici utenti a cui è consentito l’accesso sono quelli nell’elenco.

Dopo aver apportato queste modifiche, salvare il file ed uscire.

Ora aggiungi l’utente a /etc/vsftpd.userlist. Assicurati di usare il flag -a allegato al file:

$ echo"ftpuser" | sudo tee -a /etc/vsftpd.userlist

Verificare che il file sia stato aggiunto:

$ Cat /etc/vsftpd.userlist

Ciò fornirà l’output di seguito:

ftpuser

Infine, riavvia il demone vsftpd per applicare queste modifiche:

$ Sudo systemctl restart vsftpd

Dopo aver impostato la configurazione, ora prova l’accesso FTP.

Passaggio 5: test dell’accesso FTP

Ora che hai configurato correttamente il tuo server per consentire a ftpuser di connettersi tramite FTP, dobbiamo assicurarci che questo processo funzioni correttamente.

Inizia provando se l’anonimo può ottenere l’accesso al sistema. Se la configurazione funziona come previsto, i non utenti non dovrebbero accedere al sistema.

$ Ftp -p (indirizzo IP)

L’output dovrebbe essere simile al seguente:

Collegato all’indirizzo IP.
220 (vsFTPd 3.0.3)
Nome (indirizzo IP: impostazione predefinita): anonimo
530 Autorizzazione negata.
ftp: accesso non riuscito.
Ftp

Ora chiudi le connessioni:

ftp>addio

Quindi, prova a connetterti come utente sudo. Ad altri utenti diversi da ftpuser dovrebbe essere negata l’autorizzazione prima ancora di inserire la propria password.

$ Ftp -p indirizzo IP

L’output dovrebbe essere simile al seguente:

Collegato all’indirizzo IP.
220 (vsFTPd 3.0.3)
Nome (indirizzo IP: impostazione predefinita): sudo_user
530 Autorizzazione negata.
ftp: accesso non riuscito.
ftp>

Ora chiudi la connessione:

ftp>addio

Successivamente, l’utente ftp dovrebbe connettersi, leggere e persino scrivere file. Dobbiamo assicurarci che il nostro utente trovi facile connettersi:

$ Ftp -p indirizzo IP

L’output dovrebbe essere simile al seguente:

Collegato all’indirizzo IP.
220 (vsFTPd 3.0.3)
Nome (indirizzo IP: impostazione predefinita): ftpuser
331Si prega di specificare la password.
Password: password_utente_utente
230Login successo.
Il tipo di sistema remoto è UNIX.
Utilizzando la modalità binaria per trasferire i file.
ftp>

Ora, passa a File directory e trasferire i file creati in precedenza sul computer utilizzando il ottenere comando:

ftp>file del CD
ftp> get test.txt

L’output dovrebbe essere simile al seguente:

227EnteringPassiveMode (indirizzo IP).
150 Connessione dati in modalità OPENBINARY per test.txt (16 byte).
226Transfer completa.
16 byte ricevuti in 0,001 secondi (1588 byte / s)
ftp>

Ora testiamo le autorizzazioni di scrittura caricando il nostro file nella directory con un nuovo nome:

ftp> puttest.txtupload.txt

L’output dovrebbe essere simile al seguente:

227EnteringPassiveMode (indirizzo IP).
150Ok per inviare dati.
226Transfer completa.
16 byte inviati in 0,000894 secondi (17897 byte / s)

Ora chiudi le connessioni:

ftp>addio

Dopo aver verificato la configurazione, proteggiamo il server.

Passaggio 6: protezione delle transazioni

FTP non crittografa i dati, comprese le credenziali dell’utente. Quindi, attiveremo TLS / SSL per ottenere una crittografia. Inizia creando un certificato SSL per vsftpd.

Per fare ciò, useremo OpenSSL per il certificato e includeremo la riga -days per acquisire una validità di un anno. Includeremo anche una chiave privata su questo comando per avere il certificato e la chiave in un unico file:

$ sudo openssl req -x509 -nodes -days 365 -newkey rsa: 2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem

Ti verrà chiesto di fornire maggiori dettagli per il certificato. Usa le tue informazioni sulle aree evidenziate nel display qui sotto:

Generazione di una chiave privata RSA a 2048 bit
………………………………………………………………….+++
………..+++
scrivendo la chiave newprivate in ‘/etc/ssl/private/vsftpd.pem’
—–
Stai per essere invitato a inserire le informazioni che verranno incorporate
nella tua richiesta di certificato.
Quello che stai per inserire è quello che viene chiamato un nome distinto o un DN.
Ci sono alcuni campi ma puoi lasciarne alcuni vuoti
Per alcuni campi ci sarà un valore predefinito,
Se si immette “.”, Il campo verrà lasciato vuoto.
—–
Nome paese (codice di 2 lettere) [AU]: USA
Nome stato o provincia (nome completo) [Some-State]: NY
Nome località (ad es. Città) []: New York City
Nome dell’organizzazione (es. Società) [Internet Widgits Pty Ltd]: HostAdvice
Nome unità organizzativa (ad es. Sezione) []:
Nome comune (ad es. FQDN del server o nome TUO) []: your_server_ip
Indirizzo email []:

Una volta che i certificati sono pronti, vai al file di configurazione vsftpd e aprilo di nuovo:

$ Sudo nano /etc/vsftpd.conf

In fondo ci sono due righe che iniziano con RSA. Modificali in modo da avere qualcosa del genere:

. . .
# rsa_cert_file = / etc / ssl / certs / ssl-cert-snakeoil.pem
# rsa_private_key_file = / etc / ssl / private / ssl-cert-snakeoil.key
. . .

Nella riga successiva nella stessa directory (/etc/vsftpd.conf), aggiungere le seguenti informazioni:

. . .
rsa_cert_file = / etc / ssl / private / vsftpd.pem
rsa_private_key_file = / etc / ssl / private / vsftpd.pem
. . .

La prossima cosa è assicurarsi che SSL funzioni per impedire agli utenti TLS di ottenere l’accesso. Questo è importante per assicurarsi che tutto il traffico sia completamente crittografato. Tuttavia, questa mossa potrebbe costringere l’utente FTP a cambiare client.

Vai avanti e cambia abilitazione ssl per

/etc/vsftpd.conf

. . .
ssl_enable = SI
. . .

Modifica e aggiungi queste righe per negare l’accesso anonimo su SSL:

/etc/vsftpd.conf

. . .
allow_anon_ssl = NO
force_local_data_ssl = SI
force_local_logins_ssl = SI
. . .

Ora, aggiungi le seguenti righe per configurare il tuo server per usare TLS:

/etc/vsftpd.conf

. . .
ssl_tlsv1 = SI
ssl_sslv2 = NO
ssl_sslv3 = NO
. . .

Infine, includeremo due opzioni extra. Avremo bisogno di suite di crittografia crittografate elevate, il che significa che la lunghezza della chiave sarà di 128 bit o più:

/etc/vsftpd.conf

. . .
require_ssl_reuse = NO
ssl_ciphers = HIGH
. . .

L’output sarà simile al seguente:

/etc/vsftpd.conf

# Questa opzione specifica l’ubicazione del certificato RSA da utilizzare per SSL
# connessioni crittografate.
# Rsa_cert_file = / etc / ssl / certs / ssl-cert-snakeoil.pem
# Rsa_private_key_file = / etc / ssl / private / ssl-cert-snakeoil.key
rsa_cert_file = / etc / ssl / private / vsftpd.pem
rsa_private_key_file = / etc / ssl / private / vsftpd.pem
ssl_enable = SI
allow_anon_ssl = NO
force_local_data_ssl = SI
force_local_logins_ssl = SI
ssl_tlsv1 = SI
ssl_sslv2 = NO
ssl_sslv3 = NO
require_ssl_reuse = NO
ssl_ciphers = HIGH

Quando tutto è completo, salva ed esci dal file.

Ora riavvia il sistema per applicare queste modifiche:

$ Sudo systemctl restart vsftpd

Il passaggio successivo è verificare che sia possibile connettersi al server con un client che supporti TLS.

Passaggio 7: test di TLS utilizzando FileZilla

Per testare TLS utilizzeremo FileZilla poiché offre un servizio di supporto multipiattaforma.

Quando ti trovi all’interno di FileZilla, individua il file Gestore del sito e cliccaci sopra.

Come configurare vsftpd per la directory di un utente su un Ubuntu 18.04 VPS o server dedicato

Nella nuova finestra, premere il tasto Nuovo sito pulsante.

Come configurare vsftpd per la directory di un utente su un Ubuntu 18.04 VPS o server dedicato

Vai a I miei siti icona dove vedrai un’altra icona etichettata Nuovo sito. Usa il Rinominare per assegnare un nuovo nome al tuo sito.

Inserisci il tuo nome o indirizzo IP nel campo Host. Vai a crittografia e scegli Richiedi FTP esplicito su TLS.

Per il Tipo di accesso sezione, selezionare Chiedi la password. Inserisci il tuo utente FTP nella sezione successiva etichettata Utente campo.

Come configurare vsftpd per la directory di un utente su un Ubuntu 18.04 VPS o server dedicato

premi il Collegare e inserisci la tua password.

Come configurare vsftpd per la directory di un utente su un Ubuntu 18.04 VPS o server dedicato

stampa ok per iniziare la connessione. Ora, dovresti essere automaticamente connesso al server usando la crittografia TLS / SSL.

Se tutto ha funzionato correttamente, verrà visualizzato un certificato server come mostrato di seguito:

Come configurare vsftpd per la directory di un utente su un Ubuntu 18.04 VPS o server dedicato

Dopo aver accettato il certificato, vai su File cartella e fare doppio clic su di essa, quindi trascinare upload.txt sul lato sinistro per essere sicuri di poter scaricare facilmente i file.

Come configurare vsftpd per la directory di un utente su un Ubuntu 18.04 VPS o server dedicato

Ora, rinomina la copia in upload-tls.txt quindi trasferiscilo nuovamente sul server per vedere se riesci a caricare correttamente i file.

Come configurare vsftpd per la directory di un utente su un Ubuntu 18.04 VPS o server dedicato

Se il processo ha esito positivo, indica che è possibile trasferire correttamente i file utilizzando l’abilitazione SSL / TLS.

Conclusione

Congratulazioni! Puoi impostare comodamente FTP per diversi utenti su Ubuntu 18.04 VPS. A voi.

Dai un’occhiata a questi 3 principali servizi di hosting Linux

FastComet

Prezzo di partenza:
$ 2.95


Affidabilità
9.7


Prezzi
9.5


Di facile utilizzo
9.7


Supporto
9.7


Caratteristiche
9.6

Leggi le recensioni

Visita FastComet

Hostinger

Prezzo di partenza:
$ 0.99


Affidabilità
9.3


Prezzi
9.3


Di facile utilizzo
9.4


Supporto
9.4


Caratteristiche
9.2

Leggi le recensioni

Visita Hostinger

ChemiCloud

Prezzo di partenza:
$ 2.76


Affidabilità
10


Prezzi
9.9


Di facile utilizzo
9.9


Supporto
10


Caratteristiche
9.9

Leggi le recensioni

Visita ChemiCloud

Articoli How-To correlati

  • Come configurare un server VSFTPD su un server VPS o dedicato CentOS 7
    intermedio
  • Come installare e configurare vsftpd su Ubuntu 18.04
    intermedio
  • Come installare VSFTPD su Ubuntu 18.04
    intermedio
  • Come installare VSFTPD su Ubuntu 18.04
    intermedio
  • Come installare PrestaShop su Ubuntu 18.04 VPS o server dedicato
    intermedio
Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me