Installare un server FTP con utenti virtuali su MySQL: differenze tra le versioni

Vai alla navigazione Vai alla ricerca
nessun oggetto della modifica
Nessun oggetto della modifica
 
(11 versioni intermedie di 5 utenti non mostrate)
Riga 1: Riga 1:
__TOC__
{{Versioni compatibili|Jessie}}
 
== Introduzione ==
== Introduzione ==
Dopo aver installato Apache ([[Installare un ambiente LAMP: Linux, Apache2, SSL, MySQL, PHP5]]) e configurato i Virtual Host ([[Apache e Virtual Hosts: configurare Apache2 per ospitare più siti web]]) abbiamo adesso bisogno di permettere ai proprietari dei domini ospitati sui Virtual Host di accedere al loro spazio web via FTP senza causare danni agli altri Virtual Host e senza avere la possibilità di gironzolare per il nostro server.<br/>
Dopo aver installato Apache ([[Installare un ambiente LAMP: Linux, Apache2, SSL, MySQL, PHP5]]) e configurato i Virtual Host ([[Apache e Virtual Hosts: configurare Apache2 per ospitare più siti web]]) abbiamo adesso bisogno di permettere ai proprietari dei domini ospitati sui Virtual Host di accedere al loro spazio web via FTP senza causare danni agli altri Virtual Host e senza avere la possibilità di gironzolare per il nostro server.<br/>
Riga 16: Riga 15:
Installiamo innanzitutto ProFTPD con il supporto per MySQL:
Installiamo innanzitutto ProFTPD con il supporto per MySQL:
<pre>
<pre>
# apt-get install proftpd proftpd-mod-mysql
# apt-get install proftpd-basic proftpd-mod-mysql
</pre>
</pre>
Per aumentare il tempo massimo prima che una connessione FTP vada in timeout per mancanza di attività possiamo aprire il file di configurazione:
Per aumentare il tempo massimo prima che una connessione FTP vada in timeout per mancanza di attività possiamo aprire il file di configurazione:
Riga 22: Riga 21:
# vi /etc/proftpd/proftpd.conf
# vi /etc/proftpd/proftpd.conf
</pre>
</pre>
e aumentare il valore della direttiva
e aumentare il valore della direttiva:
<pre>
<pre>
TimeoutNoTransfer 1200
TimeoutNoTransfer 1200
</pre>
Consiglio inoltre di aggiungere le seguenti direttive:
<pre>
#Abilita resume per upload
AllowStoreRestart on
DeleteAbortedStores off
#Abilita resume per il download
AllowRetrieveRestart on
</pre>
</pre>
Ora creiamo un utente e un gruppo di sistema, che useremo per mappare tutti gli utenti virtuali che saranno utilizzati da ProFTPD:
Ora creiamo un utente e un gruppo di sistema, che useremo per mappare tutti gli utenti virtuali che saranno utilizzati da ProFTPD:
Riga 45: Riga 53:
</pre>
</pre>
Ovviamente sostituite la stringa <code>password</code> con la password che volete assegnare al vostro utente MySQL.
Ovviamente sostituite la stringa <code>password</code> con la password che volete assegnare al vostro utente MySQL.
<br/><br/>
 
Già che siamo collegati alla shell di MySQL ne approfittiamo per creare anche tutte le tabelle che ci servono:
Già che siamo collegati alla shell di MySQL ne approfittiamo per creare anche tutte le tabelle che ci servono:
<pre>
<pre>
Riga 104: Riga 112:


=== /etc/proftpd/modules.conf ===
=== /etc/proftpd/modules.conf ===
Apriamo il file
Apriamo il file:
<pre>
<pre>
# vi /etc/proftpd/modules.conf
# vi /etc/proftpd/modules.conf
Riga 123: Riga 131:


=== /etc/proftpd/proftpd.conf ===
=== /etc/proftpd/proftpd.conf ===
Apriamo il file
Apriamo il file:
<pre>
<pre>
# vi /etc/proftpd/proftpd.conf
# vi /etc/proftpd/proftpd.conf
Riga 141: Riga 149:
[...]
[...]
</pre>
</pre>
e cambiamo la linea
e cambiamo la linea:
<pre>
<pre>
AuthOrder                      mod_auth_pam.c mod_auth_unix.c
AuthOrder                      mod_auth_pam.c mod_auth_unix.c
</pre>
</pre>
in
in:
<pre>
<pre>


