FTP Server Connect Dauert über 30sek

djrick

Registered User
Viele die einen Router besitzen kennen das Problem:
Seit neustem wollen die ftpDs eine Ident Respsone vom Clienten. Viele die einen Router besitzen können aber nicht zu jedem Clienten den Port 113 fowarden.
Nun kann man entweder den FTPd auf eine Version downgraden die noch keine Ident abfrage verlangt oder man gibt auf der Shell des Servers als 'root":

iptables -A OUTPUT -p tcp --destination-port 113 -j REJECT --reject-with tcp-reset

ein. Das setzt die Anfrage auf Port 113 Serverseitig zurrück. Damit kann allerdings der Server auch keine Anfragen auf Port 113 mehr für andere Programme verschicken. (Beispielsweise IRCd)
 
hier ein kleines IPTABLES-Script, welches man als init-script einbinden kann.


#!/bin/bash
# den Pfad zu den iptables hier eintragen
IPT=/sbin/iptables

case "$1" in
start)
echo "führe iptables.sh aus..."
# alle iptables-rules löschen
$IPT -F
# ident Abfrage auf Port 113 zurückweisen
$IPT -A OUTPUT -p tcp --destination-port 113 -j REJECT --reject-with tcp-reset
echo "iptables geladen!"
;;
stop)
$IPT -F
echo "iptables gelöscht!"
;;
status)
echo "iptables Status:"
$IPT -L
$IPT -L -n -v
;;
*)
echo "USAGE: $0 (start|stop|status)"
;;
esac
exit
 
djrick said:
Das setzt die Anfrage auf Port 113 Serverseitig zurrück. Damit kann allerdings der Server auch keine Anfragen auf Port 113 mehr für andere Programme verschicken. (Beispielsweise IRCd)
Aus diesem Grund: Hat jemand zufälliger Weise herausgefunden, ob sich das Ident-Timeout des ProFTPd beeinflussen lässt? Wäre schön wenn man´s runtersetzen könnte auf nen paar Sekunden. Da der ProFTPd im xinetd-Mode ja die Direktiven für Ident- und DNS-Lookups in seiner Konfig nicht akzeptiert und man ihn eventuell ja auch nicht unbedingt als Standalone laufen haben möchte...
 
Das war/ist ja eben unser aller Problem:
Wir wollen kein Standalone wegen den knappen Resourcen auf einem Vserver. Wenn er im Standalone läuft läßt sich alles prima mit der *.conf anpassen aber im XIdentd Mode leider nicht. Bis jetzt habe ich auch noch keinen Weg gefunden es anders zu 'beeinflussen' als mit iptables.
Allerdings muss ich sagen dass ich bis jetzt auch noch keine Erfahrungen gemacht hab, wo ich sagen müsste "Scheisse jetzt brauch ich den Port 113"
 
djrick said:
Viele die einen Router besitzen kennen das Problem:
Seit neustem wollen die ftpDs eine Ident Respsone vom Clienten. Viele die einen Router besitzen können aber nicht zu jedem Clienten den Port 113 fowarden.
Nun kann man entweder den FTPd auf eine Version downgraden die noch keine Ident abfrage verlangt oder man gibt auf der Shell des Servers als 'root":

iptables -A OUTPUT -p tcp --destination-port 113 -j REJECT --reject-with tcp-reset

ein. Das setzt die Anfrage auf Port 113 Serverseitig zurrück. Damit kann allerdings der Server auch keine Anfragen auf Port 113 mehr für andere Programme verschicken. (Beispielsweise IRCd)

Vielen dank, werde ich gleich ausprobieren!
Ich kenn mich mit SSH überhaupt net aus, deswegen würde ich dich bitten, für den Fall der Fälle, auch einen Befehl zu Posten der das ganze rückgängig macht. Danke im vorraus! :)
 
SuperMario said:
Ich kenn mich mit SSH überhaupt net aus, deswegen würde ich dich bitten, für den Fall der Fälle, auch einen Befehl zu Posten der das ganze rückgängig macht
Als root per SSH einloggen und das eintippen:

iptables -F

gefolgt von der 'Enter' Taste natürlich...Dannach ist die Regel wieder entfernt und es steht wieder so wie am anfang.
 
...welches man als init-script einbinden kann.
Äh, wie ? In init.d anlegen und chmod +rwx filename ? Wenn ich das Script manuell aufrufe, kommt der "usage Hinweis". Also wird es so wohl nicht gehen, oder ?
Müsste es in init.d mit dem Zusatz "start" anlegen... aber wie ?
:cool:
 
djrick said:
Als root per SSH einloggen und das eintippen:

iptables -F

