Login mit FTP Client nur Active möglich

Operaiter

New Member
Hallöchen alle zusammen,

ich habe mir einen PROFTPD-Server aufgesetzt. Soweit hat alles geklappt.

Als ich mich mit dem Client verbinden wollte konnte ich mich nicht einloggen.
Wenn ich den Transfer Mode des Clients auf Active stelle kann ich mich "normal" in den Server einloggen und dort arbeiten.

PHP:
19:06:13    Status:    Connecting to 85.25.64.92:21...
19:06:13    Status:    Connection established, waiting for welcome message...
19:06:13    Response:    220 FTP Server ready.
19:06:13    Command:    USER *USERNAME*
19:06:13    Response:    331 Password required for *USERNAME*.
19:06:13    Command:    PASS ************
19:06:13    Response:    230 User *USERNAME* logged in.
19:06:13    Status:    Connected
19:06:13    Status:    Retrieving directory listing...
19:06:13    Command:    PWD
19:06:13    Response:    257 "/" is current directory.
19:06:13    Status:    Directory listing successful
19:06:43    Status:    Sending keep-alive command
19:06:43    Command:    NOOP
19:06:43    Response:    200 NOOP command successful
19:07:13    Status:    Sending keep-alive command
19:07:13    Command:    TYPE I
19:07:13    Response:    200 Type set to I
19:07:43    Status:    Sending keep-alive command
19:07:43    Command:    TYPE I
19:07:43    Response:    200 Type set to I
19:08:13    Status:    Sending keep-alive command
19:08:13    Command:    PWD
19:08:13    Response:    257 "/" is current directory.
19:08:43    Status:    Sending keep-alive command
19:08:43    Command:    NOOP
19:08:43    Response:    200 NOOP command successful
19:09:13    Status:    Sending keep-alive command
19:09:13    Command:    NOOP
19:09:13    Response:    200 NOOP command successful
19:09:43    Status:    Sending keep-alive command
19:09:44    Command:    TYPE I
19:09:44    Response:    200 Type set to I

Wenn ich Transfer Mode auf Passive stelle kann ich mich "scheinbar" einloggen erhalte aber keine Verzeichnis Auflistung.

PHP:
19:11:22    Status:    Connecting to 85.25.64.92:21...
19:11:22    Status:    Connection established, waiting for welcome message...
19:11:22    Response:    220 FTP Server ready.
19:11:22    Command:    USER *USERNAME*
19:11:22    Response:    331 Password required for *USERNAME*.
19:11:22    Command:    PASS **********
19:11:23    Response:    230 User *USERNAME* logged in.
19:11:23    Status:    Connected
19:11:23    Status:    Retrieving directory listing...
19:11:23    Command:    PWD
19:11:23    Response:    257 "/" is current directory.
19:11:23    Command:    TYPE I
19:11:23    Response:    200 Type set to I
19:11:23    Command:    PASV
19:11:23    Response:    227 Entering Passive Mode (85,25,64,92,131,66).
19:11:23    Command:    LIST

Ich habe euch jeweils die Logs aus dem Client geschickt.

Normalerweise muss ich für eine Passive Verbindung Ports in der Firewall freigeben, oder? Ich habs mal probiert, zeigte aber leider auch keine Wirkung. (Vll falsche Ports freigegeben?)

Was kann ich tun um den Passiven Modus zu ermöglichen? Würde mich sehr über Lösungsansätze freuen :]

Ich poste mal noch meine conf. ;)

PHP:
#
# /etc/proftpd/proftpd.conf -- This is a basic ProFTPD configuration file.
# To really apply changes reload proftpd after modifications.
# 

# Includes DSO modules
Include /etc/proftpd/modules.conf

# Set off to disable IPv6 support which is annoying on IPv4 only boxes.
UseIPv6                off

ServerName            "Songs-Love-Videoclips"
ServerType            standalone
DeferWelcome            off

