Installare un server FTP con ProFTPD: differenze tra le versioni

Da Guide@Debianizzati.Org.
Vai alla navigazione Vai alla ricerca
m (fix broken links)
 
(32 versioni intermedie di 7 utenti non mostrate)
Riga 1: Riga 1:
===Installare un server FTP su Debian===
{{Versioni compatibili|Squeeze|Wheezy|Jessie|Testing_2015}}
Installare un server FTP su Debian è un'operazione non particolarmente complessa, ma che merita alcune attenzioni. In questa guida utilizzerò ProFTPD, un ftp server scritto per essere utilizzato su Unix e sistemi operativi Unix-like come il nostro Linux.
 
written for use on Unix and Unix-a-like operating systems, there is no support for native use under Microsoft Windows.<br/>
== Introduzione ==
<br/>
Installare un server FTP su Debian è un'operazione non particolarmente complessa, ma che merita alcune attenzioni. In questa guida utilizzerò ProFTPD, un FTP server scritto per essere utilizzato su Unix e sistemi operativi Unix-like come il nostro Linux.
 
'''Caratteristiche di ProFTPD'''
'''Caratteristiche di ProFTPD'''
<br/>
 
* utilizza un singolo file di configurazione, con direttive molto familiari per chi è già abituato ad amministrare web server Apache
* utilizza un singolo file di configurazione, con direttive molto familiari per chi è già abituato ad amministrare web server Apache;
* permette la configurazione di files ".ftpaccess" e di server FTP virtuali in maniera simile ad Apache
* permette la configurazione di file ".ftpaccess" e di server FTP virtuali in maniera simile ad Apache;
* non permette comandi SITE EXEC, riducendo così lo stress da sicurezza dell'amministratore
* non permette comandi SITE EXEC, riducendo così lo stress da sicurezza dell'amministratore;
* supporta IPv6
* supporta IPv6.
====Installazione di ProFTPD====
 
Per installare il server proftpd basta lanciare i seguenti comandi da root:
== Installazione di ProFTPD ==
Per installare il server <code>proftpd</code> basta lanciare i seguenti comandi da [[root]]:
<pre>
<pre>
# apt-get update
# apt-get update
# apt-get install proftpd
# apt-get install proftpd-basic
</pre>
</pre>
L'installer del server FTP vi chiederà in che modo intendere far girare proftpd, attraverso inetd o in modalità standalone. Mi sento di consigliare la modalità standalone che, da quanto letto in rete, sembra la più adatta per siti FTP con traffico intenso o assai variabile.
L'installer del server FTP vi chiederà in che modo intendere far girare <code>proftpd</code>, attraverso "inetd" o in modalità "standalone". Mi sento di consigliare la modalità "standalone" che, da quanto letto in rete, sembra la più adatta per siti FTP con traffico intenso o assai variabile.
====Configurazione di Proftp Server====
 
