PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Probleme mit VSFTP



AndreasMeier
01.11.09, 13:24
Hallo zusammen,

ich hab viel Anleitungen über vsftp gelesen und viel ausprobiert, aber ich hab weiterhin Probleme mit vsftp.

Mein Anliegen ist es, einen FTP-Server einzurichten:

der von intern und extern Daten annehmen kann
Zugriff von extern über DynDNS
Aufruf von vsftp soll über den xinetd laufen, da ich später IP-Ban-Skripte ala DenyHosts oder Fail2Ban einbinden möchte
Anonymous-FTP brauch ich dazu nicht
vsftp-Zugriffe sollen im CHROOT laufen
Zugriff brauch ich nur für einen fiktiven FTP-User mit Passwort (und später mit SSL-Schlüssel o.ä.)
System-User sollen keinen Zugriff erhalten
System ist Debian Lenny.


Das Problem ist, dass zwar der Zugriff von intern auf den FTP-Server funktioniert.
Von Extern hab ich aber keinen Zugriff, obwohl im Router der Port 21, sowie die PassivePort-Range freigegeben ist.

Meine Config für xinetd:


service ftp
{
bind = 192.168.200.2
socket_type = stream
protocol = tcp
user = root
server = /usr/sbin/vsftpd
wait = no
cps = 5 10
disable = no
}


Die vsftpd.conf sieht bis jetzt so aus (Verbesserungen sind noch nicht alle enthalten):


ftp_username=ftp
#
# The default compiled in settings are fairly paranoid. This sample file
# loosens things up a bit, to make the ftp daemon more usable.
# Please see vsftpd.conf.5 for all compiled in defaults.
#
# General Settings
#
# Uncomment this to enable any form of FTP write command.
#
write_enable=YES
#
# Activate directory messages - messages given to remote users when they
# go into a certain directory.
#
dirmessage_enable=NO
# If set to NO, all directory list commands will give permission denied
dirlist_enable=YES
#
#
# It is recommended that you define on your system a unique user which the
# ftp server can use as a totally isolated and unprivileged user.
#
#nopriv_user=ftpsecure
#
# You may fully customise the login banner string:
#
ftpd_banner=Wilkommen zum FTP-Server
#
# You may activate the "-R" option to the builtin ls. This is disabled by
# default to avoid remote users being able to cause excessive I/O on large
# sites. However, some broken FTP clients such as "ncftp" and "mirror" assume
# the presence of the "-R" option, so there is a strong case for enabling it.
#
ls_recurse_enable=YES
#
# You may specify a file of disallowed anonymous e-mail addresses. Apparently
# useful for combatting certain DoS attacks.
#
#deny_email_enable=YES
#
# (default follows)
#
#banned_email_file=/etc/vsftpd.banned_emails
#
# If enabled, all user and group information in
# directory listings will be displayed as "ftp".
#
hide_ids=YES

# Local FTP user Settings
#
# Uncomment this to allow local users to log in.
#
local_enable=YES
#
# Default umask for local users is 077. You may wish to change this to 022,
# if your users expect that (022 is used by most other ftpd's)
#
local_umask=022
#
# Uncomment to put local users in a chroot() jail in their home directory
# after login.
#
chroot_local_user=YES
#
# You may specify an explicit list of local users to chroot() to their home
# users to NOT chroot().
#
#chroot_list_enable=YES
#
# (default follows)
#
#chroot_list_file=/etc/vsftpd.chroot_list
#
# The maximum data transfer rate permitted, in bytes per second, for
# local authenticated users. The default is 0 (unlimited).
#
local_max_rate=0
# Enable a user list for access to FTP
userlist_enable=YES
userlist_deny=NO


