GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

Virtuelles Hosting mit vsftpd und MySQL auf Ubuntu 12.04

Vsftpd ist einer der sichersten und schnellsten FTP-Server für Linux. Normalerweise ist vsftpd so konfiguriert, dass es mit Systembenutzern funktioniert. Dieses Dokument beschreibt, wie Sie einen vsftpd-Server installieren, der statt echter Systembenutzer virtuelle Benutzer aus einer MySQL-Datenbank verwendet. Dies ist viel performanter und ermöglicht Tausende von FTP-Benutzern auf einem einzigen Rechner.

Für die Verwaltung der MySQL-Datenbank können Sie webbasierte Tools wie phpMyAdmin verwenden, die ebenfalls in diesem Howto installiert werden. phpMyAdmin ist eine komfortable grafische Oberfläche, was bedeutet, dass Sie sich nicht mit der Befehlszeile herumschlagen müssen.

Dieses Tutorial basiert auf Ubuntu 12.04. Sie sollten bereits ein einfaches Ubuntu 12.04-System eingerichtet haben.

Dieses Howto ist als praktischer Leitfaden gedacht; es deckt nicht die theoretischen Hintergründe ab. Sie werden in vielen anderen Dokumenten im Internet behandelt.

Dieses Dokument wird ohne jegliche Gewährleistung geliefert! Ich möchte sagen, dass dies nicht die einzige Möglichkeit ist, ein solches System einzurichten. Es gibt viele Wege, dieses Ziel zu erreichen, aber ich gehe diesen Weg. Ich gebe keine Garantie dafür, dass dies bei Ihnen funktioniert!

1 Vorbemerkung

In diesem Tutorial verwende ich den Hostnamen server1.example.com mit der IP-Adresse 192.168.0.100. Diese Einstellungen können für Sie unterschiedlich sein, daher müssen Sie sie gegebenenfalls ersetzen.

Da wir alle Schritte aus diesem Tutorial mit Root-Rechten ausführen müssen, können wir entweder allen Befehlen in diesem Tutorial die Zeichenfolge sudo voranstellen oder wir werden sofort root, indem wir

eingeben
sudo su 

2 Installieren Sie vsftpd, MySQL und phpMyAdmin

Vsftpd hat keine eingebaute MySQL-Unterstützung, daher müssen wir PAM verwenden, um uns bei der MySQL-Datenbank zu authentifizieren. Also installieren wir libpam-mysql zusätzlich zu vsftpd, MySQL und phpMyAdmin:

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

Ihnen werden die folgenden Fragen gestellt:

Neues Passwort für den MySQL „root“-Benutzer:<-- yourrootsqlpassword
Wiederholen Sie das Passwort für den MySQL „root“-Benutzer:<-- yourrootsqlpassword
Webserver zur automatischen Neukonfiguration:<-- apache2
Datenbank für phpmyadmin mit dbconfig-common konfigurieren? <-- No
LDAP Server Uniform Resource Identifier: <--  ENTER
Distinguished Name of the Search Base : <-- ENTER
Zu verwendende LDAP-Version: <-- 3
Zum lokalen Root-Datenbankadministrator machen: <-- Ja
Muss die LDAP-Datenbank eine Anmeldung erfordern? <-- Kein
LDAP-Konto für Root: <-- ENTER
LDAP-Root-Konto Passwort: <-- ldaprootpw

3 Erstellen Sie die MySQL-Datenbank für vsftpd

Jetzt erstellen wir eine Datenbank namens vsftpd und einen MySQL-Benutzer namens vsftpd, den der vsftpd-Daemon später verwenden wird, um sich mit der vsftpd-Datenbank zu verbinden:

mysql -u root -p

DATENBANK ERSTELLEN vsftpd;
AUSWAHL, EINFÜGEN, AKTUALISIEREN, LÖSCHEN, ERSTELLEN, DROP AUF vsftpd GEWÄHREN.* AUF 'vsftpd'@'localhost' IDENTIFIZIERT DURCH 'ftpdpass';
AUSWAHL, EINFÜGEN, AKTUALISIEREN, LÖSCHEN GEWÄHREN , ERSTELLEN, DROP ON vsftpd.* TO 'vsftpd'@'localhost.localdomain' IDENTIFIED BY 'ftpdpass';
FLUSH PRIVILEGES;

Ersetzen Sie die Zeichenfolge ftpdpass durch das Passwort, das Sie für den MySQL-Benutzer vsftpd verwenden möchten. Immer noch auf der MySQL-Shell erstellen wir die Datenbanktabelle, die wir brauchen (ja, es gibt nur eine Tabelle!):

USE vsftpd;

CREATE TABLE `accounts` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`username` VARCHAR( 30 ) NOT NULL ,
`pass` VARCHAR( 50 ) NOT NULL ,
/>EINZIGARTIG (
`Benutzername`
)
) ENGINE =MYISAM;

quit;

Wie Sie vielleicht bemerkt haben, mit dem Beenden; Befehl haben wir die MySQL-Shell verlassen und befinden uns wieder auf der Linux-Shell.

Übrigens (ich gehe davon aus, dass der Hostname Ihres FTP-Serversystems server1.example.com ist) Sie können auf phpMyAdmin unter http://server1.example.com/phpmyadmin/ zugreifen (Sie können auch die IP-Adresse anstelle von server1 verwenden .example.com) in einem Browser und melden Sie sich als Benutzer vsftpd an. Dann können Sie einen Blick in die Datenbank werfen. Später können Sie phpMyAdmin verwenden, um Ihren vsftpd-Server zu verwalten.

