• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

vsftpd...zugang nur ohne firewall...

hi,

folgende situation in chronologischer reihenfolge:

1 ) vstpd installiert und konfiguriert für mehrere user (chroot_list) und userverzeichnisse
2 ) anmeldung für die user klappt wunderbar.....verzeichnisse können aber nicht gelesen werden (timeout)
3 ) firewall abgeschaltet
4 ) alles klappt
5 ) listen_port explizit in der vsftpd.conf auf 21 gesetzt und in firewall freigegen und firewall wieder aktiviert.
6 ) anmeldung für die user klappt wunderbar.....verzeichnisse können aber nicht gelesen werden (timeout)
7 ) firewall abgeschaltet.....alles geht.......
8 ) heult.... :)

Konfiguration:

Code:
# Example config file /etc/vsftpd.conf
#
# 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.
#
# If you do not change anything here you will have a minimum setup for an
# anonymus FTP server.
#
# READ THIS: This example file is NOT an exhaustive list of vsftpd options.
# Please read the vsftpd.conf.5 manual page to get a full idea of vsftpd's
# capabilities.

# 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=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="Welcome to FOOBAR FTP service."
#
# 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
# directory. If chroot_local_user is YES, then this list becomes a list of
# 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=7200


# 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=YES
#
# 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=YES
#
# 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=YES
#
# 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=7200


# 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=YES
#
# 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=NO

# PAM setting. Do NOT change this unless you know what you do!
#
pam_service_name=vsftpd

# Set to ssl_enable=YES if you want to enable SSL
ssl_enable=NO
anon_mkdir_write_enable=NO
anon_upload_enable=NO
chroot_local_user=NO
ftpd_banner=Welcome message
idle_session_timeout=900
local_enable=YES
log_ftp_protocol=NO
max_clients=1000
max_per_ip=3000
pasv_enable=YES
pasv_max_port=40500
pasv_min_port=40000
ssl_sslv2=NO
ssl_sslv3=NO
ssl_tlsv1=YES
write_enable=YES
listen=YES

user_config_dir=/etc/vsftpd/users
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/vsftpd.chroot_list
listen_port=21


Hat jemand vobn Euch ne Idee???
Es muss ja definitiv was mit der Firewall zu tun haben. Ohne klappt es ja....

Grüße und Danke schon mal

EDIT: das ding läuft standalone....
<EDIT>
log mit firewall an:
Code:
Jul 25 14:44:20 21xxxxxxx vsftpd: Fri Jul 25 14:44:20 2008 [pid 5203] CONNECT: Client "212.xxx.xxx.xxx"
Jul 25 14:44:20 21xxxxxxx vsftpd: Fri Jul 25 14:44:20 2008 [pid 5202] [xxxxx] OK LOGIN: Client "212.xxx.xxx.xxx"
dann....nix mehr

allerdings klappt es wenn ich auch diese ports freigebe (wie oben konfiguriert):

Code:
pasv_max_port=40500
pasv_min_port=40000

überall ist dokumentiert daß nur die ports 20 und/oder 21 freigegeben werden müssen...was hat es mit diesen ports auf sich?


</EDIT>
 

Tooltime

Advanced Hacker
Da fällt mir spontan das Stichwort passiv- und aktiv-ftp ein. Um dich mal zu zitieren, überall steht das aktiv-ftp durch eine Firewall nicht funktioniert. Aber vielleicht ist es ja etwas ganz anderes.
 

Tooltime

Advanced Hacker
Nochmal drüber nachgedacht, kann eigentlich nicht sein. Bei aktiv-ftp wird eine weitere Verbindung vom Server zum Client aufgebaut, das dürfte die Firewall auf dem Server nicht blockieren. Die Ports für tcp und udp freigegeben?
 
OP
K

Killerfritte

Member
ich muss mich erstmal korrigieren.

auch die freigabe des portbereichs für

Code:
pasv_max_port=40500
pasv_min_port=40000