MultilineRFC2228        on
DefaultServer            on
ShowSymlinks            on

TimeoutNoTransfer        1800
TimeoutStalled            1800
TimeoutIdle            1800

DisplayLogin                    welcome.msg
DisplayFirstChdir               .message
ListOptions                    "-l"

DenyFilter            \*.*/

# Port 21 is the standard FTP port.
Port                21

# In some cases you have to specify passive ports range to by-pass
# firewall limitations. Ephemeral ports can be used for that, but
# feel free to use a more narrow range.
PassivePorts                    49152 65534

# To prevent DoS attacks, set the maximum number of child processes
# to 30.  If you need to allow more than 30 concurrent connections
# at once, simply increase this value.  Note that this ONLY works
# in standalone mode, in inetd mode you should use an inetd server
# that allows you to limit maximum number of processes per service
# (such as xinetd)
MaxInstances            30

# Set the user and group that the server normally runs at.
User                proftpd
Group                nogroup

# Umask 022 is a good standard umask to prevent new files and dirs
# (second parm) from being group and world writable.
Umask                007  077
# Normally, we want files to be overwriteable.
AllowOverwrite            on

# Uncomment this if you are using NIS or LDAP to retrieve passwords:
# PersistentPasswd        off

# Be warned: use of this directive impacts CPU average load!
#
# Uncomment this if you like to see progress and transfer rate with ftpwho
# in downloads. That is not needed for uploads rates.
# UseSendFile            off

TransferLog /var/log/proftpd/xferlog
SystemLog   /var/log/proftpd/proftpd.log

<IfModule mod_tls.c>
TLSEngine on
TLSLog    /var/log/proftpd/tls.log
TLSProtocol SSLv23
TLSOptions    NoCertRequest
TLSRSACertificateFile     /etc/proftpd/ssl/proftpd.cert.pem
TLSRSACertificateKeyFile    /etc/proftpd/ssl/proftpd.key.pem
TLSVerifyClient    off
TLSRequired    off
</IfModule>

<IfModule mod_quota.c>
QuotaEngine on
</IfModule>

<IfModule mod_ratio.c>
Ratios on
</IfModule>


# Delay engine reduces impact of the so-called Timing Attack described in
# http://security.lss.hr/index.php?page=details&ID=LSS-2004-10-02
# It is on by default. 
<IfModule mod_delay.c>
DelayEngine on
</IfModule>

<IfModule mod_ctrls.c>
ControlsEngine        on
ControlsMaxClients    2
ControlsLog           /var/log/proftpd/controls.log
ControlsInterval      5
ControlsSocket        /var/run/proftpd/proftpd.sock
</IfModule>

<IfModule mod_ctrls_admin.c>
AdminControlsEngine on
</IfModule>

# A basic anonymous configuration, no upload directories.


RequireValidShell        off
DefaultRoot ~
IdentLookups off
UseReverseDNS off
ServerIdent on "FTP Server ready."


Vielen Dank!
LG OP!


EDIT: Sind die PassivenPorts UDP oder TCP?! :-D
 
Last edited by a moderator:
Bei den PassivePorts handelt es sich um TCP. Falls du eine Firewall einsetzt, musst du diese entsprechend anpassen.

Gruß
The_Nero
 
mhmm...

ich habe meine Firewall wiefolgt konfiguriert.

Habe inzwischen in der conf den Portrange verkleinert.

Dementsprechend auch die Firewall angepasst, sollte halt mal ein Versuch sein. Doch leider ist der Login dennoch nicht möglich :(

MOD: Bilder immer als Anhang. Danke!

Wäre coool wenn einer von euch nochmal drüber gucken könnte. Solangsam gehen mir die Ideen aus ;)

Danke!
 

Attachments

  • firewall.png
    firewall.png
    26.6 KB · Views: 108
