982
contributi
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 < | 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 < | 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 | ||
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 | ||
# | # Imposto la visualizzazione di messaggi | ||
dirmessage_enable= | 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 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 | ||
#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 | |||
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 | ||
# Attivo gli utenti virtuali | |||
# Attivo gli | |||
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 < | 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</ | 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 < | 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 < | 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 == |
contributi