PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : VSFTP-Server nur für autorisierte User einrichten?



Blade
05.02.10, 19:38
Hi zusammen,

ich habe einen anonymen vsftp am Laufen und klappt soweit auch gut. Habe auch alle Rechte der User zum Upload und Download bis auf das Notwendigste aus Sicherheitsgründen beschnitten.

Nun möchte ich vsftp so umkonfigurieren, dass sich User über's Internet beim vsftp-Server mit Namen und Kennwort anmelden müssen. Allerdings will ich es Usern ermöglichen, die nicht lokal bei ftp-Server/Server als local user bekann sind. Das sind externe Kunden die projektbezogen Daten runterladen können sollen, und nur aus einem passwortgeschützten Bereich. Geht das?

Geht das mit vsftp oder welcher ftp-Server ist da empfehlenswert? Gibt es dazu ein Howto?

Bin dankbar für jeden Tipp!

Rain_maker
05.02.10, 19:45
Da ich nicht weiß, welche Distribution eingesetzt wird, kann ich nur allgemein auf die Möglichkeit sogenannte "Virtual Users" einzurichten hinweisen, damit müsste das gehen.

Im Paket meiner Distribution findet sich dazu ein HowTo


rpm -ql vsftpd |grep VIRTUAL_USERS

/usr/share/doc/packages/vsftpd/EXAMPLE/VIRTUAL_USERS
/usr/share/doc/packages/vsftpd/EXAMPLE/VIRTUAL_USERS/README
/usr/share/doc/packages/vsftpd/EXAMPLE/VIRTUAL_USERS/logins.txt
/usr/share/doc/packages/vsftpd/EXAMPLE/VIRTUAL_USERS/vsftpd.conf
/usr/share/doc/packages/vsftpd/EXAMPLE/VIRTUAL_USERS/vsftpd.pam
/usr/share/doc/packages/vsftpd/EXAMPLE/VIRTUAL_USERS_2
/usr/share/doc/packages/vsftpd/EXAMPLE/VIRTUAL_USERS_2/READMEDamit kann man über PAM entsprechende Regeln festlegen und eine "Nutzerdatenbank" für diese User anlegen, welche dann nicht auf dem System vorhanden sein müssen.

(Es empfiehlt sich außerdem, diese virtuellen Nutzer in "ihrem" ftp-Verzeichnis "einzusperren".)

// Tante Edith meint

ftp://vsftpd.beasts.org/users/cevans/untar/

daß es die Doku auch online gibt, falls diese (noch) nicht auf dem Zielsystem vorhanden ist ($Version wählen und durchklicken).

Blade
05.02.10, 20:08
Hallo Rain_maker,
sorry vergessen, ich nutze das "alte" SuSE 9.3 Betriebssystem mit vsftp. Der Tipp zielt in die richtige Richtung, danke! Muss mich mal einlesen. Eins wäre mir aber noch wichtig zu wissen.

1. Wenn ich dem Tipp folge, dann ist wohl der gesamte ftp-Server-Bereich für anonymen Zugang gesperrt, habe ich das richtig verstanden?

2. Mein Ziel war es aber einige Verzeichnisse anonym freizugeben und einge Verzeichnisse mit einem geschützten Zugang freizugeben.

Rain_maker
05.02.10, 20:31
Hallo Rain_maker,
sorry vergessen, ich nutze das "alte" SuSE 9.3 Betriebssystem mit vsftp.

*Hüstel* die übliche Bemerkung zum "totes Pfred reiten" verkneife ich mir jetzt, Du weißt aber, daß die 9.3 etwas sehr angestaubt ist.


Der Tipp zielt in die richtige Richtung, danke!

Ich würde sogar sagen, es ist genau das, was Du suchst.




Muss mich mal einlesen. Eins wäre mir aber noch wichtig zu wissen.

1. Wenn ich dem Tipp folge, dann ist wohl der gesamte ftp-Server-Bereich für anonymen Zugang gesperrt, habe ich das richtig verstanden?

2. Mein Ziel war es aber einige Verzeichnisse anonym freizugeben und einge Verzeichnisse mit einem geschützten Zugang freizugeben.

Nein, das geht alles so, wie Du Dir das vorstellst, ich habe hier exakt dieses Setup auf einer Testmaschine für zwei virtuelle User laufen, die beide nicht als lokale Nutzer auf dem System bekannt sind und hochladen dürfen, zusätzlich kann der Nutzer "anonymous" runterladen.

Ich habe mich dazu an das HowTo gehalten, allerdings eben (logischerweise) anonymous erlaubt gelassen, eine Benutzerliste erstellt und dann anonymous explizit in die Liste der erlaubten Nutzer eingetragen (wahrscheinlich nicht notwendig, aber diese Nutzerliste ist ja ein weiteres Sicherheitsfeature).

Blade
05.02.10, 20:38
Dank Dir für die Tipps, das sieht ja gut aus ... werde mal Howto-Tipps lesen + testen. ;)

Rain_maker
05.02.10, 20:40
Wenn Du es ganz sauber trennen willst, dann kannst Du ja zwei vsftpd laufen lassen, einen für anon-FTP und einen für die "virtuellen Nutzer", den dann am besten noch mit SSL sichern.

Greetz,

RM

TheDarkRose
05.02.10, 20:58
Was isn das für ne Maschine, wo steht die und kannst du dir da eine Offline-Zeit in der Nacht leisten?? Wenn ja, Backups machen und mal auf ne neue SuSE-Version umsteigen

