FTP è un protocollo ampiamente utilizzato per il trasferimento di file tra server e client. Ci sono molti server FTP open source disponibili ora al giorno, inclusi FTPD, VSFTPD, PROFTPD e pureftpd. Tra questi, VSFTPD è un protocollo sicuro, veloce e più utilizzato in tutto il mondo. Viene anche chiamato "Very Secure File Transfer Protocol Daemon". Supporta anche SSL, IPv6, FTPS esplicito e implicito.
In questo tutorial, ti mostreremo come installare VSFTPD sul server CentOS 8 e proteggerlo con SSL/TLS.
Prerequisiti
- Un server che esegue CentOS 8.
- Sul tuo server è configurata una password di root.
Installa VSFTPD
Per impostazione predefinita, VSFTPD è disponibile nel repository predefinito di CentOS 8. Puoi installarlo eseguendo il seguente comando:
dnf install vsftpd -y
Una volta completata l'installazione, avvia il servizio VSFTPD e abilitalo all'avvio dopo il riavvio del sistema con il seguente comando:
systemctl start vsftpd
systemctl enable vsftpd
A questo punto, il tuo server VSFTPD è installato e funzionante. Ora puoi procedere al passaggio successivo.
Crea un utente per VSFTPD
Successivamente, dovrai creare un nuovo utente per VSFTPD. Quindi puoi accedere al tuo server FTP utilizzando questo utente.
Esegui il comando seguente per creare un nuovo utente chiamato vyom come mostrato di seguito:
adduser vyom
Quindi, imposta la password per un utente vyom con il seguente comando:
passwd vyom
Una volta terminato, puoi procedere al passaggio successivo.
Configura VSFTPD
Quindi, apri il file di configurazione predefinito di VSFTPD che si trova nella directory /etc/vsftpd come mostrato di seguito:
nano /etc/vsftpd/vsftpd.conf
Modifica le seguenti righe:
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 listen=NO listen_ipv6=YES pam_service_name=vsftpd userlist_enable=NO
Salva e chiudi il file quando hai finito. Quindi, riavvia il servizio VSFTPD e verifica lo stato del servizio con il comando seguente:
systemctl restart vsftpd
systemctl status vsftpd
Dovresti vedere il seguente output:
? vsftpd.service - Vsftpd ftp daemon Loaded: loaded (/usr/lib/systemd/system/vsftpd.service; disabled; vendor preset: disabled) Active: active (running) since Fri 2020-02-21 00:43:57 EST; 6s ago Process: 2698 ExecStart=/usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf (code=exited, status=0/SUCCESS) Main PID: 2699 (vsftpd) Tasks: 1 (limit: 6102) Memory: 1020.0K CGroup: /system.slice/vsftpd.service ??2699 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf Feb 21 00:43:57 centos8 systemd[1]: Stopped Vsftpd ftp daemon. Feb 21 00:43:57 centos8 systemd[1]: Starting Vsftpd ftp daemon... Feb 21 00:43:57 centos8 systemd[1]: Started Vsftpd ftp daemon.
A questo punto, il tuo server VSFTPD è configurato. Ora puoi procedere a tutto il VSFTPD tramite SELinux e firewall.
Configura Firewall e SELInux
Per impostazione predefinita, SELinux è abilitato in CentOS 8. Quindi dovrai configurare SELinux per VSFTPD.
È possibile configurare SELinux per consentire l'accesso FTP con il seguente comando:
setsebool -P allow_ftpd_full_access=1
Successivamente, dovrai consentire il servizio FTP tramite firewalld. Puoi consentirlo con il seguente comando:
firewall-cmd --zone=public --permanent --add-service=ftp
Quindi, ricarica il servizio firewalld per applicare le modifiche alla configurazione del firewall:
firewall-cmd --reload
A questo punto, il firewall e SELinux sono configurati per consentire la connessione FTP in entrata dal sistema remoto. Ora puoi procedere con il test della connessione FTP.
Connetti al server VSFTPD
Il tuo server VSFTPD è ora installato e configurato. Ora è il momento di connettere il server FTP dal sistema client.
Per farlo, vai al sistema Client ed esegui il seguente comando per connettere il tuo server FTP:
ftp 172.20.10.3
Ti verrà chiesto di fornire il tuo utente FTP e la password come mostrato di seguito:
Connected to 172.20.10.3. 220 (vsFTPd 3.0.3) Name (172.20.10.3:root): vyom 331 Please specify the password. Password: 230 Login successful.
Una volta che la connessione è stata stabilita correttamente, dovresti vedere il seguente output:
Remote system type is UNIX. Using binary mode to transfer files. ftp>
Ora, digita exit e premi il pulsante Invio per uscire dalle sessioni FTP.
Configura VSFTPD con supporto TLS
Per motivi di sicurezza, è una buona idea crittografare le trasmissioni FTP con SSL/TLS. Per farlo, dovrai generare un certificato SSL e configurare il server VSFTPD per usarlo.
Innanzitutto, dovrai installare il pacchetto OpenSSL nel tuo sistema. Puoi installarlo con il seguente comando:
dnf install openssl -y
Una volta installato, crea una nuova directory in cui archiviare il certificato SSL:
mkdir /etc/ssl/private
Quindi, genera un certificato autofirmato con il seguente comando:
openssl req -newkey rsa:2048 -nodes -keyout /etc/ssl/private/vsftpd.key -x509 -days 365 -out /etc/ssl/private/vsftpd.crt
Fornisci tutte le informazioni richieste come mostrato di seguito:
Generating a RSA private key ...+++++ ...........+++++ writing new private key to '/etc/ssl/private/vsftpd.key' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [XX]:IN State or Province Name (full name) []:GUJ Locality Name (eg, city) [Default City]:JUN Organization Name (eg, company) [Default Company Ltd]:IT Organizational Unit Name (eg, section) []:IT Common Name (eg, your name or your server's hostname) []:ftpserver Email Address []:[email protected]
Dopo aver generato il certificato SSL, dovrai configurare VSFTPD per utilizzare questo certificato.
Apri il file di configurazione predefinito VSFTPD come mostrato di seguito:
nano /etc/vsftpd/vsftpd.conf
Aggiungi le seguenti righe alla fine del file:
#Path of the SSL certificate rsa_cert_file=/etc/ssl/private/vsftpd.crt rsa_private_key_file=/etc/ssl/private/vsftpd.key #Enable the SSL ssl_enable=YES allow_anon_ssl=NO force_local_data_ssl=YES force_local_logins_ssl=YES #TSL is more secure than SSL so enable ssl_tlsv1_2. ssl_tlsv1=YES ssl_sslv2=NO ssl_sslv3=NO require_ssl_reuse=NO ssl_ciphers=HIGH #Enable SSL debugging to store all VSFTPD log. debug_ssl=YES
Salva e chiudi il file quando hai finito. Quindi, riavvia il servizio VSFTPD per applicare le modifiche:
systemctl restart vsftpd
A questo punto, il tuo server VSFTPD è configurato per utilizzare un certificato SSL. Ora puoi procedere al passaggio successivo.
Verifica connessione TLS VSFTPD
Il tuo server VSFTPD è ora protetto con il supporto SSL/TLS. Quindi, prova a connettere il tuo server FTP dalla riga di comando come mostrato di seguito:
ftp 172.20.10.3
Dovresti visualizzare l'errore nel seguente output:
Connected to 172.20.10.3. 220 (vsFTPd 3.0.2) Name (172.20.10.3:root): vyom 530 Non-anonymous sessions must use encryption. Login failed. 421 Service not available, remote server has closed connection ftp>
Non è possibile connettersi al server VSFTP dal client della riga di comando. Perché non supporta il supporto SSL/TLS.
Quindi dovrai scaricare e testare la connessione VSFTPD utilizzando un client FTP che supporta le connessioni TLS.
Per fare ciò, vai al Sistema client e installa il pacchetto client FileZilla.
Dopo aver installato FileZilla, apri il software FileZilla come mostrato di seguito:
Quindi, apri Site Manager come mostrato di seguito:
Fai clic su Nuovo sito pulsante per aggiungere una nuova connessione FTP come mostrato di seguito:
Fornisci l'IP del tuo server FTP, Seleziona il protocollo FTP, Seleziona "Usa FTP esplicito su TLS", Seleziona Richiedi password, fornisci il nome utente del tuo server FTP e fai clic su Connetti pulsante. Ti verrà chiesto di fornire la password dell'utente FTP come mostrato di seguito:
Fornisci la tua password FTP e fai clic su OK pulsante. Ti verrà chiesto di verificare il certificato utilizzato per la connessione SSL/TLS come mostrato di seguito:
Fare clic su OK pulsante per verificare il certificato. Una volta che la connessione è stata stabilita correttamente, dovresti vedere la seguente schermata:
Conclusione
Nella guida sopra, abbiamo installato il server VSFTPD su CentOS 8. Abbiamo anche configurato il server VSFTPD per utilizzare il certificato SSL/TLS. Il tuo server FTP è ora protetto. Sentiti libero di chiedermi se hai domande.