Home Hosters Blog Virtuelle FTP User per MySQL verwalten

Virtuelle FTP User per MySQL verwalten Drucken

Es kann für Hoster durchaus sinnvoll sein, nicht jedem User ein eigenes Systemkonto zuzuteilen. Dieser Artikel zeigt Ihnen, wie Sie virtuelle FTP User in einer MySQL Datenbank speichern und diese dem System via PAM zur Verfügung stellen. Der FTP Server ist in diesem Fall vsftpd.

 

 

1.) Vorarbeiten

Als erstes wird folgender Ordner angelegt:  /etc/vsftpd/vsftpd_user_conf

Weiterhin muss ein User vsftpd angelegt werden. ('adduser vsftpd') Der User braucht keine Shell und kein

Login. Dieser User benutzen wir später als Wirt für die virtuellen FTP-User.

2.) Datenbank anlegen

Nun wird eine Datenbank erstellt in welcher die virtuellen FTP Konten verwaltet werden sollen.
User des Programms isp4you können diesen Punkt überspringen ab Version 2.0 sind die entsprechenden
MySQL Tablespaces bereits angelegt. Zu finden in der Datenbank isp4you mit den Namen passwd und passwd_logs

--
-- Table structure for table `passwd`
--

CREATE TABLE `passwd` (
`id` int(11) NOT NULL auto_increment,
`dom_id` int(11) default NULL,
`username` char(255) default NULL,
`passwd` char(80) default NULL,
`rootdir` char(255) default NULL,
`status` char(1) NOT NULL default 'A',
PRIMARY KEY  (`id`)
) ENGINE=MyISAM;

--
-- Table structure for table `passwd_logs`
--

DROP TABLE IF EXISTS `passwd_logs`;
CREATE TABLE `passwd_logs` (
`id` int(11) NOT NULL auto_increment,
`msg` char(255) default NULL,
`user` char(255) default NULL,
`pid` char(255) default NULL,
`host` char(255) default NULL,
`rhost` char(255) default NULL,
`logtime` char(255) default NULL,
PRIMARY KEY  (`id`)
) ENGINE=MyISAM;


3.)

Nun  in den Ordner /etc/pam.d wechslen.
Hier sollte als erstes eine Kopie der Datei vsftpd erstellt werden.

cd /etc/pam.d/
cp vspftpd vsftpd_orig

In die Datei vsftpd werden die folgenden Zeilen zugefügt:

auth        required    pam_mysql.so user=<DB_USER> passwd=<DB_PASS> host=localhost db=isp4you table=passwd usercolumn=username passwdcolumn=passwd statcolumn=status crypt=3 sqllog=1 logtable=passwd_logs logmsgcolumn=msg logusercolumn=user logpidcolumn=pid loghostcolumn=host logrhostcolumn=rhost logtimecolumn=logtime

account     required    pam_mysql.so user=<DB_USER> passwd=<DB_PASS> host=localhost db=isp4you table=passwd usercolumn=username passwdcolumn=passwd statcolumn=status crypt=3 sqllog=1 logtable=passwd_logs logmsgcolumn=msg logusercolumn=user logpidcolumn=pid loghostcolumn=host logrhostcolumn=rhost logtimecolumn=logtime

Die Funktion sqllog=1 kann unter Umständen auf die Dauer eine sehr große MySQl Datenbank produzieren. Wer auf das Logging in der MySQL Datenbank verzichten möchte entfernt die Einträge ab sqllog=1

auth        required    pam_mysql.so user=<DB_USER> passwd=<DB_PASS> host=localhost db=isp4you table=passwd usercolumn=username passwdcolumn=passwd statcolumn=status crypt=3

account     required    pam_mysql.so user=<DB_USER> passwd=<DB_PASS> host=localhost db=isp4you table=passwd usercolumn=username passwdcolumn=passwd statcolumn=status crypt=3