Last edited by a moderator:
Zeig uns bitte nochmal ein Log nach dem umstellen der Passivport-Range.
Die interessanten Zeilen sind:
Code:
Command:    PASV
Response:    227 Entering Passive Mode (85,25,64,92,131,66).

Denn da kannst du sehen, auf welchen Port der Client reinkommen soll. In dem Fall auf Port 131*256 + 66 = 33602

Wenn das stimmt und der Server die richtige Portrange rausgibt, ist der Fehler in den Firewallsettings zu suchen.

Gruss
 
Hallo kannnix :]

PHP:
11:57:18    Command:    PASV
11:57:19    Response:    227 Entering Passive Mode (85,25,64,92,20,30).
11:57:19    Command:    LIST

Habe Client auf Passiv umgestellt und das ist seine Antwort.

:)

LG

Edit: Damit komme ich mit deinen Berechnungen auf 5186. Ich habe Port 5000 bis 5500 freigegeben. :-D

Arrggg =]
 
Last edited by a moderator:
Hast du das jetzt nochmal geändert?
Ursprünglich wolltest du dem Ftp Server andere Passivports geben:
PHP:
# In some cases you have to specify passive ports range to by-pass
# firewall limitations. Ephemeral ports can be used for that, but
# feel free to use a more narrow range.
PassivePorts                    49152 65534

Gruss

PS: Der Port im letzten Post ist 20*256 + 30 = 5150
 
Hallo kannnix,

ich habe bei Google bissel rumgeguckt. Ein paar Menschen konnte ihre Probleme lösen, indem sie den Portrange verkleinerten.

Die Ports die ich in meinem ersten Port in der conf hatte sind die ProFTPd Standart Passive Ports.

Diese habe ich nun angepasst auf: 5000:5500 (In der proFTPd Conf UND in der Firewall) angepasst.

Leider konnte ichdas Problem dadurch immer noch nicht lösen :(

Der errechnete Port 5150 liegt ja immer noch in meinem PortRange. Also sollte es ja eigentlich laufen.

Gibt es irgendwelche Logs die uns helfen? Gibts es vom Server Logs? Oder kann ich ein Tool laufen lassen, welches mir protokolliert was auf den Server über welchen Port usw zugrieft? Dann kann ich die Firewall überprüfen....

Nun ja :]

Danke!

LG OP
 
Ok, damit sollte die Konfiguration seitens des Proftpd passen.

Nun kann es nur noch an der Firewall liegen. Darüber müsstest du jetzt noch mehr Details erzählen, welche du einsetzt. Normalerweise iptables, aber da du einen Screenshot mit Webinterface gepostet hast, denke ich dass du evtl was anderes od eine HW Firewall verwendest.

Lass mal bitte ein iptables-save durchlaufen.

Gruss
 
Ich habe einen Server Bei Server 4 You :]

Die Firewall kann ich über die Weboberfläche konfigurieren. Die Weboberfläche konfiguriert dann aber iptables auf dem Server.

IpSave:
PHP:
# Generated by iptables-save v1.3.6 on Fri Oct 15 14:45:39 2010
*mangle
:PREROUTING ACCEPT [73622193:7226599593]
:INPUT ACCEPT [73622193:7226599593]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [120402612:152184415340]
:POSTROUTING ACCEPT [120402612:152184415340]
COMMIT
# Completed on Fri Oct 15 14:45:39 2010
# Generated by iptables-save v1.3.6 on Fri Oct 15 14:45:39 2010
*filter
:INPUT ACCEPT [128:10664]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [120402612:152184415340]
:allips - [0:0]
-A INPUT -j allips 
-A allips -d 127.0.0.1 -j ACCEPT 
-A allips -p tcp -m tcp --dport 20:21 -j ACCEPT 
-A allips -p tcp -m tcp --dport 22 -j ACCEPT 
-A allips -p tcp -m tcp --dport 80 -j ACCEPT 
-A allips -p tcp -m tcp --dport 443 -j ACCEPT 
-A allips -p tcp -m tcp --dport 8443 -j ACCEPT 
-A allips -p udp -m udp --sport 53 -j ACCEPT 
-A allips -p udp -m udp --sport 123 -j ACCEPT 
-A allips -p icmp -j ACCEPT 
-A allips -s 64.131.90.38 -p tcp -m tcp --sport 5224 -j ACCEPT 
-A allips -p tcp -m tcp --dport 3306 -j ACCEPT 
-A allips -p tcp -m tcp --sport 0:1023 ! --tcp-flags FIN,SYN,RST,ACK SYN -j ACCEPT 
-A allips -j DROP 
COMMIT
# Completed on Fri Oct 15 14:45:39 2010