hilft nicht (wie ich weiter oben irrtümlich dachte).

eure anmerkungen helfen leider auch nicht. das mit dem aktiven-ftp kann nicht sein da ein anderes system exakt so läuft.
das mit UDP-freigabe hat auch nicht geholfen....

ursprung des ganzen ist daß ich bei openSUSE auf einen 64bit-System mittels YAST erfolgreich diesen vsftpd konfiguriert habe (auch stanalone).

jetzt habe ich exakt diese konfiguration auf einem 32-bit system nachgebildet (allerdings manuell, da YAST dies hier nicht angeboten hat).
es ist wirklich alles 1:1 abgebildet (dateistruktur, selbe dateirechte, selbe config-files) und es klappt nur wenn ich die firewall abschalte.

in welchem file werden denn die portfreigaben der firewall gespeichert?
YAST hat auf dem lauffähigen 64bit-system auch nur den vsftpd-dienst freigeschaltet. die details nennt er allerdings nicht.

seltsam ist ja auch daß die AUTHENTIFIZIERUNG erfolgreich funktioniert.


grüße und danke schonmal
 

Tooltime

Advanced Hacker
Also ein Blick in /etc/services sagt:
Code:
ftp-data         20/tcp    # File Transfer [Default Data]
ftp-data         20/udp    # File Transfer [Default Data]
#                          Jon Postel <postel&isi.edu>
ftp-data         20/sctp   # FTP
#                          IETF TSVWG
#                          Randall Stewart <rrs&cisco.com>
#                          [RFC4960]
ftp              21/tcp    # File Transfer [Control]
ftp              21/udp    # File Transfer [Control]
#                          Jon Postel <postel&isi.edu>
ftp              21/sctp   # FTP
Damit wissen wir wofür die Ports gut sind. Scheint als würde das Problem bei Port 20 liegen, kein Datentranfer.
Die Datei /etc/sysconfig/SuSEfirewall2.d/services/vsftpd dürfte die Schablone für YaST sein, um die Ports zu öffnen:
Code:
# space separated list of allowed TCP ports
TCP="ftp ftp-data"

# space separated list of allowed UDP ports
UDP="ftp-data"
Beim freigeben von vsftp für externe Schnittstellen mit der Firewall wird in /etc/sysconfig/SuSEfirewall2 vollgender Wert verändert.
Code:
# Packages can drop a configuration file that specifies all required
# ports into /usr/share/SuSEfirewall2/services . That is handy for
# services that require multiple ports or protocols. Enter the space
# separated list of configuration files you want to load.
#
FW_CONFIGURATIONS_EXT="vsftpd"
Hast du eigentlich mal eine Blick in /var/log/firewall geworfen? Falls keine Meldungen auflaufen, mit YaST -> Firewall den loglevel erhöhen. Das ist eigentlich der beste Ansatz, erst mal schauen welche Pakete blockiert werden, dann kriegen wir die auch irgendwie durch die Firewall durch.
 

nbkr

Guru
Für FTP brauchst du das modul conntrack_ftp. Das macht die zugehörigen Ports der Datenverbindung automatisch auf.
 
OP
K

Killerfritte

Member
nbkr schrieb:
Für FTP brauchst du das modul conntrack_ftp. Das macht die zugehörigen Ports der Datenverbindung automatisch auf.
das gibt es leider standardmässig leider nicht. auf dem 64bit-system ists auch nicht vorhanden (muss also auch ohne gehen).
 
OP
K

Killerfritte

Member
@tooltime:

erstmal danke für deine hilfe :) ... komm hier echt nicht weiter


alsooo:

/etc/services gibt folgendes her:

Code:
ftp-data         20/tcp    # File Transfer [Default Data]
ftp-data         20/udp    # File Transfer [Default Data]
ftp              21/tcp    # File Transfer [Control]