# Anonymus FTP user Settings
#
# Allow anonymous FTP?
#
anonymous_enable=NO
#
# Anonymous users will only be allowed to download files which are
# world readable.
#
anon_world_readable_only=NO
#
# Uncomment this to allow the anonymous FTP user to upload files. This only
# has an effect if the above global write enable is activated. Also, you will
# obviously need to create a directory writable by the FTP user.
#
#anon_upload_enable=NO
#
# Default umask for anonymus users is 077. You may wish to change this to 022,
# if your users expect that (022 is used by most other ftpd's)
#
#anon_umask=022
#
# Uncomment this if you want the anonymous FTP user to be able to create
# new directories.
#
#anon_mkdir_write_enable=NO
#
# Uncomment this to enable anonymus FTP users to perform other write operations
# like deletion and renaming.
#
#anon_other_write_enable=YES
#
# If you want, you can arrange for uploaded anonymous files to be owned by
# a different user. Note! Using "root" for uploaded files is not
# recommended!
#
#chown_uploads=YES
#chown_username=whoever
#
# The maximum data transfer rate permitted, in bytes per second, for anonymous
# authenticated users. The default is 0 (unlimited).
#
anon_max_rate=1


# Log Settings
#
# Log to the syslog daemon instead of using an logfile.
#
#syslog_enable=YES
#
# Uncomment this to log all FTP requests and responses.
#
log_ftp_protocol=YES
#
# Activate logging of uploads/downloads.
#
xferlog_enable=YES
#
# You may override where the log file goes if you like. The default is shown
# below.
#
vsftpd_log_file=/var/log/vsftpd.log
#
# 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=NO
#
# You may override where the log file goes if you like. The default is shown
# below.
#
xferlog_file=/var/log/xferlog
#
# Enable this to have booth logfiles. Standard xferlog and vsftpd's own style log.
#
#dual_log_enable=YES
#
# Uncomment this to enable session status information in the system process listing.
#
#setproctitle_enable=YES

# Transfer Settings
#
# Make sure PORT transfer connections originate from port 20 (ftp-data).
#
connect_from_port_20=YES
#
# You may change the default value for timing out an idle session.
#
idle_session_timeout=600
#
# You may change the default value for timing out a data connection.
#
data_connection_timeout=120
#
# Enable this and the server will recognise asynchronous ABOR requests. Not
# recommended for security (the code is non-trivial). Not enabling it,
# however, may confuse older FTP clients.
#
#async_abor_enable=YES
#
# By default the server will pretend to allow ASCII mode but in fact ignore
# the request. Turn on the below options to have the server actually do ASCII
# mangling on files when in ASCII mode.
# Beware that turning on ascii_download_enable enables malicious remote parties
# to consume your I/O resources, by issuing the command "SIZE /big/file" in
# ASCII mode.
# These ASCII options are split into upload and download because you may wish
# to enable ASCII uploads (to prevent uploaded scripts etc. from breaking),
# without the DoS risk of SIZE and ASCII downloads. ASCII mangling should be
# on the client anyway..
#
#ascii_upload_enable=YES
#ascii_download_enable=YES
#
# Set to NO if you want to disallow the PASV method of obtaining a data
# connection.
#
pasv_enable=YES
pasv_max_port=50010
pasv_min_port=50000
# PAM setting. Do NOT change this unless you know what you do!
#
pam_service_name=vsftpd

# Set listen=YES if you want vsftpd to run standalone
#
listen=NO
listen_address=192.168.200.2
force_dot_files=NO
hide_file={*}


1.Frage: Warum erhalte ich von extern noch keinen Zugriff ?
Liegt das an der vsftpd.conf mit der "listen_address="-Zeile, muss hier die DynDNS-Adresse zusätzlich rein?
Oder liegt das an der "BIND = xxx"-Zeile in der xinetd.conf ?

Danke und Gruß
Andreas

honkstar
01.11.09, 13:34
Hallo,

welche Fehlermeldung kommt beim Zugriff von aussen?
Erreicht die Anfrage überhaupt den FTP-Server, was sagen die logfiles dazu?

