User Tools

Site Tools


doc:appunti:linux:sa:proftpd

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
doc:appunti:linux:sa:proftpd [2024/11/26 09:32] – [Supporto TLS] niccolodoc:appunti:linux:sa:proftpd [2026/04/14 12:31] (current) – [Certificato EC (moderno)] niccolo
Line 59: Line 59:
 <file> <file>
 DefaultRoot  ~      web,!ftproot DefaultRoot  ~      web,!ftproot
-DefaultRoot  /home  !ftproot+DefaultRoot  /home  ftproot
 </file> </file>
  
Line 72: Line 72:
  
 Per evitare che le password transitino in chiaro sulla rete è opportuno abilitare il protocollo TSL obbligatorio. Per evitare che le password transitino in chiaro sulla rete è opportuno abilitare il protocollo TSL obbligatorio.
 +
 +==== Certificato RSA (legacy) ====
 +
 +RSA è l'algoritmo crittografico per le chiavi pubbliche più vecchio e compatibile utilizzato nei certificati SSL/TLS.
 +
 +Let's Encrypt in origine forniva certificati con questo formato, per verificarlo si può usare il comando:
 +
 +<code>
 +openssl x509 -in /etc/letsencrypt/live/domain/fullchain.pem -text -noout \
 +    | grep "Public Key Algorithm"
 +Public Key Algorithm: rsaEncryption
 +</code>
  
 Il modulo **/usr/lib/proftpd/mod_tls.so** era incluso nel pacchetto Debian **proftpd-basic** fino alla versione **Debian 10 Buster**, nelle versioni successive è fornito dal pacchetto opzionale **proftpd-mod-crypto**. Inoltre si deve verificare che in **/etc/proftpd/modules.conf** sia attiva la riga Il modulo **/usr/lib/proftpd/mod_tls.so** era incluso nel pacchetto Debian **proftpd-basic** fino alla versione **Debian 10 Buster**, nelle versioni successive è fornito dal pacchetto opzionale **proftpd-mod-crypto**. Inoltre si deve verificare che in **/etc/proftpd/modules.conf** sia attiva la riga
Line 95: Line 107:
 </file> </file>
  
-Il certificato può essere autofirmato (analogo a quello utilizzato dal server web), oppure si possono utilizzare i **[[letsencrypt]]**.+Il certificato può essere autofirmato (analogo a quello utilizzato dal server web), oppure si possono utilizzare i **[[letsencrypt]]**. FIXME Quando il certificato Let's Encrypt viene aggiornato è necessario riavviare ProFTPD oppure no?
  
 Definire il range delle **PassivePorts** consente di aprire il firewall (iptables) su un numero limitato di porte. Infatti utilizzando la cifratura TLS il modulo kernel **nf_nat_ftp** non è in grado di aprire in maniera dinamica la porta usata dal protocollo FTP per il trasferimento dei dati. Ci sono altre ricetta iptables per evitare di aprire in maniera permanente un range di porte, ma sono un po' più complicate da comprendere. Definire il range delle **PassivePorts** consente di aprire il firewall (iptables) su un numero limitato di porte. Infatti utilizzando la cifratura TLS il modulo kernel **nf_nat_ftp** non è in grado di aprire in maniera dinamica la porta usata dal protocollo FTP per il trasferimento dei dati. Ci sono altre ricetta iptables per evitare di aprire in maniera permanente un range di porte, ma sono un po' più complicate da comprendere.
  
 Il parametro **NoSessionReuseRequired** serve per i client (notabilmente **Filezilla 3.39**) che non riusano la connnessione SSL aperta per il controllo anche per il successivo trasferimento dati. Il parametro **NoSessionReuseRequired** serve per i client (notabilmente **Filezilla 3.39**) che non riusano la connnessione SSL aperta per il controllo anche per il successivo trasferimento dati.
 +
 +==== Certificato EC (moderno) ====
 +
 +Ad oggi (2026) Let's Encrypt fornisce i certificati usando l'algoritmo crittografico Elliptic Curve (ECC), che fornisce sicurezza uguali a chiavi RSA più grandi e quindi minor sforzo computazionale. Una chiave EC da 256-bit offre una sicurezza comparabile ad una chiave RSA da 3072-bit.
 +
 +Per verificare il formato del file in nostro possesso si può usare il comando:
 +
 +<code>
 +openssl x509 -in /etc/letsencrypt/live/domain/fullchain.pem -text -noout \
 +    | grep "Public Key Algorithm"
 +Public Key Algorithm: id-ecPublicKey
 +</code>
 +
 +ProFTPD 1.3.8 su Debian 13 Trixie può usare questi certificati. Si deve ovviamente verificare che il modulo TLS sia caricato assicurandosi che in **/etc/proftpd/modules.conf** sia attiva la riga
 +
 +<file>
 +LoadModule mod_tls.c
 +</file>
 +
 +Quindi le direttive di configurazione sono diverse:
 +
 +<file>
 +IfModule mod_tls.c>
 +    TLSEngine                 on
 +    TLSOptions                NoSessionReuseRequired
 +    #TLSOptions               NoSessionReuseRequired UseImplicitSSL
 +    TLSLog                    /var/log/proftpd/tls.log
 +    PassivePorts              49152 49252
 +    TLSECCertificateFile      /etc/letsencrypt/live/domain/cert.pem
 +    TLSECCertificateKeyFile   /etc/letsencrypt/live/domain/privkey.pem
 +    TLSCACertificateFile      /etc/letsencrypt/live/domain/chain.pem
 +    TLSVerifyClient           off
 +    TLSRequired               on
 +</IfModule>
 +</file>
 +
 +Come si vede ProFTPD deve accedere al certificato del server **cert.pem** e a quello intermedio **chain.pem** esplicitamente, non può leggere entrambi dal file **fullchain.pem**. Le altre direttive circa PassivePorts ecc. restano invariate.
 +
 +Per quanto riguarda i permessi ProFTPD è in grado di leggere il certificato Let's Encrypt direttamente dalla directory **/etc/letsencrypt/live/**.
  
 ==== FTP over TLS: Explicit vs Implicit ==== ==== FTP over TLS: Explicit vs Implicit ====
doc/appunti/linux/sa/proftpd.1732609933.txt.gz · Last modified: by niccolo