FTP Server · 7 min read · Sep 23, 2025

Installazione di Pure-FTPd su Ubuntu 24.04

Pure-FTPd è un software server FTP gratuito e open-source disponibile per Ubuntu e altre distribuzioni Linux. Progettato con un focus sulla sicurezza, sulle prestazioni e sulla facilità d’uso, Pure-FTPd offre funzionalità robuste come il supporto per utenti virtuali, connessioni crittografate utilizzando TLS/SSL e vari meccanismi di autenticazione. Fornisce anche funzionalità come limitazione della larghezza di banda, restrizione dei permessi degli utenti e abilitazione dell’accesso FTP anonimo. Pure-FTPd è spesso scelto per la sua semplicità di configurazione rispetto ad altri server FTP, rendendolo una scelta popolare sia per implementazioni su piccola scala che su larga scala sui sistemi Ubuntu.

Il File Transfer Protocol (FTP) è un protocollo di rete standard utilizzato per trasferire file tra un client e un server su una rete, come Internet. Sviluppato all’inizio degli anni ‘70, FTP consente agli utenti di caricare, scaricare e gestire file su un server remoto. Funziona utilizzando due canali: un canale di comando per controllare la connessione e un canale dati per trasferire file. FTP può funzionare in modalità attiva o passiva, che determina come il server e il client stabiliscono le connessioni. Sebbene sia ampiamente utilizzato per i trasferimenti di file, FTP è considerato insicuro perché i dati, comprese le credenziali di accesso, vengono trasmessi in testo semplice; in questa guida ti mostrerò come configurare Pure-FTPd per utilizzare FTPS (FTP su SSL/TLS), rendendo FTP sicuro.

Questo tutorial ti guida passo dopo passo attraverso il processo di installazione e configurazione di Pure-FTPd su Ubuntu.

Requisiti per l’Installazione di Pure-FTPd

Prima di procedere con l’installazione, assicurati di avere:

  • Un server Ubuntu configurato
  • Accesso a un account utente con privilegi sudo

Installazione Passo-Passo di Pure-FTPd

Aggiornamento dei Pacchetti di Sistema

Per prima cosa, aggiorna l’elenco dei pacchetti del tuo sistema:

sudo apt update

Installazione di Pure-FTPd

Successivamente, installa Pure-FTPd utilizzando il seguente comando:

sudo apt install pure-ftpd

Configurazione di Pure-FTPd per una Maggiore Sicurezza

Impostazione di un Ambiente Sicuro

Crea un gruppo dedicato per gli utenti FTP:

sudo groupadd ftpgroup

Crea un utente per Pure-FTPd:

sudo useradd -g ftpgroup -d /dev/null -s /etc ftpuser

Gestione dell’Accesso degli Utenti

Per aggiungere un utente al server FTP:

sudo pure-pw useradd [username] -u ftpuser -g ftpgroup -d /home/ftpusers/[username]  
sudo pure-pw mkdb

Sostituisci [username] con il nome utente desiderato.

Configurazione di TLS per un Trasferimento Dati Sicuro

Genera un certificato autofirmato:

sudo openssl req -x509 -nodes -days 730 -newkey rsa:2048 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem

Modifica la configurazione di Pure-FTPd per attivare TLS:

echo 1 | sudo tee /etc/pure-ftpd/conf/TLS  
sudo service pure-ftpd restart

Opzioni di Configurazione Avanzate

