www user als ftp user

whopper

Well-Known Member
Hi,

würder gerne dem www user, unter dem der apache läuft, auch einen ftp zungang geben.
Hab es probiert, dem www user eben dieses Verzeichnis, in dem die dateien für die website liegen, als homedir zuzuweisen und ihm ein passwort gegen.

Leider ist ein login über ftp nicht möglich.

FTP Server ist proftpd.

Vielen Dank für eure Hilfe

whopper
 
Es ist in den meisten Fällen _keine_ gute Idee dem Webserver Schreibrechte auf das Webroot zu geben! Ein kaputtes Script macht dich sonst schnell zum Phishingseitenhost oder Kindervergewaltigungsbilderverbreiter oder Warezanbieter oder oder oder...

Ich würde, ohne mich mit proftpd auszukennen, versuchen dem www User ne shell zu geben. Manche FTPd guchen dort nach um zu verhindern das System/Daemon-User sich einloggen können.

Grüße!
 
Bei proftpd benötigt der User eine Shell, es sei denn man setzt die Option in der proftpd.conf.
Code:
RequireValidShell off

Ein Blick in die Datei /etc/ftpusers kann auch nicht schaden. Da darf der User der den ftp-Server nutzen können soll, nicht drin stehen.

Gruß c.
 
Also ich gehe mal davon aus, dass dem Kunden Zugriff auf seinen WebSpace gegeben werden soll, von daher ist das erst mal ein legitimer Vorgang.

Baut man dann auch etwas Sicherheit z.B. per Suexec+FastCGI (aufgrund des Mangels der mpm-per-user Apache Engine unter FBSD, etc. ) ein und lässt den WebServer nur unter der Userid des Kunden auf dessen WebSpace zugreifen, dann ist es auch okay, chrootet man die ftp-Session mit entsprechender Userid.

proftpd verwende ich nicht, setze aber bsdftpd-ssl erfolgreich ein mit dem das und mehr möglich ist. Hier mal die vollständige Konfiguration, wo die Authentifikation des ftp-Clients per Zertifikat und Verschlüsselung ausschließlich auf Ebene von TLS Voraussetzung ist.

In /usr/local/etc/rc.d/bsdftpd_ssl.sh

werden die Anforderung entsprechend konfiguriert:

##spaulding, som
##0) Consider http://bsdftpd-ssl.sc.ru/documentation.html in general.
##1) Consider /usr/local/share/doc/bsdftpd-ssl/INSTALL to install a dummy cert
## with /usr/local/share/doc/bsdftpd-ssl/cert/cert-dummy.sh
## oder http://www.werthmoeller.de/doc/microhowtos/openssl/apache/
## Dummy must be located under /etc/ssl/certs/ftpd.pem after this step.
##2) set up the trusted users under /etc/ftpusers
##3) $man ftpchroot-ssl and chroot the users
##4) configure welcome msg $ln -s /etc/motd /etc/ftpwelcome
##5) configure /etc/shells with a valid '/sbin/nologin' shell to let ftp users connect without ssh access!
##6) configure /etc/hosts.allow for particular access controlled by client domain

##adjust the args:
command_args="$command_args -h -l -l -L anon-abs -L wu-abs -z verify=2"
command_args="$command_args -z cert=/etc/ssl/certs/ftpd.pem"
command_args="$command_args -z CAfile=/usr/local/etc/x509-certs.crt -z auth=3"
command_args="$command_args -z debug -z logfile=/var/log/bsdftpdssl.log"
command_args="$command_args -S wu-ext -t 86400 -T 86400"

##auth=3 (instead off auth=2)!:
##Many clients need real unix account password confirmation too! (It's not sufficient to supply the certificate passphrase on backhand!)

#However, take the "Ipswitch WS_FTP 2007"-Client and everything is perfect!
##FireFtp extension for firefox works as client!
#TurboFtp is the second best choice, but it's a bit tricky handle the very first certificate handshake
##spaulding, eom.

Angenommen ist eine Userid unter der z.B. ein virtual Host läuft:

/etc/passwd:
spaulding:*:1035:1035:User &:/home/spaulding:/sbin/nologin

Für das ftp Login muss die "Shell" des Users zugelassen werden:
/etc/shells:
#
# List of acceptable shells for chpass(1).
# Ftpd will not allow users to connect who are not using
# one of these shells.

/bin/sh
/bin/csh
/bin/tcsh
/sbin/nologin
/usr/local/bin/bash
/usr/local/bin/rbash

Die userid darf nicht in /etc/ftpusers eingetragen sein!

bsd-ftpd ist in dem Fall so konfiguriert, dass der Ftpd-Client mit einem Zertifikat (selbst signiert genügt) authentifizieren muss. Der öffentliche Schlüssel des Zertifikats wird als x509 Zertifikat eingetragen in

