GNU/Linux >> Linux Esercitazione >  >> Cent OS

Come configurare il server FTP con VSFTPD su CentOS 8

FTP (File Transfer Protocol) è un protocollo di rete client-server che consente agli utenti di trasferire file da e verso una macchina remota.

Ci sono molti server FTP open source disponibili per Linux. I server più popolari e comunemente usati sono PureFTPd, ProFTPD e vsftpd.

In questo tutorial, installeremo vsftpd (Very Secure Ftp Daemon) su CentOS 8. È un server FTP stabile, sicuro e veloce. Ti mostreremo anche come configurare vsftpd per limitare gli utenti alla loro home directory e crittografare la trasmissione dei dati con SSL/TLS.

Installazione di vsftpd su CentOS 8 #

Il pacchetto vsftpd è disponibile nei repository CentOS predefiniti. Per installarlo, esegui il seguente comando come root o utente con privilegi sudo:

sudo dnf install vsftpd

Una volta installato il pacchetto, avvia il demone vsftpd e abilitalo all'avvio automatico all'avvio:

sudo systemctl enable vsftpd --now

Verifica lo stato del servizio:

sudo systemctl status vsftpd

L'output sarà simile a questo, mostrando che il servizio vsftpd è attivo e in esecuzione:

● vsftpd.service - Vsftpd ftp daemon
   Loaded: loaded (/usr/lib/systemd/system/vsftpd.service; enabled; vendor preset: disabled)
   Active: active (running) since Mon 2020-03-30 15:16:51 EDT; 10s ago
  Process: 2880 ExecStart=/usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf (code=exited, status=0/SUCCESS)
  ...

Configurazione di vsftpd #

Le impostazioni del server vsftpd sono memorizzate in /etc/vsftpd/vsftpd.conf file di configurazione. La maggior parte delle impostazioni sono ben documentate all'interno del file. Per tutte le opzioni disponibili, visita la pagina ufficiale vsftpd.

Nelle sezioni seguenti esamineremo alcune importanti impostazioni necessarie per configurare un'installazione sicura di vsftpd.

Inizia aprendo il file di configurazione vsftpd:

sudo nano /etc/vsftpd/vsftpd.conf

1. Accesso FTP #

Consentiremo l'accesso al server FTP solo agli utenti locali, trova il anonymous_enable e local_enable direttive e assicurati che la tua configurazione corrisponda alle righe seguenti:

/etc/vsftpd/vsftpd.conf
anonymous_enable=NO
local_enable=YES

2. Abilitazione dei caricamenti #

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

/etc/vsftpd/vsftpd.conf
write_enable=YES

3. Prigione di Chroot #

Impedisci agli utenti FTP di accedere a qualsiasi file al di fuori delle loro directory home decommentando il chroot direttiva.

/etc/vsftpd/vsftpd.conf
chroot_local_user=YES

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

Usa uno dei metodi seguenti per consentire i caricamenti quando il chroot è abilitato.

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

    /etc/vsftpd/vsftpd.conf
    user_sub_token=$USER
    local_root=/home/$USER/ftp
  • Metodo 2. - Un'altra opzione consiste nell'aggiungere la seguente direttiva nel file di configurazione vsftpd. Usa questa opzione se devi concedere l'accesso scrivibile al tuo utente alla sua home directory.

    /etc/vsftpd/vsftpd.conf
    allow_writeable_chroot=YES

4. Connessioni FTP passive #

vsftpd può utilizzare qualsiasi porta per connessioni FTP passive. Specificare l'intervallo minimo e massimo di porte e successivamente aprire l'intervallo nel nostro firewall.

Aggiungi le seguenti righe al file di configurazione:

/etc/vsftpd/vsftpd.conf
pasv_min_port=30000
pasv_max_port=31000

5. Limitare l'accesso degli utenti #

Per consentire solo a determinati utenti di accedere al server FTP, aggiungi le seguenti righe dopo userlist_enable=YES riga:

/etc/vsftpd/vsftpd.conf
userlist_file=/etc/vsftpd/user_list
userlist_deny=NO

