PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : vsFTPd User-Rechte-Problem



Iron73
28.06.08, 21:38
Hallo liebe Linuxforen.de Freunde,

ich glaub viele von Euch können Threats über vsFTPd nicht mehr sehen, doch leider muss ich Euch ein weiteres mal damit quälen, big sry an dieser Stelle schon einmal vorweg ... :o

Ich habe jetzt 2 Tage gegoogelt und mich durch Foren und unzähligen Beiträgen gewällst, leider ohne Erolg für mein Vorhaben. Ich bin auf unzählige tote Links gestoßen, das ich nun den Schritt dieses Posts wage.

Mein Ziel:
Ich habe einen Webserver (Testumgebung hier zuhause) mit Apache2, PHP5, MySQL und phpMyAdmin eingerichtet.

Nun möchte ich einen FTP-Server dazu einrichten, meine Wahl viel auf vsFTPd 2.0.6, mit dem ich meine HTML/PHP-Dateien ins /srv/www/ Verzeichnis hochladen kann. Anhand des Pfades erkennt Ihr sicherlich das ich openSUSE 11.0 als Betreibssystem benutzen.

Teilerfolge:
Der vsFTPd-Server läuft, und sowohl Anonymer Zugriff (mit leicht veränderter Config natürlich), als auch normale User des System können sich einloggen, und können sich innerhalb Ihres /home Verzeichnisses bewegen.

Mein Problem:



[R] Connecting to 192.168.1.253 -> IP=192.168.1.253 PORT=21
[R] Connected to 192.168.1.253
[R] 220 "Welcome to Server1300 vsFTPd Service"
[R] USER ftpuser
[R] 331 Please specify the password.
[R] PASS (hidden)
[R] 530 Login incorrect.


Bisherige Einstellungen / Konfigurationen:

- vsFTPd 2.0.6 installiert.

- Einen eigenen User für den FTP-Zugriff im System angelegt:



useradd -d /srv/www/ -s /bin/false --no-create-home -p PASSWORT ftpuser


Datei: /etc/passwd


ftpuser:x:1001:100::/srv/www/:/bin/false


Datei: /etc/vsftpd.user_list


ftpuser


- Durch Zahlreiche Foren/Tutorials hab ich mir eine vsFTPd Config Datei zummengebastelt:

Datei: /etc/vsftpd.conf


################################################## ###############################
# S E R V E R - S E T T I N G S #
################################################## ###############################

# Message welche der sich anmeldende User sieht. (FTP 220 Your Message)
ftpd_banner="Welcome to Server1300 vsFTPd Service"

# Hier wird die Anzahl der gleichzeitigen Verbindungen von Clients beschränkt.
max_clients=3

# Hier wird nur eine Verbindung von ein und der selben IP Adresse zugelassen.
max_per_ip=1

# Hiermit werden der Benutzer und die Gruppe, welche eine Datei besitzen, nicht
# angezeigt. Es wird als Eigentümer (owner) der Benutzer ftp angezeigt, obwohl am
# Dateisystem ein anderer Benutzer die Datei besitzt.
#hide_ids=YES

################################################## ###############################
# T R A N S F E R - S E T T I N G S #
################################################## ###############################

# Setze dies auf NO um den PASV Mode der Verbindung zu deaktivieren
pasv_enable=NO

# Versichern, das Verbindungen nur an Port 20 (ftp-data) zustande kommen. YES/NO
connect_from_port_20=YES

# Unterbrechung (time out) bei Leerlaufzeiten (idle sessions)
idle_session_timeout=600

# Zeit, nach der eine Datenverbindung unterbrochen wird.
data_connection_timeout=120

################################################## ###############################
# A N O N Y M O U S #
################################################## ###############################
# Anonymen FTP-Zugriff erlauben? YES/NO
anonymous_enable=NO

# Hiermit wird das Verzeichnis /srv/www/ als root Verzeichnis fuer anonyme angegeben.
#anon_root=/srv/www

# Anonymen Upload erlauben? YES/NO
anon_upload_enable=NO

