Fabio Mosti
consulente informatico
stressato e bastardo

proftpd, un server FTP a prova di (quasi) tutto

14/10/2011 - proftpd, un server FTP a prova di (quasi) tutto
tags: Debian, FTP, Linux, proftpd, SFTP, sistemistica

Ok, cominciamo a installare proftpd:

apt-get install proftpd

Ora editiamo il file /etc/proftpd/proftpd.conf per applicare alcune modifiche base alla configurazione standard:

  • attivare il jail degli utenti nella home impostando DefaultRoot a ~
  • impostare l'intervallo per le porte della modalità passiva tramite la direttiva PassivePorts
  • impostare il server per non richiedere una shell valida settando RequireValidShell a off
  • impostara la umask per file e cartelle settando Umask a 022 o 002 a seconda delle politiche che volete applicare ai gruppi

Ricordatevi fra l'altro di verificare che l'hostname del server sia risolvibile tramite il file /etc/hosts per evitare problemi. A titolo di esempio ecco un file /etc/proftpd/proftpd.conf commentato:

# inclusione file di configurazione dei moduli
Include /etc/proftpd/modules.conf

# impostare a 'on' o 'off' a seconda se la vostra box ha il supporto per ipv6 o meno
UseIPv6                         on

# non cercare di risolvere i nomi utente (ident lookup)
IdentLookups                    off

# impostate il nome del server in modo da non dare troppe informazioni gratis ai curiosi
ServerName                      "FTP server"

# per avere buone performances fate girare il server in modalità standalone e non via inetd
ServerType                      standalone

# istruisce il server a non dare informazioni finché non è avvenuto il login, in modo da non dare altre informazioni ai curiosi
DeferWelcome                    on

# questo è abbastanza tecnico, vedere http://www.proftpd.org/docs/directives/linked/config_ref_MultilineRFC2228.html
MultilineRFC2228                on

# in caso di server virtuali, uno può essere eletto a default; se non avete configurazioni multiple va bene 'on'
DefaultServer                   on

# mostra o meno i link simbolici nella lista
ShowSymlinks                    on

# tarare bene i timeout serve ad evitare che il server si intasi
TimeoutNoTransfer               600
TimeoutStalled                  600
TimeoutIdle                     1200

# il percorso del file contenente il messaggio di benvenuto
DisplayLogin                    welcome.msg

# messaggio da mostrare al cambio directory
DisplayChdir                    .message true

# opzioni per la visualizzazione della lista "-l" sta per "lista lunga", vedi anche
# http://www.proftpd.org/docs/directives/linked/config_ref_ListOptions.html
ListOptions                     "-l"

# espressione regolare per i comandi da bloccare
DenyFilter                      \*.*/

# vincola gli utenti alla loro home directory (chroot jail)
DefaultRoot                     ~

# non richiedere che l'utente abbia una shell valida per consentirgli il login
RequireValidShell               off

# la porta sulla quale il server deve rimanere in ascolto (21 è il default per FTP)
Port                            21

# intervallo di porte da utilizzare per la modalità; passiva (deve coincidere con i settaggi del firewall!)
PassivePorts                  49152 65534

# questa direttiva è fondamentale se il server si trova dietro un NAT, altrimenti è inutile
# MasqueradeAddress             1.2.3.4

# numero massimo di istanze da attivare (tararlo serve a impedire che il server si intasi)
MaxInstances                    30

# utente e gruppo con cui il server deve girare
User                            proftpd
Group                           nogroup

# umask di creazione dei nuovi files e cartelle
Umask                           022  022

# consente agli utenti di sovrascrivere i files
AllowOverwrite                  on

# percorsi dei files di log
TransferLog /var/log/proftpd/xferlog
SystemLog   /var/log/proftpd/proftpd.log

<ifmodule mod_quotatab.c># attiva o disattiva le quote per gli utenti
QuotaEngine off
</ifmodule>

# se non avete mod_ratio attivo lasciate 'off'
<ifmodule mod_ratio.c>
	Ratios off
</ifmodule>

# il delay engine serve a prevenire certi tipi di attacchi, vedi
# http://security.lss.hr/index.php?page=details&amp;ID=LSS-2004-10-02
<ifmodule mod_delay.c>
	DelayEngine on
</ifmodule>

# se non avete i controlli attivi, lasciate tutto su off
<ifmodule mod_ctrls.c>
	ControlsEngine        off
	ControlsMaxClients    2
	ControlsLog           /var/log/proftpd/controls.log
	ControlsInterval      5
	ControlsSocket        /var/run/proftpd/proftpd.sock
</ifmodule>

# vedi sopra
<ifmodule mod_ctrls_admin.c>
	AdminControlsEngine off
</ifmodule>

Dopo aver applicato le modifiche riavviamo il server con

/etc/init.d/proftpd restart

E il gioco è fatto!