gefolgt von der 'Enter' Taste natürlich...Dannach ist die Regel wieder entfernt und es steht wieder so wie am anfang.

Vielen vielen dank!!!
 
Hallo Zusammen,

ich habe das Script mal überarbeitet, die entsprechende Regel wird hierbei geziel hinzugefügt und entfernt, so das kein flushen aller Regeln, sondern nur die FTPd/Ident block Regel raus gemacht wird. Auch wird die Regel als oberste hinzugefügt :)

/howto:
- Text in Datei auf dem Server einfügen (copy&paste)
- Datei nach /etc/init.d/fastftp legen
- Datei mit "chmod +x fastftp" ausführbar machen
- wenn gewünscht, mit "chkconfig fastftp on" als systemdienst einrichten
- mit "/etc/init.d/fastftp start" starten/stoppen ...



Code:
#!/bin/sh
#
# Startup script to implement local ident request blocking.
#
# chkconfig: 345 09 91
#
# description: Speeds up ftp logins for useres with port 113 dropped.
#
#  virtual name: fastftp
#  each ftp connection makes an ident (port 113) lookup on the incomming ip 
#  and a lot of home firwalls and routers drop this request, leading to a 
#  terribel time out, acctually there is no way to disable this via config or 
#  options, it's an xinetd related issue.
#  of course all firewalls could simply reject that packet, but they don't!
#  so this script drops the outgoing request to port 113 in the server.
#  (side note: some other services might use this port too, so check that) 
#
# basiert auf einem Skript von Cyberchriss aus dem ServerSupportForum.de,
# Thread hier: http://www.serversupportforum.de/showthread.php?t=864

# den Pfad zu den iptables hier eintragen, wenn er nicht erkannt wird
IPT=/sbin/iptables
[ -x $IPT ] || IPT=/usr/sbin/iptables
[ -x $IPT ] || IPT=$(which iptables)
[ -x $IPT ] ||  echo "Error, iptables binary not found, please edit the script."

case "$1" in
start)
        echo -e "\n starte $0 ..."
        # alte ftp iptables-rule loeschen
        $IPT -D OUTPUT -p tcp --destination-port 113 -j REJECT --reject-with tcp-reset &>/dev/null
        # ident Abfrage auf Port 113 zurueckweisen
        $IPT -I OUTPUT -p tcp --destination-port 113 -j REJECT --reject-with tcp-reset
;;
stop)
        $IPT -D OUTPUT -p tcp --destination-port 113 -j REJECT --reject-with tcp-reset
        echo -e "\n fastftp iptables Regel geloescht, Port 113 ausgehend wieder offen!"
;;
status)
        echo "iptables Status fuer Port 113:"
        $IPT -L|grep 113
        $IPT -L -n -v|grep 113
;;
*)
        echo "USAGE: $0 (start|stop|status)"
;;
esac
exit

Gruß MeMeD

update: ich hab mal nen (engl) Text dazu geschieben, denn AFAIK geht das ohne patchen bei der xinetd variante nicht rauszubekommen mit dem ident lookup.

update2: ich habe eine Erkennung für iptables reingemacht
 
Last edited by a moderator:
starte ./fastftp ...
iptables: Memory allocation problem

das ist doch nicht normal oder? ich hab nur die standart programme laufen wie apache etc
 
BOAR DANNKKKEEEEE :rolleyes:

Endlich kann ich mit Filezilla arbeiten. Ich habs nicht mehr geblickt, wieso ausgerechnet dieser eine FTP Account nicht geht, jedoch jeder anderer von mir zu Hause über den Router. Komischerweise konnte ich mich über webftp.de einloggen :confused:.

DANKE DANKE DANKE
 
Wie binde ich das Scirpt ein?

Hallo MeMeD,

können Sie genau erklären, wie man das Script einbinden muß? Ich weiß, ich muß mich über Putty mit root einloggen und dann...:confused: Wie bekomme ich die Datei auf den Server - via FTP?

Ich kann mir vorstellen, dass auch andere, die nicht viel Ahnung von Linux haben, daran interessiert sind!:)

Danke, Rob

+++++++++++++++++++++++++++++++++++++++++++++++++++++


memed said:
Hallo Zusammen,

ich habe das Script mal überarbeitet, die entsprechende Regel wird hierbei geziel hinzugefügt und entfernt, so das kein flushen aller Regeln, sondern nur die FTPd/Ident block Regel raus gemacht wird. Auch wird die Regel als oberste hinzugefügt :)

/howto:
- Text in Datei auf dem Server einfügen (copy&paste)
- Datei nach /etc/init.d/fastftp legen
- Datei mit "chmod +x fastftp" ausführbar machen
- wenn gewünscht, mit "chkconfig fastftp on" als systemdienst einrichten
- mit "/etc/init.d/fastftp start" starten/stoppen ...