# Standard umask fuer anonyme ist 077. Dies kann hier auf 022 gesetzt werden.
#anon_umask=022

# Globale Lese-Rechte (Downloads) fuer anonyme zulassen? YES/NO
anon_world_readable_only=NO

# Duerfen anonyme User Verzeichnisse erstellen? YES/NO
anon_mkdir_write_enable=NO

# Duerfen anonyme User andere Schreiboperationen wie Umbenennen oder Loeschenen
# durchfuehren? YES/NO
anon_other_write_enable=NO

# Rechte an hochgeladene Files von anonymen werden an einen anderen User uebergeben.
# WICHTIG: Sie dem User root zu uebergeben ist nicht Sicher !!!
#chown_uploads=YES
#chown_username=Name

# Die maximal erlaubte Datentransferrate in Bytes/Sekunde für anonyme.
# Vorgabe = 0 (unbegrenzt)
#anon_max_rate=7200

################################################## ###############################
# U S E R #
################################################## ###############################

# Anmeldung von lokalen Usern erlauben? YES/NO
local_enable=YES

# Dies bewirkt das sich nur Benutzer einloggen können, deren Benutzernamen in der
# Datei /etc/vsftpd.user_list enthalten sind. Diese Datei muss natürlich erst erstellt
# werden. Wenn der Benutzername in der Datei nicht enthalten ist, wird der Loginversuch
# abgebrochen bevor nach dem Passwort gefragt wird.
userlist_deny=NO
userlist_enable=YES
userlist_file=/etc/vsftpd.user_list

# Sollen lokale Benutzer in ihrem Homeverzeichnis eingesperrt werden? YES/NO
chroot_local_user=YES

# Die maximal erlaubte Datentransferrate in Bytes/Sekunde für lokal angemeldete User.
# Vorgabe = 0 (unbegrenzt)
local_max_rate=0

# Schreibrechte prinzipiell erlauben? YES/NO
write_enable=YES

# Standard umask fuer User ist 077. Dies kann hier auf 022 gesetzt werden.
#local_umask=022

# Nachrichten (aus der Datei .message) bei Verzeichniswechsel anzeigen? YES/NO
dirmessage_enable=YES

################################################## ###############################
# L O G - S E T T I N G S #
################################################## ###############################

# vsFTPd-System-Meldungen (Login/Fehlermeldungen) Loggen? YES/NO
syslog_enable=YES

# Log-File und Speicherort festlegen
vsftpd_log_file=/var/log/vsftpd.log

# Protokollierung von Up- und Downloads aktivieren? YES/NO
xferlog_enable=YES

# If you want, you can have your log file in standard ftpd xferlog format.
# Note: This disables the normal logging unless you enable dual_log_enable below.
#xferlog_std_format=YES

# Dateiname und Speicherort der Protokollierung
xferlog_file=/var/log/xferlog.log

# Saemtliche FTP-Aktivitaeten protokollieren? YES/NO
# Achtung! Durch diesen Eintrag koennen sehr grosse Datenmengen entstehen.
log_ftp_protocol=NO

################################################## ###############################
# S E Q U R I T Y - S E T T I N G S #
################################################## ###############################

# Zugriff wird ueber Pluggable Authentication Modules (PAM) geregelt.
pam_service_name=vsftpd

# Standalone-Betrieb? YES/NO - abhaegig vom Betriebsmodus (inetd, xinetd, Standalone)
# Des Autors FTP-Dienst wird per xinetd gestartet, deswegen lautet der Wert hier NO.
listen=NO

# Um SSL zu aktivieren -> ssl_enable=YES
#ssl_enable=NO


Ich gehe davon aus, das ich nicht sehr weit vom gewünschten Ziel entfernt bin, ich denke mein Problem hat was mit den Rechten des /srv/www/ Pfades zu tun.

Datei: /var/log/vsftpd.log


