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

Vai alla navigazione Vai alla ricerca
m
correzione link pacchetti esterni
m (correzione link pacchetti esterni)
(17 versioni intermedie di 4 utenti non mostrate)
Riga 1: Riga 1:
{{Versioni compatibili|Lenny|Squeeze|Wheezy|Jessie}}
== Introduzione ==
== Introduzione ==
Tra i vari server FTP disponibili in Debian, VSFTPD è a mio parere quello più snello, sicuro e prestazionale; inoltre, come ulteriore garanzia, è il server FTP scelto da Red Hat e consigliato da IBM.
Tra i vari server FTP disponibili in Debian, VSFTPD è a mio parere quello più snello, sicuro e prestazionale; inoltre, come ulteriore garanzia, è il server FTP scelto da Red Hat e consigliato da IBM.
Riga 28: Riga 29:


== Creazione di un database per VSFTPD ==
== Creazione di un database per VSFTPD ==
Il nostro demone FTP è già in funzione, ma non è ancora collegato ad alcun database MySQL. Quindi apriamo la shell di MySQL e creiamo il nostro database <tt>vsftpd</tt>, con proprietario un utente <tt>vsftpd</tt> e password <tt>ftpdpass</tt>:
Il nostro demone FTP è già in funzione, ma non è ancora collegato ad alcun database MySQL. Quindi apriamo la shell di MySQL e creiamo il nostro database <code>vsftpd</code>, con proprietario un utente <code>vsftpd</code> e password <code>ftpdpass</code>:
<pre>
<pre>
# mysql -u root -p
# mysql -u root -p
Riga 38: Riga 39:
FLUSH PRIVILEGES;
FLUSH PRIVILEGES;
</pre>
</pre>
sostituendo ovviamente la stringa <tt>ftpdpass</tt> con la password che vogliamo utilizzare.
sostituendo ovviamente la stringa <code>ftpdpass</code> con la password che vogliamo utilizzare.
<br/>
<br/>
Ora che abbiamo il database dobbiamo creare la tabella per memorizzare gli utenti virtuali del nostro server FTP. Restando sempre nella shell di MySQL diamo quindi i seguenti comandi:
Ora che abbiamo il database dobbiamo creare la tabella per memorizzare gli utenti virtuali del nostro server FTP. Restando sempre nella shell di MySQL diamo quindi i seguenti comandi:
Riga 74: Riga 75:


# Disabilito FTP anonimo
# Disabilito FTP anonimo
nopriv_user=vsftpd
anonymous_enable=NO
anonymous_enable=NO
anon_upload_enable=NO
#anon_upload_enable=NO
anon_mkdir_write_enable=NO
#anon_mkdir_write_enable=NO
anon_other_write_enable=NO
#anon_other_write_enable=NO


# Impedisco la visualizzazione di messaggi
# Imposto la visualizzazione di messaggi
dirmessage_enable=NO
dirmessage_enable=YES
#force_dot_files=NO
#force_dot_files=NO


Riga 96: Riga 96:
connect_from_port_20=YES
connect_from_port_20=YES


Abilito utenti locali e/o virtuali
# Abilito le porte passive
pasv_enable=YES
pasv_min_port=60000
pasv_max_port=65000
pasv_addr_resolve=YES
 
# Abilito utenti locali e/o virtuali
local_enable=YES
local_enable=YES
local_umask=022
local_umask=022
max_login_fails=3
max_login_fails=3
max_per_ip=4
max_per_ip=4
# Senza il server sarebbe read-only
write_enable=YES


# Definisco il sistema di autenticazione
# Definisco il sistema di autenticazione
Riga 110: Riga 118:
# Imposto il banner di benvenuto
# Imposto il banner di benvenuto
ftpd_banner=EasyLAB Doc FTP Server
ftpd_banner=EasyLAB Doc FTP Server
orce_dot_files=yes
#force_dot_files=yes


# I file caricati hanno proprietario www-data
# I file caricati hanno proprietario www-data
Riga 122: Riga 130:
chroot_local_user=YES
chroot_local_user=YES
secure_chroot_dir=/var/run/vsftpd
secure_chroot_dir=/var/run/vsftpd
#user_sub_token=$USER
user_sub_token=$USER
allow_writeable_chroot=YES
local_root=/home/vsftpd/$USER


# Mappo gli utenti verso un utente locale
# Mappo gli utenti verso un utente locale
virtual_use_local_privs=YES
virtual_use_local_privs=YES


# Senza il server sarebbe read-only
# Attivo gli utenti virtuali
write_enable=YES
 
# Attivo gli utentivirtuali
guest_enable=YES
guest_enable=YES