Roger Wilco
01.11.09, 13:36
Eine Port-Weiterleitung im Router auf 192.168.200.2:21 hast du eingerichtet und die Ports nicht nur im Paketfilter "freigegeben"?

AndreasMeier
01.11.09, 13:50
@Roger
Ja, die Port-Weiterleitung im Router auf 192.168.200.2 für die FTP-Ports 21, sowie die passiven Ports steht.
Der Router leitet meine dyn.IP an DynDNS auch weiter, dass klappt auch.

@honkstar
Log-File /var/log/vsftpd.log bleibt leer, enthält keine Einträge, bzw. enthalten nur Einträge, wenn ich von intern zugreife.
Ich teste den Zugriff über FireFTP, erhalte aber nur ein "Unable to establish connection. Please try again"

buzz768
01.11.09, 14:33
Evtl. muss das Modul nf_conntrack_ftp geladen sein..?

PS
Ach nein, hast ja einen externen Router...

AndreasMeier
01.11.09, 16:06
Ich wiederhol nochmal meine Frage, ob der nicht-funktionierende Zugriff von extern durch einen der beiden Einträge kommt ??


listen_address=192.168.200.2
BIND = 192.168.200.2

Dadurch lauscht der vsftp doch nur auf die eigenen IP-Adresse.
Aber irgendwie muss ich ihm doch auch sagen, auf welche DynDNS-Adresse er ebenfalls lauschen soll, oder?

honkstar
01.11.09, 16:12
Aber irgendwie muss ich ihm doch auch sagen, auf welche DynDNS-Adresse er ebenfalls lauschen soll, oder?
Nee, muss er nicht, weil er ja nicht auf der IP lauscht, das Lauschen übernimmt dein Router für dich, daher auch die Frage von Roger_wilco, ob du die Portweiterleitung aktiviert hast. Sieht für mich aktuell noch nicht so aus, denn sonst müsste eigentlich irgendwas in den Logs auftauchen.
Kannst ja mal per tcpdump gucken, ob überhaupt Pakete an dein FTP-Server weitergeleitet werden, oder ob dein Router sie schon vorher (trotz der Portweiterleitung) wegschmeisst.

AndreasMeier
01.11.09, 16:39
Ok, hab ich gemacht, und ja, es kommt z.Z. noch nichts durch.

Hab den Gegentest mit Port 80 gemacht, damit funktioniert die Ausgabe von tcpdump.

Ich werd morgen nochmal meinen Router querchecken, vielleicht sind nicht alle Configs übernommen (?)

Sind dann trotzdem die beiden o.g. Code-Zeilen (listen, bind) auf die IP-Adresse richtig?

buzz768
01.11.09, 17:46
listen=NO
listen_address=192.168.200.2

ist das nicht ein Widerspruch?

AndreasMeier
02.11.09, 09:13
Meiner Kenntnis nach ist das "listen"-Argument dazu da, um den FTP-Server entweder als Standalone (YES) oder über den Xinetd (NO) laufen zu lassen.
Da ich Letzteres wegen zusätzlicher Skripteinbindung mache, steht das auf NO.

buzz768
02.11.09, 09:35
Ja, aber das gilt doch ebenso für listen_address. Bei listen=NO wird listen_address wahrscheinlich schlicht ignoriert.

AndreasMeier
02.11.09, 09:57
Hm, weiß ich ehrlich gesagt nicht. Keine Ahnung. Liegt aber im Bereich des Möglichen.

Dann würde aber tortzdem noch das BIND-Argument in der xinetd.conf bleiben. Das lautet ja auch noch auf die IP-Adresse.

AndreasMeier
02.11.09, 12:06
Ich versteh langsam echt nicht mehr, was das Problem mit dem Router ist.
Ich krieg keinen FTP-Traffic von extern zustande.

Das Portforwarding für FTP ist eingerichtet.
Forwarding funktioniert für SSH und HTTP bereits länger erfolgreich u. ohne Probleme.