/usr/local/etc/x509-certs.crt:
#spaulding
-----BEGIN CERTIFICATE-----
SjELMAkGA1UEBhMCREUxETAPBgNVBAgMCE3DvG5jaGVuMQ8wDQYDVQQHEwZCYXll
cm4xFzAVBgNVBAMTDkp1bGlhbiBSZWlzY2hsMIIBIjANBgkqhkiG9w0BAQEFAAOC
xLkEWp2p0YU5ilun6/HeaFA+OI9ydADnsQibdRRzhrJVh9BMu24d8pAdO2KeJ8z5
vT5AqLm9oxfCwnBk58gbsLKgFJ8Ie2yVRooBYXDhb1vSN6NCqBKNSz8oXw7ujMny
MIIDETCCAfmgAwIBAAIFAIn+khYwDQYJKoZIhvcNAQEFBQAwSjELMAkGA1UEBhMC
REUxETAPBgNVBAgMCE3DvG5jaGVuMQ8wDQYDVQQHEwZCYXllcm4xFzAVBgNVBAMT
Dkp1bGlhbiBSZWlzY2hsMB4XDTA4MDYxODE3NTUzNFoXDTEyMDYxODE3NTUzNFow
EKldDsZLDzdVdDfU0+QppaVLzNvAGFRBwpt4RwIDAQABMA0GCSqGSIb3DQEBBQUA
AQ8AMIIBCgKCAQEAqqcq2vgux3+gv6yt36AtiDIQI8OL7b5J4XIE+MId9gUrGGY6
NCpa7fPrcOCks87WFHYla2wa3ntllhZ0nQj7vVyLuGJ3aXgidM3+i28lILqkGSCY
xHXW/4JiqlsuPQue0zwtUDoH4OSfH0XyHMc/7fHjB+zpte901tscAa+bvjIlXeps
A4IBAQCB2/E1W8m7Xgav/UdzDA4tJUq3S/z+108RuFIDs2T57iPqMFDypz+Z/wkH
NwPATxNxjjHGaKsHaOE/YRCiaWNCFQkI2l4vME6GIyECy6H9G0kr88mCartT2SJd
lX8JtJslwdoBgKyWNAIeGTF3DZ5IjyjyKzDP9zehxK+mfz8ZZ+SJb0xH/1Wxk+Mi
zlKUMzYtKYAWYEZs7AUKpz0lKp599jdG/X6Y4++bWLKtoP9Uu3gKX0kjq2p15UMM
j8piE9mydNvswEBg5mtaUTxkQJyNkQe7ZyBlRKnnUVcXHkHyot7IGtKqXqQjogT9
vuN1K4XP9liMsgazLqfYkYXoR0NQ
-----END CERTIFICATE-----

Authentifikation über öffentlichen Schlüssel und Mapping auf effektive Userid wird vorgenommen in

/etc/x509.auth:
ftpd:allow:spaulding:/C=DE/ST=RHP/L=Mainz/O=spaulding/OU=Spaulding/CN=Spaulding

Der Eintrag wird von der x509-Klartextdatei z.B. wie folgt erzeugt:
#openssl x509 -in x509.pem -noout -text|grep 'Subject:'|sed 's/^.*: /ftpd:allow:\/O:\//'|sed 's/, /\//g'

Das zu chrootende Verzeichnis wird definiert in

/etc/ftpchroot:
spaulding /cust/spaulding

Das von einer CA signierte Zertifikat (zur Not auch selbst signiert auch wenn bei der Authentifikation der Umstand angemeckert wird und man dann eben für die Zukunft eine Ausnahmebehandlung zulässt) eintragen in /etc/ssl/certs/ftpd.pem .

In dem Verbingunsprofil des ftp-Clients muss ja neben dem Zertifikat auch die Userid und Passwort des Accounts angegeben werden. Das Passwort also mit passwd einstellen.

Wer noch einen Tick mehr Sicherheit einbauen will und der User das auch wirklich mit sich machen lässt, der kann z.B. auch die Dialin Domain des Clients noch als Voraussetzung für den Verbindungsaufbau konfiguirieren:

/ets/hosts.allow:
ftpd:.the_clients_dialin_domain.de:ALLOW

Wenn das nicht gewünscht ist, dann generischen Zugriff einstellen

ftpd:ALL:ALLOW


Überwindet dennoch ein Hacker aller Sicherheitsvorkehrungen, dann kann man evtl. dennoch versuchen, ein schlechtes Gewissen einzureden:

/etc/ftpwelcome:
*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_W_A_R_N_I_N_G_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*
*__THIS_SYSTEM_IS_RESTRICTED_TO_AUTHORIZED_USERS_FOR_AUTHORIZED_USE_ONLY.___*
*__UNAUTHORIZED_ACCESS_IS_STRICTLY_PROHIBITED.______________________________*
*__IF_NOT_AUTHORIZED_TO_ACCESS_THIS_SYSTEM,_DISCONNECT_IMMEDIATELY!_________*
*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_W_A_R_N_I_N_G_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*

:belehren:
---
 
Zurück
Oben