GNU/Linux >> Linux Esercitazione >  >> Linux

Configurazione di un server FTP con vsFTPd su Raspberry Pi

In questo articolo mostrerò come configurare un server FTP su Raspberry Pi che può essere utilizzato per condividere file tra i tuoi dispositivi. Useremo vsFTPd poiché è un server FTP molto stabile, sicuro e molto veloce. Dimostrerò anche come configurare vsFTPd per limitare gli utenti alle loro directory HOME, oltre a crittografare l'intera connessione utilizzando SSL/TLS.

Se vuoi seguire questo materiale, devi avere il sistema operativo Raspberry Pi installato sul tuo Raspberry Pi. L'esecuzione di un server FTP non richiede un'interfaccia grafica, quindi consiglio di installare Raspberry Pi OS Lite con il servizio SSH abilitato, abilitando l'accesso remoto.

Installa o vsFTPd senza Raspberry Pi

Il pacchetto vsftpd è disponibile dai repository ufficiali di Raspberry Pi OS, quindi può essere installato con i seguenti comandi:

sudo apt update
sudo apt install vsftpd

Dopo l'installazione, il servizio del server FTP si avvierà automaticamente. Per controllare lo stato di questo servizio, esegui:

sudo systemctl status vsftpd

Il ritorno da questo comando dovrebbe restituire "Attivo:attivo (in esecuzione) dal...", qualcosa come:

vsftpd.service - vsftpd FTP server
   Loaded: loaded (/lib/systemd/system/vsftpd.service; enabled; vendor preset: enabled)
   Active: active (running) since Sun 2021-05-23 07:02:41 BST; 14s ago
...

Come migrare da CentOS 8 a Rocky Linux 8/Alma Linux 8

Configura il server FTP con vsFTPd

La configurazione di vsFTPd avviene tramite il file /etc/vsftpd.conf .

La maggior parte delle impostazioni sono ben documentate, in inglese, nel file di configurazione. Se vuoi valutare tutte le opzioni disponibili, ti consiglio il sito ufficiale all'indirizzo:Manpage di VSFTPD.CONF

1. Accesso al server FTP

Per assicurarti che solo gli utenti del sistema operativo locale possano accedere al server FTP, cerca le voci anonymous_enable e local_enable nel file di configurazione, lasciandole come segue:

anonymous_enable=NO
local_enable=YES

2. Abilitazione dei caricamenti

Individua e decommenta l'impostazione write_enable per consentire le modifiche al file system, consentendo agli utenti di caricare e rimuovere file:

write_enable=YES

3. Gabbia Chroot

Per impedire agli utenti FTP di accedere ai file al di fuori della loro cartella home, dobbiamo creare una jail chroot, decommentando l'impostazione chroot_local_user :

chroot_local_user=YES

Quando la funzione chroot è abilitata, vsFTPd disabiliterà il caricamento dei file se la directory utente è bloccata.

Utilizzare una delle opzioni seguenti per lasciare l'ambiente in chroot in modalità di scrittura.

Opzione 1 – il modo consigliato per abilitare il caricamento dei file e lasciare attivo il chroot, configurando le directory FTP. Nell'esempio seguente, creerò una directory ftp all'interno della cartella home dell'utente, che fungerà da cartella utilizzata da chroot e consentirà di caricare i file al suo interno.

user_sub_token=$USER
local_root=/home/$USER/ftp

Opzione 2 – Un'altra alternativa consiste nell'aggiungere l'impostazione allow_writeable_chroot nel file vsftpd.conf. Questa opzione abiliterà l'opzione per scrivere nella cartella home degli utenti.

allow_writeable_chroot=YES

4. Connessioni passive su server FTP

Per impostazione predefinita, vsFTPd utilizza la modalità attiva. Per utilizzare la modalità passiva, imposta l'intervallo minimo e massimo di porte utilizzate.

pasv_min_port=30000
pasv_max_port=31000

vsFTPd può utilizzare qualsiasi porta in modalità passiva. Quando la modalità passiva è abilitata, il client FTP apre una connessione su una porta casuale durante la connessione al server FTP, all'intervallo impostato nel file di configurazione.

5. Limita l'accesso a determinati utenti

Possiamo configurare vsFTPd per consentire l'accesso solo a pochi utenti. Per eseguire questa configurazione, aggiungi le seguenti righe al file delle impostazioni:

userlist_enable=YES
userlist_file=/etc/vsftpd.user_list
userlist_deny=NO


Quando questa impostazione è abilitata, devi specificare quali utenti potranno accedere, aggiungendo i loro nomi utente nel file /etc/vsftpd.user_list, con un utente per riga.

6. Trasmissione sicura con SSL/TLS

Per crittografare la trasmissione FTP con SSL/TLS, è necessario disporre di un certificato SSL e configurare il server FTP per utilizzarlo. Possiamo utilizzare un certificato SSL esistente firmato da un emittente certificato o creare un certificato autofirmato.

