La configurazione di un server FTP (File Transfer Protocol) sul tuo PC Linux ti consentirà di trasferire file tra il tuo sistema e una macchina remota. Ti mostreremo come configurare un server FTP su CentOS.
Linux ha già un sacco di server FTP open source che puoi usare per il lavoro. Ciò include server popolari come PureFTPd, ProFTPD e vsftpd.
Puoi utilizzare uno qualsiasi dei server FTP come preferisci. Tuttavia, in questo tutorial, installeremo e utilizzeremo vsftpd, abbreviazione di Very Secure FTP Daemon. È un server FTP veloce, stabile e sicuro che ti aiuterà a trasferire file da e verso un sistema remoto in un batter d'occhio.
Configurazione del server FTP su CentOS
Quindi, senza ulteriori indugi, iniziamo:
Installazione di vsftpd
Per prima cosa, dovremo installare vsftpd su CentOS. Per fare ciò, inserisci il seguente comando nel terminale:
$ sudo dnf install vsftpd
Con vsftpd installato sul tuo sistema CentOS, dovresti configurarlo in modo che si avvii e si avvii automaticamente. Questo può essere fatto usando il seguente comando:
$ sudo systemctl enable vsftpd --now
Fatto ciò, verifica lo stato del servizio vsftpd inserendo questo comando:
$ sudo systemctl status vsftpd
Apparirà una schermata di output simile a quella qui sotto. Dovresti vedere che vsftpd non è "Attivo" sul tuo sistema CentOS.
Configurazione vsftpd
Con vsftpd attivo e in esecuzione sul tuo sistema, dovrai configurare le impostazioni del server. Per fare ciò, dovrai accedere a /etc/vsftpd/vsftpd.conf file di configurazione. Questo può essere fatto aprendo il file di configurazione nell'editor nano inserendo il seguente comando nel terminale:
$ sudo nano /etc/vsftpd/vsftpd.conf
Con il file ora aperto nell'editor, ci sono diverse modifiche che devi apportare per configurare vsftpd sul tuo sistema. Esaminiamoli uno per uno.
1. Configura l'accesso FTP
Per prima cosa, configuriamo il server FTP per consentire l'accesso solo agli utenti locali. Per fare ciò, dovrai trovare le direttive anonymous_enable e local_enable nel file e modificarle come mostrato nell'immagine seguente:
Come puoi vedere, dovrai impostare anonymous_enable=NO e local_enable=YES.
2. Abilita i caricamenti
Successivamente, dovrai configurare il server FTP per consentire il caricamento e l'eliminazione dei file.
Per fare ciò, dovrai individuare la direttiva write_enable e cambiarla in YES, come mostrato nell'immagine.
3. Limita gli accessi utente
Una volta fatto, vorrai limitare il numero totale di accessi utente i.e., vuoi che solo determinati utenti accedano al tuo server FTP. Per fare ciò, per prima cosa, individua questa riga nel .conf - userlist_enable=YES. Successivamente, aggiungi queste due righe nel file:
userlist_file=/etc/vsftpd/user_list userlist_deny=NO
Usa l'immagine qui sotto come riferimento:
Puoi anche scegliere di abilitare questa opzione. Se lo fai, dovrai specificare esplicitamente a quali utenti vuoi dare accesso al server FTP. Per consentire agli utenti, dovrai aggiungere i loro nomi utente al file /etc/vsftpd/user_list con un solo nome utente in ogni riga.
4. Configurazione di connessioni FTP passive
Potresti anche voler impostare connessioni FTP passive.
Pertanto, qui ti mostreremo come specificare gli intervalli minimo e massimo delle porte aggiungendo un paio di righe all'interno del .conf file.
Tutto quello che devi fare è scorrere verso il basso fino alla fine del file e aggiungere queste due righe, come mostrato nell'immagine.
pasv_min_port=30000 pasv_max_port=31000
Discuteremo anche di come aprire l'intervallo nel firewall più avanti in questo tutorial.
5. Configura trasmissioni sicure utilizzando SSL/TLS
Infine, viene la questione di proteggere la connessione FTP utilizzando SSL/TLS. Per fare ciò, dovrai disporre di un certificato SSL e configurare il tuo server FTP per usarlo.
Tuttavia, per il bene di questo tutorial, genereremo un certificato SSL autofirmato utilizzando lo strumento OpenSSL e quindi lo utilizzeremo per crittografare la nostra trasmissione FTP.
Quindi, per prima cosa, dovrai utilizzare OpenSSL per generare un nuovo certificato SSL. Puoi farlo inserendo il seguente comando nel terminale:
sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/vsftpd/vsftpd.pem -out /etc/vsftpd/vsftpd.pem
L'esecuzione del comando precedente genererà una chiave privata a 2048 bit e un certificato autofirmato. Entrambi questi sono validi per dieci anni e salvati nello stesso file.
Dopo aver creato il tuo nuovo certificato SSL, apri il file di configurazione vsftpd utilizzando il comando precedente:
sudo nano /etc/vsftpd/vsftpd.conf
Scorri verso il basso e aggiungi le seguenti righe come mostrato nell'immagine:
rsa_cert_file=/etc/vsftpd/vsftpd.pem rsa_private_key_file=/etc/vsftpd/vsftpd.pem ssl_enable=SI
E questo è tutto. Hai configurato correttamente il certificato SSL per il tuo server FTP.
6. finalizzare
Una volta fatto, ricontrolla il file di configurazione vsftpd per vedere se tutte le seguenti impostazioni sono come sono:
Anonymous_enable=NO local_enable=S write_enable=S local_umask=022 dirmessage_enable=S xferlog_enable=S connect_from_port_20=S xferlog_std_format=S listen=NO listen_ipv6=S pam_service_name=vsftpd userlist_enable=S pam_deny_userlist_enable=S pa userlist_filelist=NO pasv_max_port=31000 rsa_cert_file=/etc/vsftpd/vsftpd.pem rsa_private_key_file=/etc/vsftpd/vsftpd.pem ssl_enable=SI
Dopo esserti assicurato che tutte le modifiche di cui sopra siano state apportate al file, dovrai salvarlo. Una volta salvato, riavvia il servizio vsftpd utilizzando il seguente comando:
$ sudo systemctl riavvia vsftpd
Configura il firewall
Se hai un firewall abilitato insieme al server FTP, allora devi configurare il firewall in modo che permetta le trasmissioni FTP.
Per fare ciò, dovrai inserire i seguenti comandi nel terminale:
$ sudo firewall-cmd --permanent --add-port=20-21/tcp
Il comando precedente apre la porta 21, che è la porta del comando FTP, e la porta 20, che è la porta dei dati FTP.
Dovrai anche inserire questo comando:
$ sudo firewall-cmd --permanent --add-port=30000-31000/tcp
Questo comando apre l'intervallo di porte passive 30000-31000, che abbiamo configurato in precedenza.
Una volta fatto, dovrai ricaricare il firewall usando il seguente comando:
$ firewall-cmd --reload
Come creare un nuovo utente FTP
Ora che hai configurato il tuo server vsftpd sul tuo sistema CentOS, è il momento di creare un nuovo utente FTP e testarlo.
Innanzitutto, creiamo un nuovo utente FTP (newftpuser) utilizzando il seguente comando:
$ sudo adduser newftpuser
Successivamente, dovrai impostare una password per il nuovo utente. Per farlo, usa questo comando:
$ sudo passwd newftpuser
Assicurati che la password sia forte e più lunga di otto caratteri.
Dopo aver creato il nuovo utente, dovrai aggiungerlo all'elenco degli utenti FTP. Questo può essere fatto inserendo il seguente comando nel terminale:
$ echo "newftpuser" | sudo tee -a /etc/vsftpd/user_list
Infine, dovrai creare un albero di directory FTP in cui imposterai tutti i permessi corretti. Per fare ciò, dovrai inserire la seguente serie di comandi nel terminale:
$ sudo mkdir -p /home/nuovoftp/upload $ sudo chmod 550 /home/nuovoftp/ftp $ sudo chmod 750 /home/nuovoftp/ftp/upload $ sudo chown -R nuovoftp: /home/nuovoftp/ftp
A questo punto, il tuo server FTP è completamente funzionante e pronto all'uso. Ora puoi connetterti ad esso utilizzando qualsiasi client FTP come FileZilla. Assicurati solo che il client FTP possa anche essere configurato per utilizzare la crittografia TLS poiché viene utilizzato per crittografare le trasmissioni FTP.
Disabilita l'accesso alla shell
Una cosa che dovresti tenere a mente quando crei un nuovo utente FTP è che, se non diversamente specificato, l'utente avrà accesso SSH al server.
Se desideri disabilitare l'accesso alla shell da parte dell'utente, dovrai creare una nuova shell che stamperà un messaggio che informa l'utente che: "Questo account è limitato solo all'accesso FTP."
Per fare ciò, dovrai inserire il seguente comando nel terminale:
$ echo -e '#!/bin/sh\necho "Questo account è limitato solo all'accesso FTP."' | sudo tee -a /bin/ftponly $ sudo chmod a+x /bin/ftponly
Il comando precedente creerà la shell /bin/ftponly e la eseguirà.
Successivamente, dovrai aggiungere la nuova shell all'elenco delle shell valide che si trovano all'interno del /etc/shells file. Questo viene fatto usando il seguente comando:
$ echo "/bin/ftponly" | sudo tee -a /etc/shells
E come passaggio finale, tutto ciò che devi fare è cambiare la shell dell'utente in /bin/ftponly utilizzando questo comando:
$ sudo usermod newftpuser -s /bin/ftponly
Inoltre, per tutti i futuri utenti FTP, puoi usare lo stesso comando per cambiare la loro shell in modo che possano avere solo accesso FTP.