Installare un server FTP con ProFTPD: differenze tra le versioni

+ revisione e estensione
(+ revisione e estensione)
Riga 1: Riga 1:
{{Versioni compatibili}}
{{Versioni compatibili}}
== Introduzione ==
== 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.<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.
<br/>
 
'''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 ==
== Installazione di ProFTPD ==
Per installare il server proftpd basta lanciare i seguenti comandi da root:
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 ==
 
== Configurazione di ProFTPD Server ==
Il file di configurazione si trova in <code>/etc/proftpd/proftpd.conf</code><br/>
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>
;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 CDUP CWD PWD XCWD XCUP>
      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)
;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") 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 CDUP CWD PWD XCWD XCUP: permette i comandi specificati. In particolare "STOR" che consente l'upload di un file e "LIST" che consente di ottenere una lista dei file/directory.
 
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>
<pre>
UseReverseDNS off
# service proftpd restart
</pre>
</pre>
* IdentLookups
 
Ora è possibile collegarsi al server, ad esempio, con:
<pre>
<pre>
IdentLookups off
$ ftp 192.168.1.1
</pre>
</pre>
* DefaultRoot — Imposta la chroot directory di default
in cui si è specificato l'indirizzo IP del server (ma analogamente si potrebbe indicare un [[FQDN]]). Apparirà:
<pre>
<pre>
DefaultRoot ~
Connected to 192.168.1.1.
</pre>
220 ProFTPD 1.3.5 Server (Debian) [::ffff:192.168.1.1]
Un utilizzo interessante di questa direttiva è la possibilità di dirottare un particolare utente in una directory diversa dalla propria home:
Name (192.168.1.1): anonymous
<pre>
331 Accesso anonimo ok, inviare il proprio indirizzo email completo come password
DefaultRoot /tmp bob
Password: pippo@pippolandia.it
</pre>
* 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: 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:
<pre>
# /etc/init.d/proftpd restart
</pre>
</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>


== Note ==
== 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.
== Amministrazione del server FTP ==
== Amministrazione del server FTP ==
Uno strumento molto comodo per l'amministrazione di ProFTPD è: http://sourceforge.net/projects/proftpd-admin/ .
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).
È un'interfaccia web scritta in PHP, che per funzionare ha bisogno di un server LAMP (Apache, PHP, MySQL).


Riga 69: Riga 125:
# 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 81: Riga 137:
Email Address []: E-mail dell'amministratore
Email Address []: E-mail dell'amministratore
</pre>
</pre>
Per abilitare TLS in ProFTPD bisogna aprire il file <code>/etc/proftpd/proftpd.conf</code> e cercare la sezione che inizia con <code>'''<IfModule mod_tls.c>'''</code>:
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 100: Riga 150:
</IfModule>
</IfModule>
</pre>
</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/>
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: <code>/var/log/proftpd/tls.log</code>.
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>.


== Documentazione esterna ==
[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://sourceforge.net/projects/proftpd-admin/ proftpd-admin]<br/>


{{Autori
{{Autori
| Autore = [[Utente:Ferdybassi|Ferdybassi]]
| Autore = [[Utente:Ferdybassi|Ferdybassi]]
| Verificata_da=
:[[Utente:S3v|S3v]] 11:17, 27 dic 2014 (CET)
|Estesa_da=
:[[Utente:S3v|S3v]] 11:17, 27 dic 2014 (CET) (FTP anonimo)
|Numero_revisori=1
}}
}}


[[Categoria:FTP server]]
[[Categoria:FTP server]]
6 999

contributi