[CENTOS] - #29 FTP, FTPS E SFTP. Facciamo chiarezza e installiamo il più adatto
Sommario:
- Prerequisiti
- Installazione di vsftpd su CentOS 7
- Configurazione di vsftpd
- 1. Accesso FTP
- 2. Abilitazione dei caricamenti
- 3. Prigione di Chroot
- 4. Connessioni FTP passive
- 5. Limitazione dell'accesso utente
- 6. Protezione delle trasmissioni con SSL / TLS
- Riavvia il servizio vsftpd
- Apertura del firewall
- Creazione di un utente FTP
- Disabilitazione dell'accesso alla shell
- Conclusione
FTP (File Transfer Protocol) è un protocollo di rete client-server standard che consente agli utenti di trasferire file da e verso una rete remota.
Esistono diversi 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) su CentOS 7. È 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.
Per trasferimenti di dati più sicuri e veloci, utilizzare SCP o SFTP.
Prerequisiti
Prima di continuare con questo tutorial, assicurati di aver effettuato l'accesso come utente con privilegi sudo.
Installazione di vsftpd su CentOS 7
Il pacchetto vsftpd è disponibile nei repository CentOS predefiniti. Per installarlo, emettere il seguente comando:
sudo yum install vsftpd
Una volta installato il pacchetto, avvia il demone vsftpd e abilita l'avvio automatico all'avvio:
sudo systemctl start vsftpd
sudo systemctl enable vsftpd
Puoi verificare che il servizio vsftpd sia in esecuzione stampando il suo stato:
sudo systemctl status vsftpd
L'output sarà simile al seguente, a dimostrazione 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 Thu 2018-11-22 09:42:37 UTC; 6s ago Main PID: 29612 (vsftpd) CGroup: /system.slice/vsftpd.service └─29612 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
Configurazione di vsftpd
La configurazione del servizio vsftpd implica la modifica del file di configurazione
/etc/vsftpd/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/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:
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.
3. Prigione di Chroot
Impedisci agli utenti FTP di accedere a qualsiasi file esterno alle loro home directory togliendo il commento alla direttiva
chroot
.
chroot_local_user=YES
Per impostazione predefinita, quando chroot è abilitato vsftpd rifiuta di caricare file se la directory in cui sono bloccati gli utenti è scrivibile. Questo per prevenire una vulnerabilità della sicurezza.
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
/etc/vsftpd/vsftpd.confftp
all'interno della home dell'utente che fungerà da chroot e una directory diuploads
scrivibile per il caricamento dei file.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/vsftpd.confallow_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/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 dopo la
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
/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.
In questo tutorial, 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/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 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
:
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 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/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
Salvare il file e riavviare il servizio vsftpd per rendere effettive le modifiche:
Apertura del firewall
Per aprire la porta
21
(porta comando FTP), la porta
20
(porta dati FTP) e
30000-31000
(intervallo porte passive),
30000-31000
i seguenti comandi:
sudo firewall-cmd --permanent --add-port=20-21/tcp
sudo firewall-cmd --permanent --add-port=30000-31000/tcp
Ricarica le regole del firewall digitando:
Creazione di un 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.
-
Crea un nuovo utente chiamato
newftpuser
:sudo adduser newftpuser
Successivamente, dovrai impostare la password dell'utente:
sudo passwd 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 con 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.
Esegui i seguenti comandi per creare la shell
/bin/ftponly
e renderla 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 per gli altri utenti a cui si desidera fornire solo l'accesso FTP.
Conclusione
In questo tutorial, hai imparato come installare e configurare un server FTP sicuro e veloce sul tuo sistema CentOS 7.
ftp centosCome configurare e utilizzare il server ftp su Android
Vuoi trasferire file dal tuo dispositivo Android al PC senza cavo USB? Prova il metodo del server FTP per condividere file tra Android e PC in modalità wireless.
Come configurare il server ftp con vsftpd su debian 9
In questo tutorial installeremo vsftpd. È 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.
Come configurare il server ftp con vsftpd su Ubuntu 18.04
In questo tutorial installeremo vsftpd. È 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.