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/05/31 11:35] niccolodoc:appunti:linux:sa:proftpd [2025/01/23 12:49] (current) – [Supporto TLS] niccolo
Line 59: Line 59:
 <file> <file>
 DefaultRoot  ~      web,!ftproot DefaultRoot  ~      web,!ftproot
-DefaultRoot  /home  !ftproot+DefaultRoot  /home  ftproot
 </file> </file>
  
Line 73: Line 73:
 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.
  
-Il modulo **/usr/lib/proftpd/mod_tls.so** è incluso nel pacchetto Debian **proftpd-basic**, mentre Ubuntu lo fornisce con il pacchetto aggiuntivo **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
  
 <file> <file>
Line 95: Line 95:
 </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.
 +
 +==== FTP over TLS: Explicit vs Implicit ====
 +
 +Il supporto a FTP su TLS può essere implementato in due modi:
 +
 +  * **Explicit**: La connessione iniziale avviene in chiaro sulla porta **21/TCP** e successivamnte viene negoziato esplicitamente il TLS.
 +  * **Implicit**: La connessione avviene generalmente sulla porta **990/TCP** direttamente in TLS.
 +
 +=== Explicit ===
 +
 +Dovrebbe essere la modalità consigliata.
 +
 +Con il client FileZilla si può impostare come **Encryption** la modalità **Require explicit FTP over TLS**, in modo da essere sicuri che l'autenticazione avvenga su connessione cifrata. La porta predefinita del servizio è comunque la **21/TCP**.
 +
 +Con il client da riga di comando **lftp** si potrà usare un comando del tipo:
 +
 +<code bash>
 +lftp -e "set ssl:verify-certificate false" -u ftp_username 'ftp_server.domain.org:21'
 +</code>
 +
 +
 +=== Implicit ===
 +
 +La modalità **Implicit** può essere attivata anche sulla porta **21/TCP**, sebbene questo contravvenga il [[wp>Principle of least astonishment|principio di minima sorpresa]]; è sufficiente aggiungere l'opzione ''UseImplicitSSL'' a ''TLSOptions'':
 +
 +<file>
 +<IfModule mod_tls.c>
 +    TLSOptions   NoSessionReuseRequired UseImplicitSSL
 +</IfModule>
 +</file>
 +
 +Con il client FileZilla si dovrà selezionare come **Encryption** la modalità **Require implicit FTP over TLS**, inoltre si dovrà esplicitamente indicare la porta **21/TCP** e il client stesso emetterà un warning: //Selected port usually in use by a different protocol//.
 +
 +Volendo utilizzare il client da riga di comando **lftp** si dovrà utilizzare una riga di comando del tipo:
 +
 +<code bash>
 +lftp -e "set ssl:verify-certificate false" -u ftp_username 'ftps://ftp_server.domain.org:21'
 +</code>
 +
doc/appunti/linux/sa/proftpd.1717148136.txt.gz · Last modified: 2024/05/31 11:35 by niccolo