Quando questa opzione è abilitata, devi specificare esplicitamente quali utenti possono accedere aggiungendo i nomi utente a /etc/vsftpd/user_list file (un utente per riga).

6. Protezione delle trasmissioni con SSL/TLS #

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

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

Se hai un dominio o un sottodominio che punta all'indirizzo IP del server FTP, puoi facilmente generare un certificato Let's EncryptSSL gratuito.

In questo tutorial, genereremo un certificato SSL autofirmato utilizzando il openssl strumento.

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/vsftpd/vsftpd.pem -out /etc/vsftpd/vsftpd.pem

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

sudo nano /etc/vsftpd/vsftpd.conf

Trova il rsa_cert_file e rsa_private_key_file direttive, cambia i loro valori in pam percorso del file e imposta ssl_enable direttiva su YES :

/etc/vsftpd/vsftpd.conf
rsa_cert_file=/etc/vsftpd/vsftpd.pem
rsa_private_key_file=/etc/vsftpd/vsftpd.pem
ssl_enable=YES

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

Riavvia il servizio vsftpd #

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

/etc/vsftpd/vsftpd.conf
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
chroot_local_user=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
userlist_file=/etc/vsftpd/user_list
userlist_deny=NO
tcp_wrappers=YES
user_sub_token=$USER
local_root=/home/$USER/ftp
pasv_min_port=30000
pasv_max_port=31000
rsa_cert_file=/etc/vsftpd/vsftpd.pem
rsa_private_key_file=/etc/vsftpd/vsftpd.pem
ssl_enable=YES

Salva il file e riavvia il servizio vsftpd per rendere effettive le modifiche:

sudo systemctl restart vsftpd

Apertura del firewall #

how-to-configure-and-manage-firewall-on-centos-8Se stai eseguendo un, dovrai consentire il traffico FTP.

Per aprire la porta 21 (porta comando FTP), porta 20 (porta dati FTP) e 30000-31000 (Intervallo di porte passive), sul tuo firewall inserisci i seguenti comandi:

sudo firewall-cmd --permanent --add-port=20-21/tcpsudo firewall-cmd --permanent --add-port=30000-31000/tcp

Ricarica le regole del firewall digitando:

firewall-cmd --reload

Creazione di un utente FTP #

Per testare il 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 3° passaggio.
  1. Crea un nuovo utente chiamato newftpuser :

    sudo adduser newftpuser

    Successivamente, dovrai impostare la password utente:

    sudo passwd newftpuser
  2. Aggiungi l'utente all'elenco degli utenti FTP consentiti:

    echo "newftpuser" | sudo tee -a /etc/vsftpd/user_list
  3. Crea l'albero delle directory FTP e imposta le autorizzazioni corrette:

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

    Come discusso nella sezione precedente, l'utente potrà caricare i propri file su ftp/upload directory.

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

Disabilitazione dell'accesso alla shell #

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

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

Esegui i seguenti comandi per creare il /bin/ftponly shell e renderlo eseguibile:

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

Aggiungi la nuova shell all'elenco delle shell valide in /etc/shells file:

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

Cambia la shell utente in /bin/ftponly :

sudo usermod newftpuser -s /bin/ftponly

Usa lo stesso comando per cambiare la shell per gli altri utenti a cui vuoi concedere solo l'accesso FTP.


Cent OS
  1. Come installare un server FTP su CentOS 7 con VSFTPD

  2. Come installare vsftpd su RHEL 8 / CentOS 8

  3. Configurazione sicura del server ProFTPD su CentOS 7 con TLS

  4. Come configurare un server SFTP su CentOS

  5. Come installare il server FTP su CentOS 7

Come configurare il server di backup centralizzato con Amanda su CentOS 7

Come impostare e configurare il server FTP su CentOS

Come configurare un server FTP su CentOS 8 utilizzando VSFTPD

Come installare VSFTPD su CentOS 7

Come installare il server FTP su CentOS 8

Come configurare il server FTP con VSFTPD