Ecco un elenco di impostazioni comuni che possono essere configurate per Pure-FTPd nella directory /etc/pure-ftpd/conf/ su Ubuntu. Il nome del file di configurazione è in grassetto.

  • AltLog: Specifica metodi di registrazione alternativi. Ad esempio, AltLog clf:/var/log/pureftpd.log registrerà i trasferimenti in formato W3C.
  • AnonymousOnly: Quando abilitato (creando un file chiamato AnonymousOnly), limita il server a consentire solo accessi anonimi.
  • AntiWarez: Se questo file esiste, agli utenti è vietato caricare file che esistono già sul server.
  • AutoRename: Rinomina automaticamente i file caricati se esiste un file con lo stesso nome.
  • Bind: Associa il server a un indirizzo IP e una porta specifici. Ad esempio, Bind 21 associa alla porta 21 su tutti gli indirizzi disponibili.
  • BrokenClientsCompatibility: Abilita la compatibilità con i client FTP che non aderiscono rigorosamente agli standard FTP.
  • ChrootEveryone: Se abilitato, limita tutti gli utenti alla loro directory home.
  • CreateHomeDir: Crea automaticamente le directory home se non esistono quando un utente accede.
  • CustomerProof: Aumenta la resilienza contro errori comuni nelle configurazioni e nei comandi dei client.
  • Daemonize: Quando questo file esiste, Pure-FTPd verrà eseguito come un demone.
  • DisplayDotFiles: Controlla se i file nascosti (file dot) vengono visualizzati o meno.
  • DontResolve: Previene la risoluzione DNS per la registrazione e il controllo della larghezza di banda, il che può migliorare le prestazioni.
  • ExtAuth: Specifica un programma esterno per l’autenticazione degli utenti.
  • ForcePassiveIP: Costringe il server a segnalare un indirizzo IP specifico ai client in modalità passiva.
  • FSCharset: Imposta il set di caratteri del file system, utile per nomi di file non ASCII.
  • IPv4Only o IPv6Only: Limita il server ad ascoltare solo indirizzi IPv4 o IPv6.
  • KeepAllFiles: Previene la cancellazione di qualsiasi file sul server.
  • LDAPConfigFile: Specifica il percorso del file di configurazione LDAP per l’autenticazione.
  • LimitRecursion: Limita la profondità di ricorsione e il numero di file visualizzati nelle liste delle directory.
  • MaxClientsNumber: Limita il numero massimo di client simultanei.
  • MaxClientsPerIP: Limita il numero di connessioni simultanee da un singolo indirizzo IP.
  • MaxDiskUsage: Limita la percentuale di utilizzo del disco.
  • MaxIdleTime: Imposta il massimo tempo di inattività in minuti prima di disconnettere un client.
  • MaxLoad: Disconnette i client o rifiuta nuove connessioni sopra un certo carico di sistema.
  • MinUID: Imposta l’UID minimo per il login. Gli utenti con un UID inferiore non possono accedere.
  • MySQLConfigFile: Specifica il percorso del file di configurazione MySQL per l’autenticazione basata su database.
  • NoAnonymous: Disabilita gli accessi anonimi se questo file esiste.
  • NoChmod: Disabilita il comando CHMOD sul server.
  • NoRename: Impedisce agli utenti di rinominare i file.
  • PassivePortRange: Definisce un intervallo di porte per le connessioni passive (ad es., 30000 35000).
  • PerUserLimits: Imposta limiti su base per utente.
  • PureDB: Specifica il percorso del file del database utenti PureDB.
  • Quota: Imposta limiti di quota per gli utenti.
  • SyslogFacility: Definisce la struttura syslog per la registrazione.
  • TLSCipherSuite: Specifica i cifrari TLS consentiti per le connessioni crittografate.
  • TrustedGID: Specifica un elenco di ID di gruppo fidati per il login.
  • UMask: Imposta l’umask predefinito per la creazione di file.
  • UnixAuthentication: Abilita l’autenticazione contro il database password UNIX.
  • UploadScript: Specifica uno script da eseguire dopo un caricamento riuscito.

Questa lista copre le opzioni di configurazione più comunemente utilizzate ma non è esaustiva. Consulta sempre la documentazione ufficiale di Pure-FTPd o utilizza il

pure-ftpd-wrapper --help

comando per le informazioni più accurate e complete.

Esempi