Sat Jun 28 19:36:32 2008 [pid 5389] CONNECT: Client "127.0.0.1"
Sat Jun 28 19:36:42 2008 [pid 5388] [iron] OK LOGIN: Client "127.0.0.1"
Sat Jun 28 19:39:00 2008 [pid 5398] CONNECT: Client "192.168.1.2"
Sat Jun 28 19:39:00 2008 [pid 5397] [iron] OK LOGIN: Client "192.168.1.2"
Sat Jun 28 20:47:57 2008 [pid 5978] CONNECT: Client "192.168.1.2"
Sat Jun 28 20:47:57 2008 [pid 5977] [ftpuser] FAIL LOGIN: Client "192.168.1.2"


Nach 2 Tagen raucht mir jedoch so sehr der Kopf, das ich eine regelrechte Denkblockade habe. ^^

Hat jemand einen Tip, oder gar eine konkrete Lösung für mich parat?

Ich würde mich über eine Antwort sehr freuen, und wünsche allen noch ein 'Happy Weekend' ...

Gruß Iron73

Jigsore
28.06.08, 22:54
/bin/false in /etc/shells, check_shell=NO in der vsftpd.conf?

Newbie314
28.06.08, 23:01
Das Problem kommt mir bekannt vor. Was steht in /etc/pam.d/vsftpd ?

Da musst du auf alle Fälle noch die userlist enablen...:

auth required pam_listfile.so item=user sense=allow onerr=fail file=/etc/vsftpd.user_list onerr=succeed

@andere: so funktioniert es bei mir jedenfalls. Sollte ich da noch ein Sicherheitsleck drin haben wäre ich für Tipps dankbar... bei mir läuft der FTP Server nur stundenweise auf dem Desktop ... trotzdem habe ich versucht ihn "sicher" zu machen ....

Mein Name für die user_list hat übrigens keinen Punkt drin.. falls das noch etwas ausmachen würde ...


Deine vsftpd.conf ähnelt meiner, nur dass ich die Anzahl der IP Adressen zum Einloggen nicht beschränkt habe ... probiere evtl. mal aus was passiert wenn du da mehr zuläßt (ich frage mich wie die IPs gezählt werden ... immerhin benötigt FTP mehrere Ports...)

In

Iron73
28.06.08, 23:44
/bin/false in /etc/shells, check_shell=NO in der vsftpd.conf?

Datei: /etc/shells


/bin/ash
/bin/bash
/bin/bash1
/bin/csh
/bin/false
/bin/ksh
/bin/sh
/bin/tcsh
/bin/true
/bin/zsh
/usr/bin/csh
/usr/bin/ksh
/usr/bin/passwd
/usr/bin/bash
/usr/bin/tcsh
/usr/bin/zsh

/bin/false war in der Datei /etc/shells gesetzt.

Datei: /etc/vsftpd.conf


check_shell=NO

Dieser Eintrag war nicht gesetzt, brachte nach dem hinzufgügen aber leider auch nicht den gewünschten erfolg.

Iron73
28.06.08, 23:51
Das Problem kommt mir bekannt vor. Was steht in /etc/pam.d/vsftpd ?

Da musst du auf alle Fälle noch die userlist enablen...:

auth required pam_listfile.so item=user sense=allow onerr=fail file=/etc/vsftpd.user_list onerr=succeed


Diese Zeile hatte ich ebendfalls nicht in meiner Datei drin. Hab Sie nachgetragen, jetzt sieht meine Datei so aus:

Datei: /etc/pam.d/vsftpd


#%PAM-1.0

# Uncomment this to achieve what used to be ftpd -A.
# auth required pam_listfile.so item=user sense=allow file=/etc/ftpchroot onerr=fail

auth required pam_listfile.so item=user sense=deny file=/etc/ftpusers onerr=succeed
auth required pam_listfile.so item=user sense=allow onerr=fail file=/etc/vsftpd.user_list onerr=succeed
# Uncomment the following line for anonymous ftp.
#auth sufficient pam_ftp.so
auth required pam_shells.so
auth include common-auth
account include common-account
password include common-password
session required pam_loginuid.so
session include common-session


Lösung des Problems war es jedoch leider nicht, ich kann nach wie vor nicht Connecten.