Il file di configurazione si trova in <tt>/etc/proftpd/proftpd.conf</tt><br/>
== Configurazione di ProFTPD Server ==
Il file di configurazione si trova in <code>/etc/proftpd/proftpd.conf</code><br/>
Alcune direttive degne di nota sono le seguenti:
Alcune direttive degne di nota sono le seguenti:
* ServerName Permette di indicare il nome che apparirà agli utenti:
;ServerName:Permette di indicare il nome che apparirà agli utenti:<pre>ServerName “proftp server”</pre>
;ServerIdent:Imposta il messaggio di benvenuto:<pre>ServerIdent on “Welcome to proftp server”</pre>
;UseReverseDNS:<pre>UseReverseDNS off</pre>
;IdentLookups:<pre>IdentLookups off</pre>
;DefaultRoot:Imposta la chroot directory di default (la home directory dell'utente che effettua il login)<pre>DefaultRoot ~</pre>Un utilizzo interessante di questa direttiva è la possibilità di dirottare un particolare utente in una directory diversa dalla propria home:<pre>DefaultRoot /tmp bob</pre>Oppure limitare l'accesso alla sola directory "ftp" nella home dell'utente che effettua il login:<pre>DefaultRoot ~/ftp</pre>Chiaramente questa directory va preliminarmente creata.
;MaxClients:Limita il numero di utenti che possono effettuare una connessione contemporanea:<pre>MaxClients 30</pre>
;MaxClientsPerHost:Limita il numero di connessioni per singolo client<pre>MaxClientsPerHost 50</pre>
 
Per una lista completa delle direttive potete fare riferimento alla documentazione ufficiale<sup>[[#Documentazione esterna|[2]]]</sup>.<br/>
Dopo aver modificato il file di configurazione è necessario riavviare il demone affinché le modifiche vengano prese in considerazione:
<pre>
<pre>
ServerName “proftp server”
# service proftpd restart
</pre>
</pre>
* ServerIdent — Imposta il messaggio di benvenuto
 
== FTP anonimo ==
La configurazione di un accesso anonimo al server FTP può essere molto comoda in particolari ambienti (es. rete aziendale) oppure quando si vuol permettere un accesso alle risorse senza che sia necessaria un'autenticazione.
 
L'abilitazione del'FTP anonimo (anonymous FTP) avviene attraverso la configurazione del file <code>proftpd.conf</code>. Nel prossimo esempio si permetterà l'accesso anonimo ad una directory e solo per spostarsi al suo interno, uploadare file e elencare i file presenti; non sarà possibile cancellare, rinominare, modificare o leggere file.
 
Aggiungere in fondo al file <code>proftpd.conf</code> le seguenti righe:
<pre>
<pre>
ServerIdent on “Welcome to proftp server”
<Anonymous ~ftp>
 
  <Limit LOGIN>
    Order allow,deny
    Allow from 192.168.0.0/16
    DenyAll
  </Limit>
   
  User                        ftp
  Group                        nogroup
  UserAlias                    anonymous ftp
 
  RequireValidShell            off
 
  MaxClients                  5
 
 
  <Directory *>
 
    <Limit ALL>
      DenyAll
    </Limit>
   
    <Limit LIST STOR STOU CWD PWD NOOP XCWD>
      AllowAll
    </Limit>
 
  </Directory>
 
</Anonymous>
</pre>
</pre>
* UseReverseDNS
 
;~ftp:Indica che l'accesso anonimo avverrà all'interno della directory "/srv/ftp" già creata di default. Questa directory ha come proprietari (utente:gruppo) "ftp:nogroup".
;LIMIT LOGIN: sezione in cui vengono specificati gli indirizzi/nomi che possono effettuare il login anonimo.
;Order allow,deny: se il login è consentito da "Allow", "Deny" non viene eseguita. Se il login non è permesso da "Allow", "Deny" viene eseguita.
;Allow from 192.168.0.0/16: consente un login proveniente solo dagli indirizzi 192.168.x.x .
; DenyAll: rifiuta tutti i login che non sono matchati da "Allow".
;User:indica l'utente con i cui permessi verranno eseguiti i comandi da ProFTPD. È consigliato non inserire mai "root". I file creati avranno come proprietario "ftp".
;Group: indica il gruppo con i cui verranno eseguiti i comandi da ProFTPD- È consigliato non inserire mai "root". I file creati avranno come gruppo proprietario "nogroup".
;UserAlias: Permette un login anche inserendo "anonymous" anziché "ftp". Ad esempio:<pre>$ ftp nome_o_IP_del_server</pre> e poi scrivendo "anonymous" (anziché "ftp") alla richiesta del login name.
;RequireValidShell: Permette o non permette il login all'utente la cui shell di login è elencata (o non elencata) in "/etc/shells". In questo caso va settata a "off" in quanto l'utente "ftp" non possiede una shell valida (questa è "/bin/false").
;MaxClients: numero massimo di client connessi.
; Limit ALL: impedisce a chiunque l'esecuzione di "ogni" comando FTP, a meno che non sia esplicitamente consentito da una direttiva seguente.
; Limit LIST STOR STOU CWD PWD NOOP XCWD: permette i comandi specificati. In particolare "STOR" che consente l'upload di un file, "LIST" che consente di ottenere una lista dei file/directory e "NOOP" per mantenere la connessione attiva.
 
Leggere anche le informazioni sulla configurazione di ''<Limit>''<sup>[[#Documentazione esterna|[3]]]</sup> e i comandi FTP supportati<sup>[[#Documentazione esterna|[4]]]</sup>.
 
Dopo aver modificato il file, eseguire il solito:
<pre>
# service proftpd restart
</pre>
 
Ora è possibile collegarsi al server, ad esempio, con:
<pre>
$ ftp 192.168.1.1
</pre>
in cui si è specificato l'indirizzo IP del server (ma analogamente si potrebbe indicare un [[FQDN]]). Apparirà:
<pre>
Connected to 192.168.1.1.
220 ProFTPD 1.3.5 Server (Debian) [::ffff:192.168.1.1]
Name (192.168.1.1): anonymous
331 Accesso anonimo ok, inviare il proprio indirizzo email completo come password
Password: pippo@pippolandia.it
</pre>
Si noti che la password inserita è valida solo ai fini del logging lato server. Si può inserire qualunque indirizzo (vero o inventato) o anche "localhost".
 
La precedente procedura può essere leggermente modificata per poter ottenere un FTP anonimo in una directory diversa da "/srv/ftp". Le uniche operazioni da compiere sono:
# Creare la directory (es. <code>/home/ftp-anonimo</code>)
# Fare in modo che abbia come utente:gruppo proprietari "ftp:nogroup":<pre># chown ftp:nogroup /home/ftp-anonimo</pre>
# Modificare la riga di "proftpd.conf" in:<pre><Anonymous /home/ftp-anonimo></pre>
 
== Quote ==
Le quote (''quota'') sono il meccanismo con cui ProFTPD impone dei limiti al numero di byte/file che possono essere inviati/trasferiti/scaricati da/al server FTP. Questo evita che le directory diventino luoghi in cui trovare un po' di tutto e, soprattutto, consumino senza alcun limite lo spazio disponibile sul disco.<br/>
In alternativa, il meccanismo delle quote può essere implementato dall'amministratore direttamente a livello di filesystem.
 
Per la gestione delle quote, ProFTPD utilizza il comando "ftpquota".
 
=== Le tabelle ===
ProFTPD gestisce le quote utilizzando due tabelle:
;''ftpquota.limittab'':permette a ProFTPD di conoscere che tipo di limite imporre e a chi (utente, gruppo, classe).
;''ftpquota.tallytab'':permette a ProFTPD di tener traccia dei byte/file trasferiti/inviati/scaricati dal server.
La loro creazione avviene con:
<pre>
<pre>
UseReverseDNS off
# ftpquota --create-table --table-path /etc/proftpd/ftpquota.limittab --type=limit
# ftpquota --create-table --table-path /etc/proftpd/ftpquota.tallytab --type=tally
</pre>
</pre>
* IdentLookups
 
;--type=''tipo'': necessario per creare una tabella di tipo "limit" o "tally"
;--table-path ''/path/tabella'': facoltativo. Se non si utilizza questa opzione, verrà creata la tabella nella directory corrente con il nome di default "ftpquota.limittab" o "ftpquota.tallytab" in base al tipo scelto.
 
=== Limiti ===
Le quote possono essere impostate sui byte trasferiti/inviati/scaricati dal server e/o sui file trasferiti/inviati/scaricati dal server. È importante sapere che:
* I byte/file trasferiti sono la somma dei byte/file inviati e dei byte/file scaricati
* Il limite predominante è il valore più basso impostato: se il limite di invio byte è 10MB e quello di scaricamento è di 20MB, non sarà possibile il download se si sono già raggiunti i 10MB in upload.
 
I limiti che è possibile impostare sono:
;File inviati: si utilizza l'opzione "--file-upload".
;File scaricati: si utilizza l'opzione "--file-download".
;File trasferiti: si utilizza l'opzione "--file-xfer".
 
;Byte inviati: si utilizza l'opzione "--byte-upload". Se non viene specificata l'opzione "--units", il numero indica i byte.
;Byte scaricati: si utilizza l'opzione "--byte-download". Se non viene specificata l'opzione "--units", il numero indica i byte.
;Byte trasferiti: si utilizza l'opzione "--byte-xfer". Se non viene specificata l'opzione "--units", il numero indica i byte.
 
==== Limiti hard e soft ====
Un limite "hard" o "soft" indica a ProFTPD come comportarsi se l'operazione che si sta svolgendo porta a superare il limite impostato. Influenza solo limiti di tipo byte-*.
;hard limit: l'operazione non andrà a buon fine se porta a superare la quota impostata.
;soft limit: l'operazione sarà consentita anche se porta a superare la quota impostata. Le successive operazioni che portano a superare la quota non saranno, però, consentite.
 
Un limite di tipo "hard" o "soft" si imposta con l'opzione "--limit-type". Di default si ha un hard limit.
 
=== Creazione ===
Per impostare una quota si deve aggiungere un record alla tabella "ftpquota.limittab". Nel successivo esempio di imposta una quota di 60 MB in upload per l'utente "nomeutente":
<pre>
<pre>
IdentLookups off
# ftpquota --add-record --type limit --limit-type hard --quota-type user --name nomeutente --bytes-upload 60 --units Mb --table-path /etc/proftpd/ftpquota.limittab
</pre>
</pre>
* DefaultRoot — Imposta la chroot directory di default
;--add-record: aggiunge un record alla tabella specificata.
;--type limit: indica che si sta operando sulla tabella "ftpquota.limittab".
;--limit-type hard: il limite sarà "hard".
;--quota-type user: necessario per operare sui limiti per gli utenti.
;--name ''nomeutente'': il nome dell'utente interessato dal limite imposto.
;--bytes-upload 60 --units Mb: il tipo di limite (byte in upload) espresso in Megabyte, in questo caso ci sarà un limite di 60MB.
;--table-path ''/etc/proftpd/ftpquota.limittab'': il percorso e il nome della tabella su cui si sta agendo.
 
È ovviamente possibile operare anche sui gruppi:
<pre>
<pre>
DefaultRoot ~
# ftpquota --add-record --type limit --limit-type hard --quota-type group --name nomegruppo --bytes-upload 100 --units Gb --table-path /etc/proftpd/ftpquota.limittab
</pre>
</pre>
* MaxClients — Limita il numero di utenti che possono effettuare una connessionen contemporanea
 
=== Visualizzazione ===
In qualunque momento è possibile visualizzare il contenuto delle tabelle con l'opzione "--show-records":
<pre>
<pre>
Maxclients 30
# ftpquota --show-records --type limit --units Mb --table-path /etc/proftpd/ftpquota.limittab
</pre>
</pre>
* MaxClientsPerHost — Limita il numero di connessioni per singolo client
ottenendo:
<pre>
<pre>
MaxClientsPerHost 50
-------------------------------------------
  Name: nomeutente
  Quota Type: User
  Per Session: False
  Limit Type: Hard
    Uploaded Mb:        60.00
    Downloaded Mb:      unlimited
    Transferred Mb:    unlimited
    Uploaded files:    unlimited
    Downloaded files:  unlimited
    Transferred files:  unlimited
</pre>
</pre>
Per una lista completa delle direttive potete fare riferimento alla documentazione ufficiale: http://www.proftpd.org/docs/directives/linked/by-name.html .<br/>
 
Dopo aver modificato il file di configurazione è necessario riavviare il demone affinchè le modifiche vengano prese in considerazione:
Allo stesso modo per la tabella <code>ftpquota.tallytab</code>:
<pre>
<pre>
# /etc/init.d/proftpd restart
# ftpquota --show-records --type tally --units Mb --table-path /etc/proftpd/ftpquota.tallytab
ftpquota: (empty table)
</pre>
</pre>
che, almeno inizialmente, è vuota.


====Note====
=== Direttive ===
Per abilitare la gestione delle quote è necessario impostare alcune direttive:
;QuotaEngine:<pre><IfModule mod_quotatab.c>&#10;QuotaEngine on&#10;</IfModule></pre>indispensabile per attivare l'engine di gestione delle quote.
;QuotaLimitTable:<pre>QuotaLimitTable file:/etc/proftpd/ftpquota.limittab</pre>direttiva necessaria per indicare la tabella "limit".
;QuotaTallyTable:<pre>QuotaTallyTable file:/etc/proftpd/ftpquota.tallytab</pre>idem come la precedente ma per la tabella "tally".
;QuotaDisplayUnits Kb|Mb|Gb:facoltativa. Indica la quota in Kilobyte, Megabyte, Gigabyte (anziché in byte, comportamento di default) se il client ne fa richiesta.
 
Per maggiori informazioni, leggere anche le seguenti pagine<sup>[[#Documentazione esterna|[6]]][[#Documentazione esterna|[7]]]</sup>
 
== Note ==
Il comportamento di default del server permette ad ogni utente di accedere via FTP solo alla propria directory home.
Il comportamento di default del server permette ad ogni utente di accedere via FTP solo alla propria directory home.
====Creare un certificato SSL per TLS====
 
== Amministrazione del server FTP ==
Uno strumento molto comodo per l'amministrazione di ProFTPD è '''proftpd-admin'''<sup>[[#Documentazione esterna|[5]]]</sup>.
È un'interfaccia web scritta in PHP, che per funzionare ha bisogno di un server LAMP (Apache, PHP, MySQL).
 
== Creare un certificato SSL per TLS ==
TLS è un protocollo che fornisce autenticazione e comunicazioni crittografate. Nell'utilizzo tipico con un server FTP si configura in modo che il server FTP stesso sia autenticato e che i client non lo siano.<br/>
TLS è un protocollo che fornisce autenticazione e comunicazioni crittografate. Nell'utilizzo tipico con un server FTP si configura in modo che il server FTP stesso sia autenticato e che i client non lo siano.<br/>
Per utilizzare TLS con ProFTPD dobbiamo creare un certificato SSL:
Per utilizzare TLS con ProFTPD dobbiamo creare un certificato SSL:
<pre>
<pre>
# apt-get install openssl
# apt-get install openssl
#mkdir /etc/proftpd/ssl
# mkdir /etc/proftpd/ssl
#openssl req -new -x509 -days 365 -nodes -out /etc/proftpd/ssl/proftpd.cert.pem -keyout /etc/proftpd/ssl/proftpd.key.pem
# openssl req -newkey rsa:2048 -x509 -days 365 -nodes -out /etc/proftpd/ssl/proftpd.cert.pem -keyout /etc/proftpd/ssl/proftpd.key.pem
</pre>
</pre>
Rispondete così alle domande che vi vengono poste:
Rispondete così alle domande che vi vengono poste:
Riga 73: Riga 233:
Email Address []: E-mail dell'amministratore
Email Address []: E-mail dell'amministratore
</pre>
</pre>
Per abilitare TLS in ProFTPD bisogna aprire il file /etc/proftpd/proftpd.conf e cercare la sezione che inizia con <tt>'''<IfModule mod_tls.c>'''</tt>:
Per abilitare TLS in ProFTPD bisogna aprire il file <code>/etc/proftpd/tls.conf</code> e decommentare le seguenti righe:
<pre>
<IfModule mod_tls.c>
TLSEngine off
</IfModule>
</pre>
Modificatela come segue:
<pre>
<pre>
<IfModule mod_tls.c>
<IfModule mod_tls.c>
Riga 92: Riga 246:
</IfModule>
</IfModule>
</pre>
</pre>
Se utilizzate la direttiva <tt>TLSRequired on</tt> saranno consentite solo le connessioni TLS, ma questo bloccherà gli utenti che utilizzano client FTP che non hanno il supporto TLS; suggerisco quindi, se ciò non viola le policies di sicurezza della vostra rete, di commentare la direttiva, in modo da permettere sia connessioni TLS sia connessioni non autenticate.<br/>
 
Decommentare anche la seguente riga in <code>proftpd.conf</code> :
<pre>
#
# This is used for FTPS connections
#
Include /etc/proftpd/tls.conf
</pre>
 
Se utilizzate la direttiva "<code>TLSRequired on</code>" saranno consentite solo le connessioni TLS, ma questo bloccherà gli utenti che utilizzano client FTP che non hanno il supporto TLS; suggerisco quindi, se ciò non viola le policy di sicurezza della vostra rete, di commentare la direttiva, in modo da permettere sia connessioni TLS sia connessioni non autenticate.<br/>
Infine riavviate il server:
Infine riavviate il server:
<pre>
<pre>
/etc/init.d/proftpd restart
# service proftpd restart
</pre>
</pre>
Se avete dei problemi con TLS o con le connessioni dai client potete dare un occhio al TLS log file: <tt>/var/log/proftpd/tls.log</tt>.
Se avete dei problemi con TLS o con le connessioni dai client potete dare un occhio al TLS log file: <code>/var/log/proftpd/tls.log</code>.
<br/>
 
<br/>
== Documentazione esterna ==
: [[Utente:Ferdybassi|Ferdybassi]]
[1] [http://www.proftpd.org/docs/ Ducumentazione ufficiale]<br/>
[2] [http://www.proftpd.org/docs/directives/linked/by-name.html Direttive di ProFTPD]<br/>
[3] [http://www.proftpd.org/docs/howto/Limit.html Configurare <Limit>]<br/>
[4] [http://www.proftpd.org/docs/howto/FTP.html Comandi FTP supportati da ProFTPD]<br/>
[5] [http://proftpd-adm.sourceforge.net/index.php proftpd-admin]<br/>
'''Quote'''<br/>
[6] [http://www.proftpd.org/docs/howto/Quotas.html Quotas HowTo]<br/>
[7] [http://www.proftpd.org/docs/utils/ftpquota.html Documentazione per ftpquota]<br/>
 
{{Autori
| Autore = [[Utente:Ferdybassi|Ferdybassi]]
| Verificata_da=
:[[Utente:S3v|S3v]] 11:17, 27 dic 2014 (CET)
|Estesa_da=
:[[Utente:S3v|S3v]] (FTP anonimo - Quote)
|Numero_revisori=1
}}
 
[[Categoria:FTP server]]

Versione attuale delle 20:54, 18 dic 2015

Edit-clear-history.png Attenzione. Questa guida è da considerarsi abbandonata, per via del tempo trascorso dall'ultima verifica.

Potrà essere resa obsoleta, previa segnalazione sul forum, se nessuno si propone per l'adozione.


Debian-swirl.png Versioni Compatibili

Debian 6 "squeeze"
Debian 7 "wheezy"
Debian 8 "jessie"

Introduzione

Installare un server FTP su Debian è un'operazione non particolarmente complessa, ma che merita alcune attenzioni. In questa guida utilizzerò ProFTPD, un FTP server scritto per essere utilizzato su Unix e sistemi operativi Unix-like come il nostro Linux.

Caratteristiche di ProFTPD

  • utilizza un singolo file di configurazione, con direttive molto familiari per chi è già abituato ad amministrare web server Apache;
  • permette la configurazione di file ".ftpaccess" e di server FTP virtuali in maniera simile ad Apache;
  • non permette comandi SITE EXEC, riducendo così lo stress da sicurezza dell'amministratore;
  • supporta IPv6.

Installazione di ProFTPD

Per installare il server proftpd basta lanciare i seguenti comandi da root:

# apt-get update
# apt-get install proftpd-basic

L'installer del server FTP vi chiederà in che modo intendere far girare proftpd, attraverso "inetd" o in modalità "standalone". Mi sento di consigliare la modalità "standalone" che, da quanto letto in rete, sembra la più adatta per siti FTP con traffico intenso o assai variabile.

Configurazione di ProFTPD Server

Il file di configurazione si trova in /etc/proftpd/proftpd.conf
Alcune direttive degne di nota sono le seguenti:

ServerName
Permette di indicare il nome che apparirà agli utenti:
ServerName “proftp server”
ServerIdent
Imposta il messaggio di benvenuto:
ServerIdent on “Welcome to proftp server”
UseReverseDNS
UseReverseDNS off
IdentLookups
IdentLookups off
DefaultRoot
Imposta la chroot directory di default (la home directory dell'utente che effettua il login)
DefaultRoot ~
Un utilizzo interessante di questa direttiva è la possibilità di dirottare un particolare utente in una directory diversa dalla propria home:
DefaultRoot /tmp bob
Oppure limitare l'accesso alla sola directory "ftp" nella home dell'utente che effettua il login:
DefaultRoot ~/ftp
Chiaramente questa directory va preliminarmente creata.
MaxClients
Limita il numero di utenti che possono effettuare una connessione contemporanea:
MaxClients 30
MaxClientsPerHost
Limita il numero di connessioni per singolo client
MaxClientsPerHost 50

Per una lista completa delle direttive potete fare riferimento alla documentazione ufficiale[2].
Dopo aver modificato il file di configurazione è necessario riavviare il demone affinché le modifiche vengano prese in considerazione:

# service proftpd restart

FTP anonimo

La configurazione di un accesso anonimo al server FTP può essere molto comoda in particolari ambienti (es. rete aziendale) oppure quando si vuol permettere un accesso alle risorse senza che sia necessaria un'autenticazione.

L'abilitazione del'FTP anonimo (anonymous FTP) avviene attraverso la configurazione del file proftpd.conf. Nel prossimo esempio si permetterà l'accesso anonimo ad una directory e solo per spostarsi al suo interno, uploadare file e elencare i file presenti; non sarà possibile cancellare, rinominare, modificare o leggere file.

Aggiungere in fondo al file proftpd.conf le seguenti righe:

<Anonymous ~ftp>

   <Limit LOGIN>
     Order allow,deny
     Allow from 192.168.0.0/16
     DenyAll
   </Limit>
     
   User                         ftp
   Group                        nogroup
   UserAlias                    anonymous ftp

   RequireValidShell            off

   MaxClients                   5
   

   <Directory *>
  
     <Limit ALL>
       DenyAll
     </Limit>
     
     <Limit LIST STOR STOU CWD PWD NOOP XCWD>
       AllowAll
     </Limit>

   </Directory>

</Anonymous>
~ftp
Indica che l'accesso anonimo avverrà all'interno della directory "/srv/ftp" già creata di default. Questa directory ha come proprietari (utente:gruppo) "ftp:nogroup".
LIMIT LOGIN
sezione in cui vengono specificati gli indirizzi/nomi che possono effettuare il login anonimo.
Order allow,deny
se il login è consentito da "Allow", "Deny" non viene eseguita. Se il login non è permesso da "Allow", "Deny" viene eseguita.
Allow from 192.168.0.0/16
consente un login proveniente solo dagli indirizzi 192.168.x.x .
DenyAll
rifiuta tutti i login che non sono matchati da "Allow".
User
indica l'utente con i cui permessi verranno eseguiti i comandi da ProFTPD. È consigliato non inserire mai "root". I file creati avranno come proprietario "ftp".
Group
indica il gruppo con i cui verranno eseguiti i comandi da ProFTPD- È consigliato non inserire mai "root". I file creati avranno come gruppo proprietario "nogroup".
UserAlias
Permette un login anche inserendo "anonymous" anziché "ftp". Ad esempio:
$ ftp nome_o_IP_del_server
e poi scrivendo "anonymous" (anziché "ftp") alla richiesta del login name.
RequireValidShell
Permette o non permette il login all'utente la cui shell di login è elencata (o non elencata) in "/etc/shells". In questo caso va settata a "off" in quanto l'utente "ftp" non possiede una shell valida (questa è "/bin/false").
MaxClients
numero massimo di client connessi.
Limit ALL
impedisce a chiunque l'esecuzione di "ogni" comando FTP, a meno che non sia esplicitamente consentito da una direttiva seguente.
Limit LIST STOR STOU CWD PWD NOOP XCWD
permette i comandi specificati. In particolare "STOR" che consente l'upload di un file, "LIST" che consente di ottenere una lista dei file/directory e "NOOP" per mantenere la connessione attiva.

Leggere anche le informazioni sulla configurazione di <Limit>[3] e i comandi FTP supportati[4].

Dopo aver modificato il file, eseguire il solito:

# service proftpd restart

Ora è possibile collegarsi al server, ad esempio, con:

$ ftp 192.168.1.1

in cui si è specificato l'indirizzo IP del server (ma analogamente si potrebbe indicare un FQDN). Apparirà:

Connected to 192.168.1.1.
220 ProFTPD 1.3.5 Server (Debian) [::ffff:192.168.1.1]
Name (192.168.1.1): anonymous
331 Accesso anonimo ok, inviare il proprio indirizzo email completo come password
Password: pippo@pippolandia.it

Si noti che la password inserita è valida solo ai fini del logging lato server. Si può inserire qualunque indirizzo (vero o inventato) o anche "localhost".

La precedente procedura può essere leggermente modificata per poter ottenere un FTP anonimo in una directory diversa da "/srv/ftp". Le uniche operazioni da compiere sono:

  1. Creare la directory (es. /home/ftp-anonimo)
  2. Fare in modo che abbia come utente:gruppo proprietari "ftp:nogroup":
    # chown ftp:nogroup /home/ftp-anonimo
  3. Modificare la riga di "proftpd.conf" in:
    <Anonymous /home/ftp-anonimo>

Quote

Le quote (quota) sono il meccanismo con cui ProFTPD impone dei limiti al numero di byte/file che possono essere inviati/trasferiti/scaricati da/al server FTP. Questo evita che le directory diventino luoghi in cui trovare un po' di tutto e, soprattutto, consumino senza alcun limite lo spazio disponibile sul disco.
In alternativa, il meccanismo delle quote può essere implementato dall'amministratore direttamente a livello di filesystem.

Per la gestione delle quote, ProFTPD utilizza il comando "ftpquota".

Le tabelle

ProFTPD gestisce le quote utilizzando due tabelle:

ftpquota.limittab
permette a ProFTPD di conoscere che tipo di limite imporre e a chi (utente, gruppo, classe).
ftpquota.tallytab
permette a ProFTPD di tener traccia dei byte/file trasferiti/inviati/scaricati dal server.

La loro creazione avviene con:

# ftpquota --create-table --table-path /etc/proftpd/ftpquota.limittab --type=limit
# ftpquota --create-table --table-path /etc/proftpd/ftpquota.tallytab --type=tally
--type=tipo
necessario per creare una tabella di tipo "limit" o "tally"
--table-path /path/tabella
facoltativo. Se non si utilizza questa opzione, verrà creata la tabella nella directory corrente con il nome di default "ftpquota.limittab" o "ftpquota.tallytab" in base al tipo scelto.

Limiti

Le quote possono essere impostate sui byte trasferiti/inviati/scaricati dal server e/o sui file trasferiti/inviati/scaricati dal server. È importante sapere che:

  • I byte/file trasferiti sono la somma dei byte/file inviati e dei byte/file scaricati
  • Il limite predominante è il valore più basso impostato: se il limite di invio byte è 10MB e quello di scaricamento è di 20MB, non sarà possibile il download se si sono già raggiunti i 10MB in upload.

I limiti che è possibile impostare sono:

File inviati
si utilizza l'opzione "--file-upload".
File scaricati
si utilizza l'opzione "--file-download".
File trasferiti
si utilizza l'opzione "--file-xfer".
Byte inviati
si utilizza l'opzione "--byte-upload". Se non viene specificata l'opzione "--units", il numero indica i byte.
Byte scaricati
si utilizza l'opzione "--byte-download". Se non viene specificata l'opzione "--units", il numero indica i byte.
Byte trasferiti
si utilizza l'opzione "--byte-xfer". Se non viene specificata l'opzione "--units", il numero indica i byte.

Limiti hard e soft

Un limite "hard" o "soft" indica a ProFTPD come comportarsi se l'operazione che si sta svolgendo porta a superare il limite impostato. Influenza solo limiti di tipo byte-*.

hard limit
l'operazione non andrà a buon fine se porta a superare la quota impostata.
soft limit
l'operazione sarà consentita anche se porta a superare la quota impostata. Le successive operazioni che portano a superare la quota non saranno, però, consentite.

Un limite di tipo "hard" o "soft" si imposta con l'opzione "--limit-type". Di default si ha un hard limit.

Creazione

Per impostare una quota si deve aggiungere un record alla tabella "ftpquota.limittab". Nel successivo esempio di imposta una quota di 60 MB in upload per l'utente "nomeutente":

# ftpquota --add-record --type limit --limit-type hard --quota-type user --name nomeutente --bytes-upload 60 --units Mb --table-path /etc/proftpd/ftpquota.limittab
--add-record
aggiunge un record alla tabella specificata.
--type limit
indica che si sta operando sulla tabella "ftpquota.limittab".
--limit-type hard
il limite sarà "hard".
--quota-type user
necessario per operare sui limiti per gli utenti.
--name nomeutente
il nome dell'utente interessato dal limite imposto.
--bytes-upload 60 --units Mb
il tipo di limite (byte in upload) espresso in Megabyte, in questo caso ci sarà un limite di 60MB.
--table-path /etc/proftpd/ftpquota.limittab
il percorso e il nome della tabella su cui si sta agendo.

È ovviamente possibile operare anche sui gruppi:

# ftpquota --add-record --type limit --limit-type hard --quota-type group --name nomegruppo --bytes-upload 100 --units Gb --table-path /etc/proftpd/ftpquota.limittab

Visualizzazione

In qualunque momento è possibile visualizzare il contenuto delle tabelle con l'opzione "--show-records":

# ftpquota --show-records --type limit --units Mb --table-path /etc/proftpd/ftpquota.limittab

ottenendo:

-------------------------------------------
  Name: nomeutente
  Quota Type: User
  Per Session: False
  Limit Type: Hard
    Uploaded Mb:        60.00
    Downloaded Mb:      unlimited
    Transferred Mb:     unlimited
    Uploaded files:     unlimited
    Downloaded files:   unlimited
    Transferred files:  unlimited

Allo stesso modo per la tabella ftpquota.tallytab:

# ftpquota --show-records --type tally --units Mb --table-path /etc/proftpd/ftpquota.tallytab
ftpquota: (empty table)

che, almeno inizialmente, è vuota.

Direttive

Per abilitare la gestione delle quote è necessario impostare alcune direttive:

QuotaEngine
<IfModule mod_quotatab.c>
QuotaEngine on
</IfModule>
indispensabile per attivare l'engine di gestione delle quote.
QuotaLimitTable
QuotaLimitTable file:/etc/proftpd/ftpquota.limittab
direttiva necessaria per indicare la tabella "limit".
QuotaTallyTable
QuotaTallyTable file:/etc/proftpd/ftpquota.tallytab
idem come la precedente ma per la tabella "tally".
QuotaDisplayUnits Kb|Mb|Gb
facoltativa. Indica la quota in Kilobyte, Megabyte, Gigabyte (anziché in byte, comportamento di default) se il client ne fa richiesta.

Per maggiori informazioni, leggere anche le seguenti pagine[6][7]

Note

Il comportamento di default del server permette ad ogni utente di accedere via FTP solo alla propria directory home.

Amministrazione del server FTP

Uno strumento molto comodo per l'amministrazione di ProFTPD è proftpd-admin[5]. È un'interfaccia web scritta in PHP, che per funzionare ha bisogno di un server LAMP (Apache, PHP, MySQL).

Creare un certificato SSL per TLS

TLS è un protocollo che fornisce autenticazione e comunicazioni crittografate. Nell'utilizzo tipico con un server FTP si configura in modo che il server FTP stesso sia autenticato e che i client non lo siano.
Per utilizzare TLS con ProFTPD dobbiamo creare un certificato SSL:

# apt-get install openssl
# mkdir /etc/proftpd/ssl
# openssl req -newkey rsa:2048 -x509 -days 365 -nodes -out /etc/proftpd/ssl/proftpd.cert.pem -keyout /etc/proftpd/ssl/proftpd.key.pem

Rispondete così alle domande che vi vengono poste:

Country Name (2 letter code) [AU]: IT
State or Province Name (full name) [Some-State]: Vostra_Provincia
Locality Name (eg, city) []: Vostra_Città
Organization Name (eg, company) [Internet Widgits Pty Ltd]: Vostra_Società
Organizational Unit Name (eg, section) []: Nome_Dipartimento (Esempio: Dipartimento IT)
Common Name (eg, YOUR name) []: FQDN del server (esempio: ftpserver.organizzazione.local)
Email Address []: E-mail dell'amministratore

Per abilitare TLS in ProFTPD bisogna aprire il file /etc/proftpd/tls.conf e decommentare le seguenti righe:

<IfModule mod_tls.c>
TLSEngine on
TLSLog /var/log/proftpd/tls.log
TLSProtocol SSLv23
TLSOptions NoCertRequest
TLSRSACertificateFile /etc/proftpd/ssl/proftpd.cert.pem
TLSRSACertificateKeyFile /etc/proftpd/ssl/proftpd.key.pem
TLSVerifyClient off
TLSRequired on
</IfModule>

Decommentare anche la seguente riga in proftpd.conf :

#
# This is used for FTPS connections
#
Include /etc/proftpd/tls.conf

Se utilizzate la direttiva "TLSRequired on" saranno consentite solo le connessioni TLS, ma questo bloccherà gli utenti che utilizzano client FTP che non hanno il supporto TLS; suggerisco quindi, se ciò non viola le policy di sicurezza della vostra rete, di commentare la direttiva, in modo da permettere sia connessioni TLS sia connessioni non autenticate.
Infine riavviate il server:

# service proftpd restart

Se avete dei problemi con TLS o con le connessioni dai client potete dare un occhio al TLS log file: /var/log/proftpd/tls.log.

Documentazione esterna

[1] Ducumentazione ufficiale
[2] Direttive di ProFTPD
[3] Configurare <Limit>
[4] Comandi FTP supportati da ProFTPD
[5] proftpd-admin
Quote
[6] Quotas HowTo
[7] Documentazione per ftpquota




Guida scritta da: Ferdybassi Swirl-auth40.png Debianized 40%
Estesa da:
S3v (FTP anonimo - Quote)
Verificata da:
S3v 11:17, 27 dic 2014 (CET)

Verificare ed estendere la guida | Cos'è una guida Debianized