Ecco un elenco di impostazioni di Pure-FTPd nella directory /etc/pure-ftpd/conf/ con esempi per illustrare i tipi di valori che accettano:

  • AltLog: AltLog clf:/var/log/pureftpd.log - Esempio: clf:/var/log/pureftpd.log
  • AnonymousOnly: Abilita creando un file chiamato AnonymousOnly. - Nessun valore necessario.
  • AntiWarez: Abilita creando un file chiamato AntiWarez. - Nessun valore necessario.
  • AutoRename: Abilita creando un file chiamato AutoRename. - Nessun valore necessario.
  • Bind: Bind 21 - Esempio: 192.168.0.1,21
  • BrokenClientsCompatibility: Abilita creando un file chiamato BrokenClientsCompatibility. - Nessun valore necessario.
  • ChrootEveryone: Abilita creando un file chiamato ChrootEveryone. - Nessun valore necessario.
  • CreateHomeDir: Abilita creando un file chiamato CreateHomeDir. - Nessun valore necessario.
  • CustomerProof: Abilita creando un file chiamato CustomerProof. - Nessun valore necessario.
  • Daemonize: Abilita creando un file chiamato Daemonize. - Nessun valore necessario.
  • DisplayDotFiles: Abilita creando un file chiamato DisplayDotFiles. - Nessun valore necessario.
  • DontResolve: Abilita creando un file chiamato DontResolve. - Nessun valore necessario.
  • ExtAuth: ExtAuth /path/to/authenticator - Esempio: /usr/local/bin/myauth
  • ForcePassiveIP: ForcePassiveIP 192.168.0.1 - Esempio: 192.168.0.1
  • FSCharset: FSCharset utf-8 - Esempio: utf-8
  • IPv4Only o IPv6Only: Abilita creando un file chiamato IPv4Only o IPv6Only. - Nessun valore necessario.
  • KeepAllFiles: Abilita creando un file chiamato KeepAllFiles. - Nessun valore necessario.
  • LDAPConfigFile: LDAPConfigFile /etc/pure-ftpd/ldap.conf - Esempio: /etc/pure-ftpd/ldap.conf
  • LimitRecursion: LimitRecursion 10000 8 - Esempio: 10000 8 (10000 file, 8 livelli di profondità)
  • MaxClientsNumber: MaxClientsNumber 50 - Esempio: 50
  • MaxClientsPerIP: MaxClientsPerIP 8 - Esempio: 8
  • MaxDiskUsage: MaxDiskUsage 95 - Esempio: 95 (95 percento)
  • MaxIdleTime: MaxIdleTime 15 - Esempio: 15 (15 minuti)
  • MaxLoad: MaxLoad 4.0 - Esempio: 4.0
  • MinUID: MinUID 1000 - Esempio: 1000
  • MySQLConfigFile: MySQLConfigFile /etc/pure-ftpd/mysql.conf - Esempio: /etc/pure-ftpd/mysql.conf
  • NoAnonymous: Abilita creando un file chiamato NoAnonymous. - Nessun valore necessario.
  • NoChmod: Abilita creando un file chiamato NoChmod. - Nessun valore necessario.
  • NoRename: Abilita creando un file chiamato NoRename. - Nessun valore necessario.
  • PassivePortRange: PassivePortRange 30000 35000 - Esempio: 30000 35000
  • PerUserLimits: PerUserLimits 8 - Esempio: 8 (8 connessioni simultanee per utente)
  • PureDB: PureDB /etc/pure-ftpd/pureftpd.pdb - Esempio: /etc/pure-ftpd/pureftpd.pdb
  • Quota: Quota 1000M - Esempio: 1000M (1000 Megabyte)
  • SyslogFacility: SyslogFacility ftp - Esempio: ftp
  • TLSCipherSuite: TLSCipherSuite HIGH:MEDIUM:+TLSv1:!SSLv2:+SSLv3 - Esempio: HIGH:MEDIUM:+TLSv1:!SSLv2:+SSLv3
  • TrustedGID: TrustedGID 1000 - Esempio: 1000
  • UMask: UMask 133:022 - Esempio: 133:022 (File: 133, Directory: 022)
  • UnixAuthentication: Abilita creando un file chiamato UnixAuthentication. - Nessun valore necessario.
  • UploadScript: UploadScript /path/to/script - Esempio: /usr/local/bin/uploadscript

Questi esempi dovrebbero chiarire come configurare varie opzioni in Pure-FTPd.

Monitoraggio e Manutenzione

Controlla regolarmente i log in /var/log/pure-ftpd/ per eventuali attività o errori insoliti.

Share: X/Twitter LinkedIn

Ricevi i nuovi post nella tua casella di posta.

Nessuno spam. Disiscriviti in qualsiasi momento.