GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Hosting virtuale con vsftpd e MySQL su Ubuntu 12.04

Vsftpd è uno dei server FTP più sicuri e veloci per Linux. Di solito vsftpd è configurato per funzionare con gli utenti del sistema. Questo documento descrive come installare un server vsftpd che utilizza utenti virtuali da un database MySQL invece di utenti del sistema reale. Questo è molto più performante e permette di avere migliaia di utenti ftp su una singola macchina.

Per l'amministrazione del database MySQL è possibile utilizzare strumenti web based come phpMyAdmin che verranno installati anche in questo howto. phpMyAdmin è una comoda interfaccia grafica che significa che non devi scherzare con la riga di comando.

Questo tutorial è basato su Ubuntu 12.04. Dovresti già aver configurato un sistema Ubuntu 12.04 di base.

Questo howto vuole essere una guida pratica; non copre le basi teoriche. Sono trattati in molti altri documenti nel Web.

Questo documento viene fornito senza garanzie di alcun tipo! Voglio dire che questo non è l'unico modo per creare un sistema del genere. Ci sono molti modi per raggiungere questo obiettivo, ma questo è il modo in cui prendo. Non garantisco che questo funzionerà per te!

1 Nota preliminare

In questo tutorial utilizzo l'hostname server1.example.com con l'indirizzo IP 192.168.0.100. Queste impostazioni potrebbero differire per te, quindi devi sostituirle dove appropriato.

Poiché dobbiamo eseguire tutti i passaggi di questo tutorial con i privilegi di root, possiamo anteporre tutti i comandi in questo tutorial con la stringa sudo, oppure diventare root in questo momento digitando

sudo su 

2 Installa vsftpd, MySQL e phpMyAdmin

Vsftpd non ha un supporto MySQL integrato, quindi dobbiamo usare PAM per autenticarci sul database MySQL. Quindi installiamo libpam-mysql oltre a vsftpd, MySQL e phpMyAdmin:

apt-get install vsftpd libpam-mysql mysql-server mysql-client phpmyadmin libpam-ldap

Ti verranno poste le seguenti domande:

Nuova password per l'utente "root" di MySQL:<-- yourrootsqlpassword
Ripeti la password per l'utente "root" di MySQL:<-- yourrootsqlpassword
Server Web da riconfigurare automaticamente:<-- apache2
Configurare il database per phpmyadmin con dbconfig-common? <-- No
Identificatore risorsa uniforme del server LDAP: <--  ENTER
Nome distinto della base di ricerca: <-- ENTER
Versione LDAP da utilizzare: <-- 3
Rendi l'amministratore del database locale root: <-- Sì
Il database LDAP richiede l'accesso? <-- Nessun
account LDAP per root: <-- ENTER
password account root LDAP: <-- ldaprootpw

3 Creare il database MySQL per vsftpd

Ora creiamo un database chiamato vsftpd e un utente MySQL chiamato vsftpd che il demone vsftpd utilizzerà in seguito per connettersi al database vsftpd:

mysql -u root -p

CREATE DATABASE vsftpd;
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON vsftpd.* A 'vsftpd'@'localhost' IDENTIFICATO DA 'ftpdpass';
GRANT SELECT, INSERT, UPDATE, DELETE , CREATE, DROP ON vsftpd.* IN 'vsftpd'@'localhost.localdomain' IDENTIFICATO DA 'ftpdpass';
PRIVILEGI FLUSH;

Sostituisci la stringa ftpdpass con la password che desideri utilizzare per l'utente MySQL vsftpd. Sempre sulla shell MySQL, creiamo la tabella del database di cui abbiamo bisogno (sì, c'è solo una tabella!):

USE vsftpd;

CREATE TABLE `accounts` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`username` VARCHAR( 30 ) NOT NULL ,
`pass` VARCHAR( 50 ) NOT NULL ,
UNICO (
`nome utente`
)
) MOTORE =MYISAM;

quit;

Come avrai notato, con l'abbandono; comando abbiamo lasciato la shell MySQL e siamo tornati sulla shell Linux.

A proposito, (suppongo che il nome host del tuo sistema server ftp sia server1.example.com) puoi accedere a phpMyAdmin sotto http://server1.example.com/phpmyadmin/ (puoi anche usare l'indirizzo IP invece di server1 .example.com) in un browser e accedi come utente vsftpd. Quindi puoi dare un'occhiata al database. Successivamente puoi usare phpMyAdmin per amministrare il tuo server vsftpd.

4 Configura vsftpd

Per prima cosa creiamo un utente non privilegiato chiamato vsftpd (con la homedir /home/vsftpd) appartenente al gruppo nogroup. Eseguiremo vsftpd sotto questo utente e le directory FTP dei nostri utenti virtuali saranno nella directory /home/vsftpd (ad es. /home/vsftpd/user1, /home/vsftpd/user2, ecc.).

useradd --home /home/vsftpd --gid nogroup -m --shell /bin/false vsftpd

Quindi facciamo un backup del file originale /etc/vsftpd.conf e creiamo il nostro:

cp /etc/vsftpd.conf /etc/vsftpd.conf_orig
cat /dev/null> /etc/vsftpd.conf
vi /etc/vsftpd.conf

Il file dovrebbe avere i seguenti contenuti:

listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
nopriv_user=vsftpd
chroot_local_user=YES
secure_chroot_dir=/var/run/vsftpd
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/vsftpd.pem
guest_enable=YES
guest_username=vsftpd
local_root=/home/vsftpd/$USER
user_sub_token=$USER
virtual_use_local_privs=YES
user_config_dir=/etc/vsftpd_user_conf

Le opzioni di configurazione sono spiegate su http://vsftpd.beasts.org/vsftpd_conf.html. Le opzioni importanti per la nostra configurazione virtuale sono chroot_local_user, guest_enable, guest_username, user_sub_token, local_root e virtual_use_local_privs.

Con l'opzione user_config_dir è possibile specificare una directory per i file di configurazione per utente che sovrascrivono parti delle impostazioni globali. Questo è totalmente facoltativo e dipende da te se desideri utilizzare questa funzione. Tuttavia, dovremmo creare quella directory ora:

mkdir /etc/vsftpd_user_conf

Ora dobbiamo configurare PAM in modo che utilizzi il database MySQL per autenticare i nostri utenti FTP virtuali invece di /etc/passwd e /etc/shadow. La configurazione PAM per vsftpd è in /etc/pam.d/vsftpd. Facciamo un backup del file originale e ne creiamo uno nuovo come questo:

cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd_orig
cat /dev/null> /etc/pam.d/vsftpd
vi /etc/pam.d/vsftpd

auth required pam_mysql.so user=vsftpd passwd=ftpdpass host=localhost db=vsftpd table=accounts usercolumn=username passwdcolumn=pass crypt=2
account required pam_mysql.so user=vsftpd passwd=ftpdpass host=localhost db=vsftpd table=accounts usercolumn=username passwdcolumn=pass crypt=2

Assicurati di sostituire la password MySQL con la tua!

Successivamente, riavviamo vsftpd:

/etc/init.d/vsftpd restart

5 Crea il primo utente virtuale

Per popolare il database puoi usare la shell MySQL:

mysql -u root -p
USE vsftpd;

Ora creiamo l'utente virtuale testuser con la password segreta (che verrà archiviata crittografata utilizzando la funzione PASSWORD di MySQL):

INSERT INTO accounts (username, pass) VALUES('testuser', PASSWORD('secret'));
quit;

la directory home di testuser è /home/vsftpd/testuser; sfortunatamente vsftpd non crea automaticamente quella directory se non esiste. Pertanto lo creiamo manualmente ora e lo rendiamo di proprietà dell'utente vsftpd e del gruppo nogroup:

mkdir /home/vsftpd/testuser
chown vsftpd:nogroup /home/vsftpd/testuser

Ora apri il tuo programma client FTP sulla tua stazione di lavoro (qualcosa come FileZilla o FireFTP) e prova a connetterti. Come nome host utilizzi server1.example.com (o l'indirizzo IP del sistema), il nome utente è testuser e la password è segreta.

Se riesci a connetterti, congratulazioni! In caso contrario, qualcosa è andato storto.

6 Amministrazione del database

Per la maggior parte delle persone è più facile se hanno un front-end grafico per MySQL; quindi puoi anche usare phpMyAdmin (in questo esempio sotto http://server1.example.com/phpmyadmin/) per amministrare il database vsftpd.

Ogni volta che crei o modifichi un utente, assicurati di utilizzare la funzione PASSWORD di MySQL per crittografare la password di quell'utente. Inoltre, quando crei un nuovo utente virtuale, non dimenticare di creare la directory home di quell'utente sulla shell, come mostrato alla fine del capitolo precedente.

  • vsftpd:http://vsftpd.beasts.org/
  • Ubuntu:http://www.ubuntu.com/

Ubuntu
  1. Utenti virtuali e domini con Postfix, Courier, MySQL e SquirrelMail (Ubuntu 14.04LTS)

  2. Hosting virtuale con Proftpd e MySQL (quota inclusa) su Ubuntu 14.04LTS

  3. Utenti e domini virtuali con Postfix, Courier, MySQL e SquirrelMail (Ubuntu 13.10)

  4. Hosting virtuale con PureFTPd e MySQL (incl. Gestione della quota e della larghezza di banda) su Ubuntu 7.10 (Gutsy Gibbon)

  5. Hosting virtuale con Proftpd e MySQL (quota inclusa) su Ubuntu 8.04 LTS

Utenti e domini virtuali con Postfix, Courier, MySQL e SquirrelMail (Ubuntu 12.10)

Hosting virtuale con vsftpd e MySQL su Ubuntu 12.10

Hosting virtuale con PureFTPd e MySQL (incl. Quota e gestione della larghezza di banda) su Ubuntu 12.10

Hosting virtuale con Proftpd e MySQL (quota inclusa) su Ubuntu 12.10

Hosting virtuale con PureFTPd e MySQL (incl. quota e gestione della larghezza di banda) su Ubuntu 14.04LTS

Hosting virtuale con vsftpd e MySQL su Debian Squeeze