androide

Come configurare il server ftp con vsftpd su Ubuntu 18.04

Connessione remota al server FTP FileZilla e regola Firewall

Connessione remota al server FTP FileZilla e regola Firewall

Sommario:

Anonim

FTP (File Transfer Protocol) è un protocollo di rete standard utilizzato per trasferire file da e verso una rete remota. Per trasferimenti di dati più sicuri e veloci, utilizzare SCP o SFTP.

Esistono molti server FTP open source disponibili per Linux. I più popolari e ampiamente utilizzati sono PureFTPd, ProFTPD e vsftpd. In questo tutorial, installeremo vsftpd (Very Secure Ftp Daemon). È un server FTP stabile, sicuro e veloce. Ti mostreremo anche come configurare vsftpd per limitare gli utenti alla loro home directory e crittografare l'intera trasmissione con SSL / TLS.

Sebbene questo tutorial sia scritto per Ubuntu 18.04, le stesse istruzioni valgono per Ubuntu 16.04 e qualsiasi distribuzione basata su Debian, inclusi Debian, Linux Mint e SO elementare.

Prerequisiti

Prima di continuare con questo tutorial, assicurati di aver effettuato l'accesso come utente con privilegi sudo.

Installazione di vsftpd su Ubuntu 18.04

Il pacchetto vsftpd è disponibile nei repository Ubuntu. Per installarlo, esegui semplicemente i seguenti comandi:

sudo apt update sudo apt install vsftpd

Il servizio vsftpd si avvierà automaticamente al termine del processo di installazione. Verifica stampando lo stato del servizio:

sudo systemctl status vsftpd

L'output sarà simile al seguente, a dimostrazione che il servizio vsftpd è attivo e in esecuzione:

* vsftpd.service - vsftpd FTP server Loaded: loaded (/lib/systemd/system/vsftpd.service; enabled; vendor preset: enabled) Active: active (running) since Mon 2018-10-15 03:38:52 PDT; 10min ago Main PID: 2616 (vsftpd) Tasks: 1 (limit: 2319) CGroup: /system.slice/vsftpd.service `-2616 /usr/sbin/vsftpd /etc/vsftpd.conf

Configurazione di vsftpd

Il server vsftpd può essere configurato modificando il file /etc/vsftpd.conf . La maggior parte delle impostazioni sono ben documentate all'interno del file di configurazione. Per tutte le opzioni disponibili, visita la pagina ufficiale vsftpd.

Nelle sezioni seguenti verranno esaminate alcune importanti impostazioni necessarie per configurare un'installazione vsftpd sicura.

Inizia aprendo il file di configurazione vsftpd:

sudo nano /etc/vsftpd.conf

1. Accesso FTP

Consentiremo l'accesso al server FTP solo agli utenti locali, troveremo le direttive anonymous_enable e local_enable e verificheremo che la configurazione corrisponda alle righe seguenti:

/etc/vsftpd.conf

anonymous_enable=NO local_enable=YES

2. Abilitazione dei caricamenti

write_enable impostazione write_enable per consentire modifiche al filesystem come il caricamento e l'eliminazione di file.

/etc/vsftpd.conf

write_enable=YES

3. Prigione di Chroot

Per impedire agli utenti FTP di accedere a tutti i file al di fuori delle loro home directory rimuovere il commento dall'impostazione chroot .

/etc/vsftpd.conf

chroot_local_user=YES

Per impostazione predefinita, per prevenire una vulnerabilità della sicurezza, quando chroot è abilitato vsftpd rifiuta di caricare file se la directory in cui sono bloccati gli utenti è scrivibile.

Utilizzare uno dei metodi seguenti per consentire i caricamenti quando è abilitato Chroot.

  • Metodo 1. - Il metodo consigliato per consentire il caricamento è mantenere chroot abilitato e configurare le directory FTP. In questo tutorial, creeremo una directory ftp all'interno della home dell'utente che fungerà da chroot e una directory di uploads scrivibile per il caricamento dei file.

    /etc/vsftpd.conf

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

    Metodo 2. - Un'altra opzione è quella di aggiungere la seguente direttiva nel file di configurazione vsftpd. Utilizzare questa opzione se è necessario concedere l'accesso scrivibile al proprio utente alla sua home directory.

    /etc/vsftpd.conf

    allow_writeable_chroot=YES

4. Connessioni FTP passive

vsftpd può usare qualsiasi porta per connessioni FTP passive. Specificheremo l'intervallo minimo e massimo di porte e successivamente apriremo l'intervallo nel nostro firewall.

Aggiungi le seguenti righe al file di configurazione:

/etc/vsftpd.conf

pasv_min_port=30000 pasv_max_port=31000

5. Limitazione dell'accesso utente

Per consentire solo a determinati utenti di accedere al server FTP aggiungere le seguenti righe alla fine del file:

/etc/vsftpd.conf

userlist_enable=YES userlist_file=/etc/vsftpd.user_list userlist_deny=NO

Quando questa opzione è abilitata, è necessario specificare esplicitamente quali utenti sono in grado di accedere aggiungendo i nomi utente al file /etc/vsftpd.user_list (un utente per riga).

6. Protezione delle trasmissioni con SSL / TLS

Per crittografare le trasmissioni FTP con SSL / TLS, è necessario disporre di un certificato SSL e configurare il server FTP per utilizzarlo.

È possibile utilizzare un certificato SSL esistente firmato da un'autorità di certificazione attendibile o creare un certificato autofirmato.

Genereremo un certificato SSL autofirmato usando il comando openssl .

Il comando seguente creerà una chiave privata a 2048 bit e un certificato autofirmato valido per 10 anni. Sia la chiave privata che il certificato verranno salvati in uno stesso file:

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

Una volta creato il certificato SSL, apri il file di configurazione vsftpd:

sudo nano /etc/vsftpd.conf

Trova le direttive rsa_cert_file e rsa_private_key_file , modifica i loro valori nel percorso del file pam e imposta la direttiva ssl_enable su YES :

/etc/vsftpd.conf

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

Se non diversamente specificato, il server FTP utilizzerà solo TLS per stabilire connessioni sicure.

Riavvia il servizio vsftpd

Una volta terminata la modifica, il file di configurazione di vsftpd (esclusi i commenti) dovrebbe assomigliare a questo:

/etc/vsftpd.conf

listen=NO listen_ipv6=YES anonymous_enable=NO local_enable=YES write_enable=YES dirmessage_enable=YES use_localtime=YES xferlog_enable=YES connect_from_port_20=YES chroot_local_user=YES secure_chroot_dir=/var/run/vsftpd/empty pam_service_name=vsftpd rsa_cert_file=/etc/ssl/private/vsftpd.pem rsa_private_key_file=/etc/ssl/private/vsftpd.pem ssl_enable=YES user_sub_token=$USER local_root=/home/$USER/ftp pasv_min_port=30000 pasv_max_port=31000 userlist_enable=YES userlist_file=/etc/vsftpd.user_list userlist_deny=NO

Salvare il file e riavviare il servizio vsftpd per rendere effettive le modifiche:

sudo systemctl restart vsftpd

Apertura del firewall

Per aprire la porta 21 (porta comando FTP), la porta 20 (porta dati FTP) e 30000-31000 (intervallo porte passive), eseguire i comandi seguenti:

sudo ufw allow 20:21/tcp sudo ufw allow 30000:31000/tcp

Per evitare di essere bloccato, aprire la porta 22 :

sudo ufw allow OpenSSH

Ricarica le regole UFW disabilitando e riattivando UFW:

sudo ufw disable sudo ufw enable

Per verificare le modifiche eseguite:

sudo ufw status

Status: active To Action From -- ------ ---- 20:21/tcp ALLOW Anywhere 30000:31000/tcp ALLOW Anywhere OpenSSH ALLOW Anywhere 20:21/tcp (v6) ALLOW Anywhere (v6) 30000:31000/tcp (v6) ALLOW Anywhere (v6) OpenSSH (v6) ALLOW Anywhere (v6)

Creazione dell'utente FTP

Per testare il nostro server FTP creeremo un nuovo utente.

  • Se hai già un utente a cui desideri concedere l'accesso FTP, salta il primo passaggio. Se imposti allow_writeable_chroot=YES nel tuo file di configurazione, salta il terzo passaggio.
  1. Crea un nuovo utente chiamato newftpuser :

    sudo adduser newftpuser

    Aggiungi l'utente all'elenco degli utenti FTP consentiti:

    echo "newftpuser" | sudo tee -a /etc/vsftpd.user_list

    Creare la struttura di directory FTP e impostare le autorizzazioni corrette:

    sudo mkdir -p /home/newftpuser/ftp/upload sudo chmod 550 /home/newftpuser/ftp sudo chmod 750 /home/newftpuser/ftp/upload sudo chown -R newftpuser: /home/newftpuser/ftp

    Come discusso nella sezione precedente, l'utente sarà in grado di caricare i suoi file nella directory ftp/upload .

A questo punto, il tuo server FTP è perfettamente funzionante e dovresti essere in grado di connetterti al tuo server usando qualsiasi client FTP che può essere configurato per usare la crittografia TLS come FileZilla.

Disabilitazione dell'accesso alla shell

Per impostazione predefinita, quando si crea un utente, se non specificato esplicitamente, l'utente avrà accesso SSH al server.

Per disabilitare l'accesso alla shell, creeremo una nuova shell che stamperà semplicemente un messaggio che dice all'utente che il suo account è limitato solo all'accesso FTP.

Crea la shell /bin/ftponly e /bin/ftponly eseguibile:

echo -e '#!/bin/sh\necho "This account is limited to FTP access only."' | sudo tee -a /bin/ftponly echo -e '#!/bin/sh\necho "This account is limited to FTP access only."' | sudo tee -a /bin/ftponly sudo chmod a+x /bin/ftponly

Aggiungi la nuova shell all'elenco di shell valide nel /etc/shells :

echo "/bin/ftponly" | sudo tee -a /etc/shells

Cambia la shell dell'utente in /bin/ftponly :

sudo usermod newftpuser -s /bin/ftponly

Utilizzare lo stesso comando per modificare la shell di tutti gli utenti a cui si desidera dare solo l'accesso FTP.

Conclusione

In questo tutorial, hai imparato come installare e configurare un server FTP sicuro e veloce sul tuo sistema Ubuntu 18.04.

ftp ubuntu