User Tools

Site Tools


doc:appunti:linux:sa:proftpd

This is an old revision of the document!


Demone ProFTPD

TimesGMT

Per default i file vengono mostrati ai client con il timestamp modificato, riportandolo alla zona GMT. Se invece si vuole il timestamp effettivo (quello mostrato da ls -l) si mette in /etc/proftpd.conf:

# The TimesGMT option causes the server to report all
# ls and MDTM times in GMT and not local time.
TimesGMT off

Password NIS

Se l'autenticazione avviene tramite NSS con password NIS o LDAP è indispensabile disattivare l'opzione PersistentPasswd:

# Uncomment this if you are using NIS or LDAP via NSS to retrieve passwords:
PersistentPasswd off

Valid shell

La direttiva per poter eseguire FTP anche senza avere una shell valida (ad esempio per VirtualHost, ciascuno con un utente senza shell):

RequireValidShell               off

La direttiva in Debian Wheezy può essere messa in un file a parte, ad esempio /etc/proftpd/conf.d/local.conf

Disabilitare il chmod

Per evitare che qualcuno sia troppo permissivo sui file e directory caricate via FTP (il solito chmod 777) è possibile disabilitare tale comando dal server ftp. Ad esempio mettendo in /etc/proftpd/conf.d/local.conf:

<Global>
  <Limit SITE_CHMOD>
    DenyAll
  </Limit>
</Global>

Chroot (jail directory)

Per limitare un utente all'interno di una directory si utilizza la direttiva DefaultRoot, ad esempio con queste due righe si chiude nella propria home directory gli utenti del gruppo web, che non appartengono al gruppo ftproot. Gli utenti di ftproot invece sono limitati alla directory /home:

DefaultRoot  ~      web,!ftproot
DefaultRoot  /home  !ftproot

ATTENZIONE: nelle condizioni si specifica il nome del gruppo, non dell'utente. Se ci sono più condizioni separate da virgola, queste vengono considerate come unite da AND. Se si vuole specificare la direttiva per gruppi diversi, si deve ripetere la stessa direttiva:

DefaultRoot  ~      pdf-web
DefaultRoot  ~      ftpuser

Supporto TLS

Per evitare che le password transitino in chiaro sulla rete è opportuno abilitare il protocollo TSL obbligatorio. Si può creare un file /etc/proftpd/conf.d/local.conf con dentro:

<IfModule mod_tls.c>
    TLSEngine                 on
    TLSLog                    /var/log/proftpd/tls.log
    PassivePorts              49152 49252
    #TLSRSACertificateFile     /etc/ssl/certs/proftpd.crt
    #TLSRSACertificateKeyFile  /etc/ssl/private/proftpd.key
    TLSECCertificateFile      /etc/apache2/ssl/https.server.org.pem
    TLSVerifyClient           off
    TLSRequired               on
</IfModule>

Il certificato può essere autofirmato (analogo a quello utilizzato dal server web), oppure si possono utilizzare i Certificati Let's Encrypt (certbot).

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.

doc/appunti/linux/sa/proftpd.1564138981.txt.gz · Last modified: 2019/07/26 13:03 by niccolo