# Ogni utente viene mappato come vsftpd
# Ogni utente viene mappato come vsftpd
guest_username=vsftpd
guest_username=vsftpd
nopriv_user=vsftpd




Riga 150: Riga 156:
L'elenco delle direttive di VSFTPD con una spiegazione dettagliata del significato è presente sul sito ufficiale: [https://security.appspot.com/vsftpd/vsftpd_conf.html vsftpd.conf]
L'elenco delle direttive di VSFTPD con una spiegazione dettagliata del significato è presente sul sito ufficiale: [https://security.appspot.com/vsftpd/vsftpd_conf.html vsftpd.conf]
<br/>
<br/>
Una delle direttive specificate in <tt>vsftpd.conf</tt> è <tt>user_config_dir</tt>, che abbiamo impostato a <tt>/etc/vsftpd/user_conf</tt>. Questo parametro dice a VSFTPD dove cercare le impostazioni specifiche per ogni utente ed è il modo più semplice per avere una home diversa per ognuno di loro, ma anche per poter avere più users con la stessa home.
Una delle direttive specificate in <code>vsftpd.conf</code> è <code>user_config_dir</code>, che abbiamo impostato a <code>/etc/vsftpd/user_conf</code>. Questo parametro dice a VSFTPD dove cercare le impostazioni specifiche per ogni utente ed è il modo più semplice per avere una home diversa per ognuno di loro, ma anche per poter avere più users con la stessa home.
<br/>
<br/>
Assicuriamoci quindi di creare la directory che conterrà le configurazioni specifiche:
Assicuriamoci quindi di creare la directory che conterrà le configurazioni specifiche:
Riga 161: Riga 167:
download_enable=YES
download_enable=YES
local_root=/var/www/sitoweb
local_root=/var/www/sitoweb
</pre>
Impostiamo i permessi corretti:
<pre>
# chown -R vsftpd:www-data /var/www/sitoweb
</pre>
</pre>


== Connessione al database MySQL ==
== Connessione al database MySQL ==
Come ultima cosa dobbiamo istruire il nostro VSFTPD affinchè non cerchi gli utenti in </etc/passwd</tt>, ma nel database che abbiamo creato. Innanzitutto creiamo una copia di backup del file di configurazione, quindi ne impostiamo uno personalizzato:
Come ultima cosa dobbiamo istruire il nostro VSFTPD affinchè non cerchi gli utenti in <code>/etc/passwd</code>, ma nel database che abbiamo creato. Innanzitutto creiamo una copia di backup del file di configurazione, quindi ne impostiamo uno personalizzato:
<pre>
<pre>
# cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd_orig
# cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd_orig
Riga 181: Riga 191:
# apt-get install libgcc1 lib32gcc1 libx32gcc1 libpam-ldap
# apt-get install libgcc1 lib32gcc1 libx32gcc1 libpam-ldap
</pre>
</pre>
Non preoccupatevi della configurazione di <tt>libpam-ldap</tt> e lasciate tutte le impostazioni di default, a meno che non abbiate un server OpenLDAP attivo sulla macchina.
Non preoccupatevi della configurazione di <code>libpam-ldap</code> e lasciate tutte le impostazioni di default, a meno che non abbiate un server OpenLDAP attivo sulla macchina.
<br/>
<br/>
Alla fine di tutto riavviamo il nostro server:
Alla fine di tutto riavviamo il nostro server:
Riga 196: Riga 206:
USE vsftpd;
USE vsftpd;
</pre>
</pre>
Creeremo un utente chiamato <tt>testuser</tt> con password <tt>secret</tt>:
Creeremo un utente chiamato <code>testuser</code> con password <code>secret</code>:
<pre>
<pre>
INSERT INTO accounts (username, pass, homedir) VALUES('testuser', PASSWORD('secret'), '/var/www/testuser');
INSERT INTO accounts (username, pass, homedir) VALUES('testuser', PASSWORD('secret'), '/var/www/testuser');
Riga 271: Riga 281:
rsa_cert_file=/etc/vsftpd/ssl/vsftpd.pem
rsa_cert_file=/etc/vsftpd/ssl/vsftpd.pem
</pre>
</pre>
Con un riavvio del server:
<pre>
# /etc/init.d/vsftpd restart
</pre>
rendiamo attive le modifiche.
<br/>
Da adesso sarà possibile configurare il nostro client FTP per utilizzare sessioni crittate.<br>
Tramite uno script perl<sup>[[#Collegamenti esterni|[1]]]</sup> è possibile gestire facilmente le utenze.
Il software mantiene allineato il database con i relativi file di configurazione necessario per ogni utente.
== Collegamenti esterni ==
[1] [https://github.com/bogomips/syncFtp.pl script perl] <br/>


== Bibliografia ==
== Bibliografia ==
982

contributi

Menu di navigazione