[R] Connecting to 192.168.1.253 -> IP=192.168.1.253 PORT=21
[R] Connected to 192.168.1.253
[R] 220 "Welcome to Server1300 vsFTPd Service"
[R] USER ftpuser
[R] 331 Please specify the password.
[R] PASS (hidden)
[R] 530 Login incorrect.




Deine vsftpd.conf ähnelt meiner, nur dass ich die Anzahl der IP Adressen zum Einloggen nicht beschränkt habe ... probiere evtl. mal aus was passiert wenn du da mehr zuläßt (ich frage mich wie die IPs gezählt werden ... immerhin benötigt FTP mehrere Ports...)


Datei: /etc/vsftpd.conf


max_clients=5
max_per_ip=5


Habs mal zum testen auf die Werte 5 angehoben ...

Iron73
29.06.08, 00:29
Ehm, ja *hust hust*

Also ... beim durchgehen/kontrollieren aller Files/Logs bin ich über etwas gestolpert:



[R] 220 "Welcome to Server1300 vsFTPd Service"
[R] USER ftpuser
[R] 331 Please specify the password.
[R] PASS (hidden)
[R] 530 Login incorrect.


Login incorrect <-> Permission denied



[R] 220 "Welcome to Server1300 vsFTPd Service"
[R] USER iron
[R] 331 Please specify the password.
[R] PASS (hidden)
[R] 550 Permission denied.


Hab dann ma sofort mit passwd ftpuser ein neues Passwort gesetzt, und siehe da ich connecte mit dem FTP-User = ftpuser direkt ins /srv/www/ Verzeichnis.

Nur Ordneranlegen oder Files hochladen geht noch nicht, wegen fehlender Rechte vom User "ftpuser" nehm ich an.



Server1300:/srv/www # ls -l
total 8
drwxr-xr-x 2 root root 4096 Jun 6 22:23 cgi-bin
drwxr-xr-x 3 root root 4096 Jun 28 00:27 htdocs


Hat dafür jemand ne Lösung parat, damit ich dem User von Apache (wwwrun) nicht in die Quere komme?

Roger Wilco
29.06.08, 10:25
Hat dafür jemand ne Lösung parat, damit ich dem User von Apache (wwwrun) nicht in die Quere komme?
Die Verzeichnisse der Gruppe ftpuser zuordnen und für diese das w(ritable) Bit setzen.

rudi_m
29.06.08, 13:21
ich würde dem ftp user die standard gruppe "www" (der auch der wwwrun angehört) geben.
Dann fuer jeden ftp user ein webserver verzeichnis
/srv/www/htdocs/ftpuser1
anlegen, das Ihm mit allen Rechten gehört.

(Den apache so konfigurieren dass dieses Verzeichnis das DocumentRoot fuer diesen (virtual)server ist.)

Da er Mitglied von www ist, kann ftpuser per ftp dem apache user das Recht zum Schreiben auf einzelne Dateien geben ohne gleich Schreibrechte für alle (others) zu geben.

Falls du auch in Zukunft keine virtual hosts fuer mehrere user anzulegen planst, kannst Du auch einfach cgi-bin und htdocs an ftpuser:www vermachen.

Roger Wilco
29.06.08, 13:58
In dem Fall könnte der Apache httpd bzw. Skripte, die in seinem Benutzerkontext ausgeführt werden (etwa mit mod_php oder allgemein CGI ohne SuExec o. ä.), schreibend auf die Verzeichnisse und die darin enthaltenen Dateien zugreifen. Das ist nicht unbedingt gewünscht...

rudi_m
29.06.08, 16:08
In dem Fall könnte der Apache httpd bzw. Skripte, die in seinem Benutzerkontext ausgeführt werden (etwa mit mod_php oder allgemein CGI ohne SuExec o. ä.), schreibend auf die Verzeichnisse und die darin enthaltenen Dateien zugreifen.
Nein, von genereellem Schreib/Leserechtrecht fuer die Gruppe habe ich nicht gesprochen.

eini
16.09.08, 09:36
Mir ist aufgefallen das PW´s mit Sonderzeichen Probleme machen. Damit konnte ich mich nicht via FTP einloggen. Keine Ahnung ob das was zur Sache tut. :)