Blade
06.02.10, 16:43
@Rain_maker, zwei x vsftp-Server, wie soll das klappen? Keinen Plan. Danke für jeden Tipp!

@Rain_maker, das ist mein privater Server im Arbeitszimmer, der über dyndns.org erreichbar ist.

Rain_maker
06.02.10, 16:58
@Rain_maker, zwei x vsftp-Server, wie soll das klappen? Keinen Plan. Danke für jeden Tipp!

Ganz einfach, vor allem, wenn man den zweiten über FTPS (default Port 990 IIRC) erreichbar macht, natürlich muss der zweite auf einem anderen Port als der erste lauschen (trivial, aber ich schreib es für Querleser dazu).

Für Benutzer, die auch uploaden dürfen, sollte eigentlich SSL Pflicht sein, oder willst Du, daß deren Passworte/Usernamen im Klartext übers Netz gehen?

Zwei unterschiedliche Configs und zwei Initscripte, dabei ruft das eine config1 und das zweite config 2 auf, welche config verwendet wird, lässt sich im Initscript festlegen.

Ich habe mir dazu einfach das "originale" Script /etc/init.d/vsftpd als /etc/init.d/vsftpd-Virtual kopiert und ein paar Kleinigkeiten von Hand angepasst, dann noch chkconfig aufgerufen und ab dafür.

//Edit:

OK, die Anpassungen im Initscript sind zwar trivial, aber ich schreibe die wichtigsten mal beispielhaft hin.



diff -u /etc/init.d/vsftpd /etc/init.d/vsftpd-Virtual
--- /etc/init.d/vsftpd 2010-01-27 22:04:48.000000000 +0100
+++ /etc/init.d/vsftpd-Virtual 2009-11-25 19:21:58.000000000 +0100
@@ -23,13 +23,13 @@
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#
### BEGIN INIT INFO
-# Provides: ftpd
+# Provides: ftpd-Virtual
# Required-Start: $syslog $remote_fs
# Required-Stop: $syslog $remote_fs
# Default-Start: 3 5
# Default-Stop: 0 1 2 6
-# Description: very secure ftp daemon
-# Short-Description: very secure ftp daemon
+# Description: very secure ftp daemon with virtual users
+# Short-Description: very secure ftp daemon with virtual users
### END INIT INFO
# Note on runlevels:
# 0 - halt/poweroff 6 - reboot
@@ -43,7 +43,9 @@
# Please use the names already registered or register one or use a
# vendor prefix.

-VSFTPD_BIN=/usr/sbin/vsftpd
+VSFTPD_BIN=/usr/sbin/vsftpd-Virtual
+VSFTPD_VIRTUAL_CONF=/etc/vsftpd.d-Virtual/vsftpd.conf
+
test -x $VSFTPD_BIN || { echo "$VSFTPD_BIN not installed";
if [ "$1" = "stop" ]; then exit 0;
else exit 5; fi; }
@@ -54,13 +56,13 @@

case "$1" in
start)
- echo -n "Starting vsftpd "
- /sbin/startproc -l /var/log/rcvsftp.log $VSFTPD_BIN
+ echo -n "Starting vsftpd-Virtual "
+ /sbin/startproc -l /var/log/rcvsftp-Virtual.log $VSFTPD_BIN $VSFTPD_VIRTUAL_CONF
rc_status -v
;;
stop)
- echo -n "Shutting down vsftpd "
- /sbin/killproc -TERM $VSFTPD_BIN
+ echo -n "Shutting down vsftpd-Virtual "
+ /sbin/killproc -TERM $VSFTPD_BIN $VSFTPD_VIRTUAL_CONF
rc_status -v
;;
try-restart|condrestart)
@@ -85,18 +87,18 @@
rc_status
;;
force-reload)
- echo -n "Reload service vsftpd "
- /sbin/killproc -HUP $VSFTPD_BIN
+ echo -n "Reload service vsftpd-Virtual "
+ /sbin/killproc -HUP $VSFTPD_BIN $VSFTPD_VIRTUAL_CONF
rc_status -v
;;
reload)
- echo -n "Reload service vsftpd "
- /sbin/killproc -HUP $VSFTPD_BIN
+ echo -n "Reload service vsftpd-Virtual "
+ /sbin/killproc -HUP $VSFTPD_BIN $VSFTPD_VIRTUAL_CONF
rc_status -v
;;
status)
- echo -n "Checking for service vsftpd "
- /sbin/checkproc $VSFTPD_BIN
+ echo -n "Checking for service vsftpd-Virtual "
+ /sbin/checkproc $VSFTPD_BIN $VSFTPD_VIRTUAL_CONF
rc_status -v
;;
*)Dabei ist "/usr/sbin/vsftpd-Virtual" nur ein Symlink auf "/usr/sbin/vsftpd".

Über Dyndns kann man das dann sogar noch -wenn man will- mit zwei unterschiedlichen Adressen verbinden.

//Edit2:

Ach ja, und dann würde ich noch für eine saubere Trennung den beiden Servern unterschiedliche Portranges für passives FTP verpassen, die können ja nahezu frei gewählt werden, dann noch im Router entsprechendes Portforwarding einrichten (und ggf. in der SuSEfirewall2 auch) und fertig ist der Lack.

Greetz,

RM