Hier steht nun leider nichts von meinem freigegebenen PortRange :(
 
Ok, dann hast du nun 2 Möglichkeiten:

a) Kernelmodul ip_conntrack_ftp laden
Dieses Modul "liest" deinen Ftp Traffic mit, und erkennt, welchen Passivport Proftpd rausgeschickt hat und öffnet dann temporär kurz diesen Port bis die Verbindung eintrifft. Nachteil ist, dass diese Modul nur den Port 21 üerwacht. Verlegst du evtl später den Port wird es nicht mehr funktionieren.

ODER

b) Du fügst die iptables Rule manuell hinzu. Keine Ahnung wie das bei Server4you mit der Firewall gemacht ist und warum das bei dir nicht funktioniert. Ich würds an deiner Stelle nicht verwenden.

iptables -A INPUT -p tcp -m tcp --dport 49152:65534 --syn -j ACCEPT

gruss
 
iptables -A INPUT -p tcp -m tcp --dport 49152:65534 --syn -j ACCEPT

gruss

Habe ich nun gemacht. Kann mich nur leider immer noch nicht einloggen.

ABER!!!

Ich habe kurzzeitig meine Firewall deaktiviert (jaja ich weiß... :-D ) und konnte mich immer noch nicht einloggen. Selbe Fehlermeldung wie immer.

Ich ruf jetzt mal bei S4Y an :]
 
Ich habe kurzzeitig meine Firewall deaktiviert (jaja ich weiß... :-D ) ...
Die Diskussion wollte ich eigentlich nicht führen, aber jetzt wo du es ansprichst...

Meines Erachtens sind Packetfilter, wenn sie auf dem zu schützenden Server laufen eh für die Katz. Man muss sich nur mal kurz vor Augen führen was denn konkret passiert:
Es werden meistens alle Ports geblockt, ausser die 2-3 Sachen die man haben möchte (z.B. www und ftp Server). Genauso gut kann die Firewall auch ausgeschalten sein, denn auf Ports, auf denen kein Dienst lauscht kann auch nicht hinverbunden werden.

Ist jetzt angenommen ein remote ausnutzbarer Bug im Ftp Server, kommt der Angreifer also doch über den offenen Ftpport aufs System und wir haben eh verloren. Da nützt die Firewall genau gar nichts.
Und verwendet man die Firewall um Dienste nach aussen zu sperren, dann kann ich sie auch gleich deaktivieren, bzw nur auf den Interfaces lauschen lassen wo sie gebraucht werden (z.B. 127.0.0.1).

Gruss
 
...man muss nach Änderungen in dem online Firewall Edit Menü des Hosters die Firewall neustarten :-D

Darauf muss einer erstmal kommen -,- Vorallem weil der Server dann 10 Minuten ungeschützt ist...

Auch backe ey -,-

Mitlerweile funktioniert dann auch der Passive FTP Login :]

...Ich glaube ich les mir mal paar Bücher über IPTABLES durch damit ich da nicht weiter an meinen Hoster gebunden bin ;)

Vielen Dank für eure geduldige Hilfe!!!!

Danke Danke Danke!!!

LG OP :]
 
Back
Top