das sieht ja schon ein wenig anders aus......kann aber auch nicht wirklich damit was anfangen
soll ich dieses file mal deinem file anpassen? könnte das helfen?

grüße
 

Tooltime

Advanced Hacker
Änderungen an /etc/services sind überflüssig. Sie enthält nur ein Zuordnung von Dienstname zu Portnummer (smtp 25, http 80, usw.). Ich wollte nur zeigen wie ich an die Information wer ist Port 20, 21 heran gekommen bin.

Interessant wäre wie gesagt ein Blick in /var/log/firewall, dort sollte exakt stehen Quelle-IP/Port Ziel-IP/Port und warum abgelehnt. Einfach mal Fehler provozieren und schauen welche Einträge hinzu gekommen sind.
 
OP
K

Killerfritte

Member
die ausgabe von eben war ge'grep'ped:

im original-file siehts dann so aus:

Code:
ftp-data         20/tcp    # File Transfer [Default Data]
ftp-data         20/udp    # File Transfer [Default Data]
ftp              21/tcp    # File Transfer [Control]
fsp              21/udp    # File Transfer [Control]

wat is'n fsp ??????

ich glaub jetzt hilft nur noch alkohol...... :)


grüße
 
OP
K

Killerfritte

Member
Killerfritte schrieb:
die ausgabe von eben war ge'grep'ped:

im original-file siehts dann so aus:

Code:
ftp-data         20/tcp    # File Transfer [Default Data]
ftp-data         20/udp    # File Transfer [Default Data]
ftp              21/tcp    # File Transfer [Control]
fsp              21/udp    # File Transfer [Control]

wat is'n fsp ??????

ich glaub jetzt hilft nur noch alkohol...... :)


grüße


<EDIT>

ein tail auf /var/log/firewall schmeisst mir das hier raus (ips-ge'x'ted)

Code:
20 ID=19204 DF PROTO=TCP SPT=2994 DPT=35899 WINDOW=16384 RES=0x00 SYN URGP=0 OPT (0204058401010402)
Jul 25 22:12:14 xxx-xxx-xxx-xxx kernel: SFW2-INext-DROP-DEFLT-INV IN=eth0 OUT= MAC=xxxxxxx SRC=xxx.xxx.xxx.xxx DST=xxx.xxx.xxx.xxx LEN=40 TOS=0x00 PREC=0x00 TTL=248 ID=8338 PROTO=TCP SPT=2993 DPT=61463 WINDOW=0 RES=0x00 RST URGP=0

</EDIT>
 
OP
K

Killerfritte

Member
ouupppsss.....
jetzt zitiere ich mich schon selber.... :)
wenn die kanne wein leer ist SIEz ich mich hier selber......

sorry :)
 
OP
K

Killerfritte

Member
und die ports ändern sich je nach aufruf:

Code:
SPT=2996 DPT=56643
Code:
SPT=2994 DPT=35899
Code:
SPT=2995 DPT=38737

zwischen 2993 und 2996 schwingt sich das grade ein.....scheinen aber client-ports zu sein
 

Tooltime

Advanced Hacker
Also ich hab noch mal ein einwenig gegrübelt und nach gesehen und das Resultat ist, der Meister hat Recht!
nbkr schrieb:
Für FTP brauchst du das modul conntrack_ftp. Das macht die zugehörigen Ports der Datenverbindung automatisch auf.
In /etc/sysconfig/SuSEfirewall2 den Wert
FW_LOAD_MODULES="nf_conntrack_netbios_ns"
ändern in
FW_LOAD_MODULES="nf_conntrack_netbios_ns nf_conntrack_ftp"
und die Firewall neu starten. Natürlich müssen die Ports 20 u. 21 weiterhin offen bleiben.
Wahrscheinlich benutzt du auf deinen anderen System andere Firewall-Einstellungen, z.B. Netzwerk gehört zur internen Zone und "Firewall vor interner Zone schützen" ist nicht aktiviert und schon sind alle Ports offen.
 
Oben