Ich hab jetzt mal die Konfig-Oberfläche vom Router als Bilder mit drangehängt.
Bild "router.jpg" zeigt die Forwarding-Regeln für die IP-Adresse des Servers im Überblick.
Bild "router1.jpg" zeigt die orginal vom Router zur Verfügung gestellte FTP-Regel, hier fehlen die passiven Port-Freigaben.
Bild "router2.jpg" zeigt meine eigens erstellte FTP-Regel inkl. der passiven Port-Freigaben.

Nach jedem Tausch der FTP-Regel hab ich den Router neu gestartet, sodass die Änderungen angenommen werden.

Hab ich da einen Fehler drin?

Danke und Gruß
Andreas

Stormbringer
02.11.09, 13:18
Und wenn Du gemäß:

connect_from_port_20=YES tcp20 hinzufügst?

cane
02.11.09, 13:19
Schaltee mal alle Ports auf den FTP server frei und schau ob es funktioniert.

Wenn ja liegts an der Config, wenn nicht wissen wir das es wohl eher nicht am Router liegt.

mfg
cane

AndreasMeier
02.11.09, 13:56
@stormbringer
Versteh nicht, was Du meinst, denn der von Dir genannte Config-Eintrag lässt doch nur ein YES/NO zu, oder?

@Cane,
meinst Du die Ports in der Firewall des Servers?
Die sind bereits offen.

Stormbringer
02.11.09, 16:57
@stormbringer
Versteh nicht, was Du meinst, denn der von Dir genannte Config-Eintrag lässt doch nur ein YES/NO zu, oder?
Und das forwarding auf Seiten des routers? Zuimindest die hardcopies zeigen nichts von port 20 ...

AndreasMeier
03.11.09, 09:15
Jetzt hab ich Port 20 zusätzlich mit reingenommen, geht aber trotzdem nicht.
Aber Danke für den Hinweis.


Hab gerade auch versucht, mit Telnet auf den Port 21 und Port 80 zuzugreifen.
Bei Port 80 kommt ziemlich umgehend : "connected to ....",
bei Port 21 bleibt es beim "Trying IP-Nummer.....", gefolgt von einem "Unable to connect to remote host: Connection timed out".

Während dem Telnet-Versuch hab ich tcpdump weiter mitlaufen lassen (für Port 21), hab aber keinen Muckser gesehen.

Jetzt weiß ich aber trotzdem nicht, ob jetzt der vsftp halt "nur" nicht auf die DynDNS-Adresse lauscht, oder ob's am Router liegt.

honkstar
03.11.09, 09:48
Jetzt weiß ich aber trotzdem nicht, ob jetzt der vsftp halt "nur" nicht auf die DynDNS-Adresse lauscht, oder ob's am Router liegt.
Dein vsftpd kann nicht auf deinen Dyndns-Namen lauschen ... er kennt den gar nicht.
Mach doch mal nen Portscan auf deine Dyndns-Name (von ausserhalb), dann siehst du, ob Port 21 offen ist.

AndreasMeier
03.11.09, 09:54
Ja, sorry, dass der vsftp meinen Dyndns-Namen nicht kennt, habt ihr ja oben schon gesagt.

Auf die Möglichkeit mit dem Portscan bin ich beim Versuch mit Telnet gestossen, da ich zuerst danach gesucht hab, wie ich mit PING einen Port pingen kann.
Werds mit "nmap" versuchen.

AndreasMeier
03.11.09, 22:03
Also, habs jetzt hinbekommen.

Die Freigaben haben alle gestimmt, der Router hat auch sehr gut gearbeitet.
Denn er hat auch die Firewall-Einstellungen gut beachtet und da war "Block FTP-Traffic from external networks" angekreuzt.
Nachdem in den Haken rausgenommen hab, konnte ich wunderbar auf den FTP-Server zugreifen.

Trotzdem danke für all euren Input.

Gruß
Andreas