Riga 315: Riga 323:
* ''name'': il nome dell'utente FTP virtuale (es: esempio-it)
* ''name'': il nome dell'utente FTP virtuale (es: esempio-it)
* ''quota_type'': user o group. Normalmente useremo ''user''
* ''quota_type'': user o group. Normalmente useremo ''user''
* ''per_session'': true o false. true significa che la quota limite è valida per una singola sessione: se l'utente effettua un logout e un nuovo login la quota si azzera. false significa che l'utente ha a disposizione la quota stabilita
* ''per_session'': true o false. ''true'' significa che la quota limite è valida per una singola sessione: se l'utente effettua un logout e un nuovo login la quota si azzera. ''false'' significa che l'utente ha a disposizione la quota stabilita
* ''limit_type'': hard o soft. Un hard quota limit non permette eccezioni, mentre un soft quota limit può temporaneamente essere superato. Normalmente viene usato hard
* ''limit_type'': hard o soft. Un hard quota limit non permette eccezioni, mentre un soft quota limit può temporaneamente essere superato. Normalmente viene usato hard
* ''bytes_in_avail'': limite di upload in bytes. 0 significa senza limite
* ''bytes_in_avail'': limite di upload in bytes. 0 significa senza limite
* ''bytes_out_avail'': limite di download in bytes. 0 significa senza limite
* ''bytes_out_avail'': limite di download in bytes. 0 significa senza limite
* ''bytes_xfer_avail'': limite di transfer bytes. E' la quantità massima di bytes che un utente può uploadare o downloadare. 0 significa senza limite
* ''bytes_xfer_avail'': limite di transfer bytes. È la quantità massima di bytes che un utente può uploadare o downloadare. 0 significa senza limite
* ''files_in_avail'': numero limite di file uploadabili. 0 significa senza limite
* ''files_in_avail'': numero limite di file uploadabili. 0 significa senza limite
* ''files_out_avail'': numero limite di file scaricabili. 0 significa senza limite
* ''files_out_avail'': numero limite di file scaricabili. 0 significa senza limite
Riga 342: Riga 350:
* ''Porta'': 21
* ''Porta'': 21
Provate a caricare un file e controllate eventuali messaggi di errore.
Provate a caricare un file e controllate eventuali messaggi di errore.
<br/><br/>
 
Una volta completato l'upload, fate login come root sulla console del server e spostatevi nella DocumentRoot del sito www.esempio.it:
Una volta completato l'upload, fate login come root sulla console del server e spostatevi nella DocumentRoot del sito www.esempio.it:
<pre>
<pre>
Riga 351: Riga 359:


== FTP anonimo ==
== FTP anonimo ==
E' possibile creare anche un account ftp anonimo, cioè un account ftp che chiunque possa usare senza una password, in questo modo.
È possibile creare anche un account ftp anonimo, cioè un account ftp che chiunque possa usare senza una password, in questo modo.
<br/>
<br/>
Creiamo innanzitutto un utente, un gruppo di sistema e una home directory:
Creiamo innanzitutto un utente, un gruppo di sistema e una home directory:
Riga 366: Riga 374:
Infine apriamo il file di configurazione <code>/etc/proftpd/proftpd.conf</code> e aggiungiamo le direttive:
Infine apriamo il file di configurazione <code>/etc/proftpd/proftpd.conf</code> e aggiungiamo le direttive:
<pre>
<pre>
vi /etc/proftpd/proftpd.conf
# vi /etc/proftpd/proftpd.conf
</pre>
</pre>
<pre>
<pre>
Riga 413: Riga 421:
Riavviamo il servizio:
Riavviamo il servizio:
<pre>
<pre>
/etc/init.d/proftpd restart
# /etc/init.d/proftpd restart
</pre>
</pre>
e verifichiamo che gli utenti anonimi possano ora effettuare il login.
e verifichiamo che gli utenti anonimi possano ora effettuare il login.
<br/>
<br/>
L'impostazione data prevede che gli utenti anonimi possano:
L'impostazione data prevede che gli utenti anonimi possano:
* scaricare i file messi in /var/www/anonymous_ftp
* scaricare i file messi in <code>/var/www/anonymous_ftp</code>
* caricare i file nella directory /var/www/anonymous_ftp/incoming
* caricare i file nella directory <code>/var/www/anonymous_ftp/incoming</code>
Una volta che un file è stato caricato, nessuno può leggerlo o scaricarlo prima che un amministratore lo sposti nella directory /var/www/anonymous_ftp per renderlo disponibile a tutti.
Una volta che un file è stato caricato, nessuno può leggerlo o scaricarlo prima che un amministratore lo sposti nella directory <code>/var/www/anonymous_ftp</code> per renderlo disponibile a tutti.


== Configurazione del Firewall ==
== Configurazione del Firewall ==
Se il server FTP è protetto da un firewall iptables occorre abilitare la direttiva PassivePorts:
<pre>
# nano /etc/proftpd/proftdp.conf
</pre>
in questo modo:
<pre>
PassivePorts 60000 65000
</pre>
In questo modo abbiamo istruito ProFTPD a utilizzare uno specifico range di porte dinamiche per le transazioni FTP. Lo stesso range va abilitato nello script del nostro firewall:
<pre>
-A INPUT -m state --state NEW -m tcp -p tcp --dport 60000:65000 -j ACCEPT
</pre>
Un riavvio del demone FTP e dello script del firewall completerà l'opera.
{{Autori
| Autore = [[Utente:Ferdybassi|Ferdybassi]] 19:40, 8 nov 2010 (CET)
|Verificata_da=
: lula 19:00, 29 dec 2016 (CET)
|Numero_revisori = 1
}}


<br/><br/>
--[[Utente:Ferdybassi|Ferdybassi]] 19:40, 8 nov 2010 (CET)
[[Categoria:FTP server]]
[[Categoria:FTP server]]
6

contributi

Menu di navigazione