4 vsftpd konfigurieren

Zuerst erstellen wir einen nicht privilegierten Benutzer namens vsftpd (mit dem Homedir /home/vsftpd), der zur Gruppe nogroup gehört. Wir werden vsftpd unter diesem Benutzer ausführen, und die FTP-Verzeichnisse unserer virtuellen Benutzer befinden sich im Verzeichnis /home/vsftpd (z. B. /home/vsftpd/user1, /home/vsftpd/user2 usw.).

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

Dann erstellen wir eine Sicherungskopie der ursprünglichen /etc/vsftpd.conf-Datei und erstellen unsere eigene:

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

Die Datei sollte folgenden Inhalt haben:

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

Die Konfigurationsoptionen werden auf http://vsftpd.beasts.org/vsftpd_conf.html erklärt. Die wichtigen Optionen für unser virtuelles Setup sind chroot_local_user, guest_enable, guest_username, user_sub_token, local_root und virtual_use_local_privs.

Mit der Option user_config_dir können Sie ein Verzeichnis für benutzerspezifische Konfigurationsdateien angeben, die Teile der globalen Einstellungen außer Kraft setzen. Dies ist völlig optional und liegt bei Ihnen, wenn Sie diese Funktion verwenden möchten. Wir sollten dieses Verzeichnis jedoch jetzt erstellen:

mkdir /etc/vsftpd_user_conf

Jetzt müssen wir PAM so konfigurieren, dass es die MySQL-Datenbank verwendet, um unsere virtuellen FTP-Benutzer anstelle von /etc/passwd und /etc/shadow zu authentifizieren. Die PAM-Konfiguration für vsftpd befindet sich in /etc/pam.d/vsftpd. Wir erstellen eine Sicherungskopie der Originaldatei und erstellen eine neue wie folgt:

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

Bitte stellen Sie sicher, dass Sie das MySQL-Passwort durch Ihr eigenes ersetzen!

Danach starten wir vsftpd neu:

/etc/init.d/vsftpd restart

5 Erstellen Sie den ersten virtuellen Benutzer

Um die Datenbank zu füllen, können Sie die MySQL-Shell verwenden:

mysql -u root -p
USE vsftpd;

Jetzt erstellen wir den virtuellen Benutzer testuser mit dem Passwort secret (das mit der PASSWORD-Funktion von MySQL verschlüsselt gespeichert wird):

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

Das Heimatverzeichnis des Testbenutzers ist /home/vsftpd/testuser; Leider erstellt vsftpd dieses Verzeichnis nicht automatisch, wenn es nicht existiert. Deshalb erstellen wir es jetzt manuell und machen es zum Besitzer des vsftpd-Benutzers und der nogroup-Gruppe:

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

Öffnen Sie nun Ihr FTP-Client-Programm auf Ihrer Workstation (so etwas wie FileZilla oder FireFTP) und versuchen Sie, eine Verbindung herzustellen. Als Hostname verwenden Sie server1.example.com (oder die IP-Adresse des Systems), der Benutzername ist testuser und das Passwort ist secret.

Wenn Sie sich verbinden können - herzlichen Glückwunsch! Wenn nicht, ist etwas schief gelaufen.

6 Datenbankverwaltung

Für die meisten Leute ist es einfacher, wenn sie ein grafisches Frontend für MySQL haben; daher können Sie auch phpMyAdmin (in diesem Beispiel unter http://server1.example.com/phpmyadmin/) verwenden, um die vsftpd-Datenbank zu verwalten.

Wenn Sie einen Benutzer erstellen oder ändern, stellen Sie sicher, dass Sie die PASSWORD-Funktion von MySQL verwenden, um das Passwort dieses Benutzers zu verschlüsseln. Wenn Sie einen neuen virtuellen Benutzer erstellen, vergessen Sie bitte nicht, das Homedir dieses Benutzers auf der Shell zu erstellen, wie am Ende des vorherigen Kapitels gezeigt.

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

Ubuntu
  1. Virtuelle Benutzer und Domänen mit Postfix, Courier, MySQL und SquirrelMail (Ubuntu 14.04LTS)

  2. Virtuelles Hosting mit Proftpd und MySQL (inkl. Quote) auf Ubuntu 14.04LTS

  3. Virtuelle Benutzer und Domains mit Postfix, Courier, MySQL und SquirrelMail (Ubuntu 13.10)

  4. Virtuelles Hosting mit PureFTPd und MySQL (inkl. Kontingent- und Bandbreitenverwaltung) auf Ubuntu 7.10 (Gutsy Gibbon)

  5. Virtuelles Hosting mit Proftpd und MySQL (inkl. Quote) auf Ubuntu 8.04 LTS

Virtuelle Benutzer und Domains mit Postfix, Courier, MySQL und SquirrelMail (Ubuntu 12.10)

Virtuelles Hosting mit vsftpd und MySQL auf Ubuntu 12.10

Virtuelles Hosting mit PureFTPd und MySQL (inkl. Kontingent- und Bandbreitenverwaltung) auf Ubuntu 12.10

Virtuelles Hosting mit Proftpd und MySQL (inkl. Quote) auf Ubuntu 12.10

Virtuelles Hosting mit PureFTPd und MySQL (inkl. Kontingent- und Bandbreitenverwaltung) auf Ubuntu 14.04LTS

Virtuelles Hosting mit vsftpd und MySQL auf Debian Squeeze