Code:
#!/bin/sh
#
# Startup script to implement local ident request blocking.
#
# chkconfig: 345 09 91
#
# description: Speeds up ftp logins for useres with port 113 dropped.
#
#  virtual name: fastftp
#  each ftp connection makes an ident (port 113) lookup on the incomming ip 
#  and a lot of home firwalls and routers drop this request, leading to a 
#  terribel time out, acctually there is no way to disable this via config or 
#  options, it's an xinetd related issue.
#  of course all firewalls could simply reject that packet, but they don't!
#  so this script drops the outgoing request to port 113 in the server.
#  (side note: some other services might use this port too, so check that) 
#
# basiert auf einem Skript von Cyberchriss aus dem ServerSupportForum.de,
# Thread hier: http://www.serversupportforum.de/showthread.php?t=864

# den Pfad zu den iptables hier eintragen, wenn er nicht erkannt wird
IPT=/sbin/iptables
[ -x $IPT ] || IPT=/usr/sbin/iptables
[ -x $IPT ] || IPT=$(which iptables)
[ -x $IPT ] ||  echo "Error, iptables binary not found, please edit the script."

case "$1" in
start)
        echo -e "\n starte $0 ..."
        # alte ftp iptables-rule loeschen
        $IPT -D OUTPUT -p tcp --destination-port 113 -j REJECT --reject-with tcp-reset &>/dev/null
        # ident Abfrage auf Port 113 zurueckweisen
        $IPT -I OUTPUT -p tcp --destination-port 113 -j REJECT --reject-with tcp-reset
;;
stop)
        $IPT -D OUTPUT -p tcp --destination-port 113 -j REJECT --reject-with tcp-reset
        echo -e "\n fastftp iptables Regel geloescht, Port 113 ausgehend wieder offen!"
;;
status)
        echo "iptables Status fuer Port 113:"
        $IPT -L|grep 113
        $IPT -L -n -v|grep 113
;;
*)
        echo "USAGE: $0 (start|stop|status)"
;;
esac
exit

Gruß MeMeD

update: ich hab mal nen (engl) Text dazu geschieben, denn AFAIK geht das ohne patchen bei der xinetd variante nicht rauszubekommen mit dem ident lookup.

update2: ich habe eine Erkennung für iptables reingemacht
 
Änfanger !

Hallo an alle,
ich hab mal ein wenig rumgetüfftelt also das mit putty auf den server zugreifen ist ja kein ding aber wie bekommt man das script auf den server weil, ich kann nicht auf den server conecten, wäre nett wenn einer eine Seite oder einen post hätte wo man das gut beschrieben bekommt ?

cya nofear2063
 
Mal ein Tip von mir an die confixx nutzer unter debian sarge :D

also

man bearbeitet die die conf von proftpd

mcedit /etc/proftpd.conf

mann fünge am anfang bereich folgendes ein:
UseReverseDNS off
IdentLookups off


das abspeichern mit F2 und beenden mit F10

so und zum guten schluss kommt noch die würze hinzu,
in den mann proftpd neustartet:

/etc/init.d/proftpd restart


Fertig iss es,
nu viel spass :D


mfg
dennis
 
Dein Tipp ist nicht die Neuerfindung des Jahrhunderts, denn
1. gab es diesen hier schonmals im SSF und
2. läuft bei vielen der FTP (proftpd) nicht als standalone sonder mit inetd oder xinetd.... dann hilft der Trick nicht mehr viel ;)
 
Die beste Variante ist es zu vsFTP zu Wechseln da er auch um einiges Sicherer ist.. Zwar kann man dann nicht mehr viel Konfigurieren aber mir Persönlich ist ein Sicherer Server lieber... und man hat dieses Problem mit dem Ident Dienst nicht....
 
Aber proftpd-mysql ist doch mein Schatz ;)
Das kann vsftpd nicht!
 
Alle neueren und neuen OS'es haben das über den xinet.d eingebunden, und der xinet.d macht auch den ident lookup (der ftps macht ja kein Netzwerk bei inet.d/xinet.d).

Also, besser nicht machen, weil klappt vermutlich nicht wie gewünscht.

dereine said:
Mal ein Tip von mir an die confixx nutzer unter debian sarge :D

also

man bearbeitet die die conf von proftpd



mann fünge am anfang bereich folgendes ein:



das abspeichern mit F2 und beenden mit F10

so und zum guten schluss kommt noch die würze hinzu,
in den mann proftpd neustartet:




Fertig iss es,
nu viel spass :D


mfg
dennis
 
Back
Top