Beschreibung der Variablen in den Tag`s:

user = Dies ist der Datenbank Benutzer, der Zugriff auf die DB isp4you hat
passwd= Dies ist das zugehörige Passwort zu dem Datenbank Benutzer der Zugriff auf die DB isp4you hat
host= Der Host auf dem sich die Datenbank befindet.
db= Der Name der Datenbank indem die virtuellen FTP User gespeichert werden.

Da PAM ein sehr ausgefeiltes Programm ist, kann Ihre vsftpd Konfiguration unter Umständen andere Anpassungen benötigen, insbesondere wenn Sie weiterhin mit der /etc/passwd arbeiten möchten und die MySQL Datenbank nur als zusätzliche Option gelten soll muss die pam Datei anders konfiguriert werden. Statt auth required kann optional auch auth sufficient verwendet werden.

Um das Auslesen aus der MySQL Datenbank zu erzwingen, können alle unnötigen Einträge aus der vsftpd pam Datei entfernt werden. Bsp:

#%PAM-1.0
session    optional     pam_keyinit.so    force revoke
auth       required   pam_mysql.so user=<DB_USER> passwd=<DB_PASS> host=localhost db=isp4you table=passwd usercolumn=username passwdcolumn=passwd statcolumn=status crypt=3

account    required   pam_mysql.so user=<DB_USER> passwd=<DB_PASS> host=localhost db=isp4you table=passwd usercolumn=username passwdcolumn=passwd statcolumn=status crypt=3


4.) Installieren des Moduls PAM-mysql

Damit PAM gegen die MySQL Datenbank laufen kann, muss das Modul pam-mysql installiert werden.

Fedora Core: 'yum install pam_mysql'
Debian und Ubuntu: 'apt-get install libpam-mysql'

Sollte Ihr Betriebssystem pam-mysql nicht im Repository vorhalten, müssen Sie es selbst kompilieren und
installieren. Dazu besorgen Sie sich die Quellen von pam-mysql.sourceforge.net

Ein Blick in der Ordner /lib/security gibt Auskunft, ob das Modul bereits vorhanden ist.
In diesem Ordner muss die Datei pam_mysql.so vorhanden sein.


5.) Passwörter

In unserem Beispiel verwenden wir dio Option 'crypt=3'. Das bedeutet, die Passwörter müssen
MD5 verschlüsselt in der Datenbank present sein.
Damit das Programm isp4you oder auch andere Perl Programme MD5 verschlüsseln können muss das
CPAN Modul 'Digest::MD5 ' vorhanden sein.

6.) /etc/vsftpd/vsftpd.conf anpassen

Damit vsftpd mit virtuellen Usern arbeiten kann, muss die Datei vsftpd.conf wie folgt angepasst
werden, in dem wir am Ende der Konfigurationsdatei folgendes zufügen:

pam_service_name=vsftpd
nopriv_user=vsftpd
guest_enable=YES
guest_username=vsftpd
#local_root=/home/httpd/www.$USER
user_sub_token=$USER
virtual_use_local_privs=YES
user_config_dir=/etc/vsftpd/vsftpd_user_conf

Wenn pam_service_name und nopriv_user = vsftpd ist muss auch ein solcher Benutzer auf dem System existieren.
Alternativ kann man auch statt vsftpd ftp verwenden. Der User ftp ist auf nahezu allen Distributionen bereits vorhanden.
Siehe Punkt 1 Vorarbeiten.

Anschliessend den vsftpd Server neu starten.

7.) Die User in /etc/vsftpd/vsftpd_user_conf/

In dem Ordner /etc/vsftpd/vsftpd_user_conf/ werden die User und deren Zugriffrechte verwaltet.
Legen Sie in dem Ordner eine neue Datei mit dem Namen des FTP User an. Die Datei muss so heissen, wie
der virtuelle FTP User auch heisst, damit VSFTPD den User finden und zuordnen kann.

Beispielkonfiguration:

guest_username=test.de
write_enable=YES
local_root=/var/www/www.test.de/html

Dabei ist local_root das Heimatverzeichnis der FTP Users.


8.) Bezugsquellen und Links:

- Das PAM MYSQL Modul
- PAM Howto
- Digest::MD5 Perl Modul

 

Stand: August 2010

 

 

Kontakt
Impressum
AGB
Datenschutz
DomainAutomat 
Joomla-Hosting24 
German-Congress-Group 
Isp4you Software 
Joomla Hosting
Typo3 Hosting
Wordpress Hosting
 © 2010 by Provider4u GmbH
Alle Preise inkl. 19% MwSt.

 

 




 
 


Joomla Best Price Hosting Joomla Webhosting Joomla Hosting Joomla Webhosting Joomla Hosting serving deutschen bundestag fairprice garantie