Se hai un dominio o un sottodominio che punta all'IP del tuo server FTP, puoi generare un certificato SSL gratuito utilizzando Let's Encrypt. Se non l'hai mai usato prima, segui la documentazione ufficiale:Guida introduttiva – Let's Encrypt – Certificati SSL/TLS gratuiti

In questo articolo, genereremo una chiave autofirmata utilizzando il comando openssl.

Eseguire il comando seguente per creare una chiave privata (certificato) a 2048 bit, autofirmata, valida per 10 anni. Le chiavi pubbliche e private verranno archiviate nello stesso file.

sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem

Dopo aver creato le chiavi, apri nuovamente il file delle impostazioni vsFTPd:

sudo nano /etc/vsftpd.conf

Trova le impostazioni rsa_cert_file e rsa_private_key_file modificandone i valori nel file pem e imposta l'impostazione ssl_enable su YES.

rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem
ssl_enable=YES

Se queste impostazioni non sono configurate correttamente, il server FTP utilizzerà TLS solo per proteggere le connessioni.

Riavvia o server FTP

Quando vengono eseguite le impostazioni di cui sopra, il file delle impostazioni vsFTPd dovrebbe apparire così (senza i commenti):

listen=NO
listen_ipv6=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
chroot_local_user=YES
allow_writeable_chroot=YES
pasv_min_port=30000
pasv_max_port=31000
userlist_enable=YES
userlist_file=/etc/vsftpd.user_list
userlist_deny=NO
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem
ssl_enable=YES

Salva il file e riavvia il servizio vsFTPd per rendere effettive le modifiche a questo file:

sudo systemctl restart vsftpd

Apertura del firewall

Se utilizzi UFW Firewall nella tua distribuzione, devi rilasciare il traffico FTP, aprendo le porte 20 (dati FTP), 21 (comandi FTP) e 30000-31000 (porte in modalità passiva), utilizzando i seguenti comandi:

sudo ufw allow 20:21/tcp
sudo ufw allow 30000:31000/tcp

Ora, rileggi le regole UFW, disabilitandole e riattivandole.

sudo ufw disable
sudo ufw enable

Crea un utente per FTP

Per testare il nostro server FTP, creeremo un utente.

  • Se hai già un utente che verrà utilizzato e vuoi solo concedergli l'accesso, salta il primo passaggio.
  • Se hai impostato allow_writeable_chroot=YES nel tuo file di configurazione, salta il terzo passaggio.

01. Crea un utente chiamato novouserftp:

sudo adduser novouserftp

Quando richiesto, imposta la password dell'utente.

02. Aggiungi l'utente all'elenco di coloro che possono utilizzare il server FTP.

echo "novouserftp" | sudo tee -a /etc/vsftpd.user_list

03. Crea una directory FTP e imposta i permessi corretti.

sudo mkdir -p /home/novouserftp/ftp/upload
sudo chmod 550 /home/novouserftp/ftp
sudo chmod 750 /home/novouserftp/ftp/upload
sudo chown -R novouserftp: / home / novouserftp / ftp

Come discusso in precedenza, l'utente sarà in grado di caricare file nella cartella ftp/upload della propria home directory.

A questo punto, il tuo server FTP è completamente funzionante e puoi connetterti ad esso utilizzando client FTP come FileZilla!

Disabilita l'accesso alla shell

Per impostazione predefinita, quando viene creato un utente, se non viene eseguita alcuna configurazione aggiuntiva, questo utente ha accesso SSH al server. Per disabilitare questo accesso, crea una nuova shell che visualizzi solo un messaggio che dice all'utente che questo account è limitato al solo accesso FTP.

Crea la shell /bin/ftponly e rendilo eseguibile.

echo -e '#!/bin/sh echo "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 delle shell valide nel file /etc/shells :

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

Cambia la shell utente creata in /bin/ftponly:

sudo usermod novouserftp -s / bin / ftponly

Usa quest'ultimo comando per tutti gli utenti che avranno accesso solo al server FTP.

Conclusioni

Speriamo che sia chiaro come installare e configurare un server FTP veloce e sicuro sul tuo sistema Raspberry Pi.


Linux
  1. Impara Linux con Raspberry Pi

  2. Come installare un server FTP su CentOS 7 con VSFTPD

  3. Come installare un server FTP su Rocky Linux 8 con VSFTPD

  4. Easy vsFTPD – Server FTP con utenti virtuali su Debian 8 Jessie

  5. Perché chroot_local_user di vsftpd non è sicuro?

Come installare il server VsFTPD con TLS su Ubuntu 18.04 LTS

Come installare un server FTP?

Carica file con Monsta FTP

Come configurare un server FTP con ProFTPD in Ubuntu 18.04

Come configurare il server FTP con VSFTPD

Configurazione di un server NFS con Turnkey Linux