FTP (File Transfer Protocol) è un protocollo di rete standard relativamente vecchio e più utilizzato per caricare/scaricare file tra due computer su una rete. Tuttavia, FTP dal suo insicuro originale, perché trasmette i dati insieme alle credenziali utente (nome utente e password) senza crittografia.
Attenzione: Se si prevede di utilizzare FTP, considerare la configurazione della connessione FTP con SSL/TLS (coprirà nel prossimo articolo). Altrimenti, è sempre meglio usare FTP sicuro come SFTP.,
Lettura suggerita: Come installare e proteggere il server FTP in CentOS 7
In questo tutorial, mostreremo come installare, configurare e proteggere un server FTP (VSFTPD in pieno “Very Secure FTP Daemon”) in Ubuntu per avere una potente sicurezza contro le vulnerabilità FTP.
Passo 1: Installazione del server VsFTP in Ubuntu
1. Per prima cosa, dobbiamo aggiornare l’elenco delle sorgenti dei pacchetti di sistema e quindi installare il pacchetto binario VSFTPD come segue:
$ sudo apt-get update$ sudo apt-get install vsftpd
2., Una volta completata l’installazione, il servizio verrà inizialmente disabilitato, quindi, dobbiamo avviarlo manualmente per il tempo medio e anche abilitarlo all’avvio automatico dal prossimo avvio del sistema:
3., Successivamente, se hai UFW firewall abilitato ( non è abilitato di default) sul server, devi aprire le porte 21 e 20 dove i demoni FTP sono in ascolto, al fine di consentire l’accesso ai servizi FTP da macchine remote, quindi aggiungere le nuove regole del firewall come segue:
$ sudo ufw allow 20/tcp$ sudo ufw allow 21/tcp$ sudo ufw status
Passo 2: Configurazione e protezione del server VsFTP in Ubuntu
4. Eseguiamo ora alcune configurazioni per configurare e proteggere il nostro server FTP, per prima cosa creeremo un backup del file di configurazione originale /etc/vsftpd/vsftpd.,conf in questo modo:
$ sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.orig
Quindi, apriamo il file di configurazione vsftpd.
$ sudo vi /etc/vsftpd.confOR$ sudo nano /etc/vsftpd.conf
Aggiungi/modifica le seguenti opzioni con questi valori:
anonymous_enable=NO # disable anonymous loginlocal_enable=YES# permit local loginswrite_enable=YES# enable FTP commands which change the filesystemlocal_umask=022 # value of umask for file creation for local usersdirmessage_enable=YES # enable showing of messages when users first enter a new directoryxferlog_enable=YES# a log file will be maintained detailing uploads and downloadsconnect_from_port_20=YES # use port 20 (ftp-data) on the server machine for PORT style connectionsxferlog_std_format=YES # keep standard log file formatlisten=NO # prevent vsftpd from running in standalone modelisten_ipv6=YES # vsftpd will listen on an IPv6 socket instead of an IPv4 onepam_service_name=vsftpd # name of the PAM service vsftpd will useuserlist_enable=YES # enable vsftpd to load a list of usernamestcp_wrappers=YES # turn on tcp wrappers
5. Ora, configurare VSFTPD per consentire / negare l’accesso FTP agli utenti in base al file elenco utenti / etc / vsftpd.lista degli utenti.
Si noti che per impostazione predefinita, gli utenti elencati in userlist_file = / etc / vsftpd.agli utenti viene negato l’accesso di accesso con l’opzioneuserlist_deny=YES
se userlist_enable=YES
.,
Ma, l’opzioneuserlist_deny=NO
stravolge il significato dell’impostazione predefinita, quindi solo gli utenti il cui nome utente è esplicitamente elencato in userlist_file=/etc / vsftpd.userlist sarà permesso di accedere al server FTP.
Importante: Quando gli utenti accedono al server FTP, vengono collocati in una jail chrooted, questa è la directory root locale che fungerà da directory home solo per la sessione FTP.
Successivamente, esamineremo due possibili scenari su come impostare la directory chrooted jail (local root), come spiegato di seguito.
6., A questo punto, aggiungiamo/modifichiamo / decomment queste due seguenti opzioni per limitare gli utenti FTP alle loro directory Home.
chroot_local_user=YESallow_writeable_chroot=YES
L’opzione chroot_local_user=YES
importante significa che gli utenti locali saranno collocati in una prigione chroot, la loro home directory di default dopo il login.
E dobbiamo anche capire che VSFTPD non consente la scrittura della directory jail di chroot, per impostazione predefinita per motivi di sicurezza, tuttavia, possiamo usare l’opzione allow_writeable_chroot=YES per disabilitare questa impostazione.
Salvare il file e chiuderlo., Quindi dobbiamo riavviare i servizi VSFTPD affinché le modifiche di cui sopra abbiano effetto:
------------- On SystemD ------------- # systemctl restart vsftpd------------- On SysVInit ------------- # service vsftpd restart
Passo 3: Test del server VsFTP in Ubuntu
7. Ora testeremo il server FTP creando un utente FTP con il comando useradd come segue:
$ sudo useradd -m -c "Aaron Kili, Contributor" -s /bin/bash aaronkilik$ sudo passwd aaronkilik
Quindi, dobbiamo elencare esplicitamente l’utente aaronkilik nel file/etc / vsftpd.userlist con il comando echo e il comando tee come di seguito:
$ echo "aaronkilik" | sudo tee -a /etc/vsftpd.userlist$ cat /etc/vsftpd.userlist
8. Ora è giunto il momento di testare le nostre configurazioni di cui sopra funzionano come richiesto., Inizieremo testando gli accessi anonimi; possiamo vedere chiaramente dall’output sottostante che gli accessi anonimi non sono consentiti sul server FTP:
9. Quindi, proviamo se un utente non è elencato nel file /etc/vsftpd.userlist sarà concesso il permesso di login, che non è vero dall’output che segue:
10. Ora effettueremo un test finale per determinare se un utente elencato nel file /etc/vsftpd.userlist, viene effettivamente inserito nella sua home directory dopo il login., E questo è vero da il seguente output:
Attenzione: Impostando l’opzione allow_writeable_chroot=YES
può essere così pericoloso, è possibili implicazioni per la sicurezza, soprattutto se gli utenti hanno l’upload di autorizzazione, o di più, l’accesso alla shell. Usalo solo se sai esattamente cosa stai facendo.
Dovremmo notare che queste implicazioni di sicurezza non sono specifiche per VSFTPD, possono anche influenzare tutti gli altri demoni FTP che offrono di mettere gli utenti locali nelle jail chroot.,
Per questo motivo, nella sezione seguente, spiegheremo un metodo più sicuro per impostare una directory radice locale diversa non scrivibile per un utente.
Passo 4: Configurare le directory home utente FTP in Ubuntu
11. Ora, apri il file di configurazione VSFTPD ancora una volta.,
$ sudo vi /etc/vsftpd.confOR$ sudo nano /etc/vsftpd.conf
e commentare l’opzione non protetta utilizzando il #
carattere, come illustrato di seguito:
#allow_writeable_chroot=YES
Avanti, creare l’alternativa locale root directory per l’utente (aaronkilik, a te forse non è la stessa) e impostare le autorizzazioni richieste da disabilitare i permessi di scrittura a tutti gli altri utenti di questa directory:
$ sudo mkdir /home/aaronkilik/ftp$ sudo chown nobody:nogroup /home/aaronkilik/ftp$ sudo chmod a-w /home/aaronkilik/ftp
12., Quindi, creare una directory sotto la root locale con le autorizzazioni appropriate in cui l’utente memorizzerà i suoi file:
In seguito, aggiungere/modificare le opzioni sottostanti nel file di configurazione VSFTPD con i loro valori corrispondenti:
Salvare il file e chiuderlo. E riavviare i servizi VSFTPD con le impostazioni recenti:
------------- On SystemD ------------- # systemctl restart vsftpd------------- On SysVInit ------------- # service vsftpd restart
13. Ora, eseguiamo un controllo finale e assicuriamoci che la directory radice locale dell’utente sia la directory FTP che abbiamo creato nella sua directory Home.,