proftpd in einer jail :\

pertze

DuBHeaD
hallo,

habe gerade meine erste jail in betrieb genommen und bis auf ein paar kleine sachen ging alles glatt

in der jail läuft nur proftpd
die jail hat die ip 192.168.100.1
den proftpd habe ich mit 'Bind 192.168.100.1' an die jail gebunden

in meiner natd.conf steht das hier:
Code:
redirect_port tcp 192.168.100.1:21 21
redirect_port tcp 192.168.100.1:20 20
redirect_port udp 192.168.100.1:21 21
redirect_port udp 192.168.100.1:20 20
wenn ich nun aber auf den ftp server zugreifen möchte, passiert folgendes:
Code:
$ ftp xorn.dyndns.org
Connected to xorn.dyndns.org.
220 Server is ready
Name (xorn.dyndns.org:root): jailuser
331 Password required for jailuser.
Password:
230 --> Login successful
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
500 EPSV not understood
227 Entering Passive Mode (217,225,247,196,163,198)
ftp: connect: Operation timed out
ftp>

wenn ich aus der jail ein 'ftp localhost' mache, funktioniert es

so, dann habe ich mir meine ipfw rules angeschaut
wenn ich ein 'allow all' an den anfang setze, dann funktioniert es, wenn ich auf dem hostsystem eine ftp session aufmachen will

NICHT aber, wenn ich es von meinem win client aus versuche
das raff ich icht net

kann mir bitte jemand einen tip geben, was ich übersehen hab?

danke, vinc`

meine ipfw rules sind hier zu finden:
http://www.tobiasgunkel.com/fwrules

PS:
wenn ich im windows cmd mode 'ftp xorn.dyndns.org' eingebe, kommt:
FTP: connect --> unbekannte fehlernummer

ein 'tcpdump' im hostsystem ergibt kein output, wenn ich von win versuche zu connecten
in der jail kommt dieser output
Code:
21:42:08.275107 PPPoE  [ses 0x1cb4] pD9E1F9EF.dip.t-dialin.net.4033 > dns03.btx.dtag.de.domain:  315+ A? xorn.dyndns.org. (33)
21:42:08.432009 PPPoE  [ses 0x1cb4] dns03.btx.dtag.de.domain > pD9E1F9EF.dip.t-dialin.net.4033:  315 1/5/5 A[|domain] (DF)
 
hi,

also die option hat nix verändert, schade :\

zu sagen wäre vielleicht noch, dass es mit der selben konfiguration schon lange zeit vorher geklappt hat, nur da lief der ftp im hostsystem

über den win client, kann ich weder im active, noch im passive mode eine verbindung herstellen
 
was spuckt das /var/log/message aus? kommen da irgendwelche fehler?

Habe Hier meine config , vielleicht hilft dir das weiter
Code:
ServerName                      "FBINET"
ServerType                      standalone
DefaultServer                   on

Port                            21
Umask                           022
AllowForeignAddress on
#wichtiger eintrag
DefaultRoot ~/ ftponly,!users
PassivePorts 63000 63999
MaxInstances                    30

User                            nobody
Group                           nogroup

# To cause every FTP user to be "jailed" (chrooted) into their home
# directory, uncomment this line.
DefaultRoot ~

# Normally, we want files to be overwriteable.
<Directory />
  AllowOverwrite                on
</Directory>
 
Hallo happy.

Genau dieses Problem hatte ich auch. Nach langem Hin-und-Her bin ich drauf gekommen, dass die passive-ports durch die firewall-rules blockiert waren.

Hast Du die "passive ports" in Deinen firewall-rules und nat-rules berücksichtigt?

Grüße

Jürgen
 
Hallo, ich bin's nochmal.

Also ich habe jetzt statt ipfw den openbsd pf laufen und schaffe es einfach nicht den Proftpd zum laufen zu bringen :(.

In der proftpd.conf habe ich nun die Passiv Ports festgelegt und den Daemon an die Jail-IP gebunden
Code:
PassivePorts 40000, 45000
Bind 192.168.100.1
In meiner pf.conf habe ich den FTP Port und die oben definierte PassivePort Range freigegeben
Code:
InServicesTCP = "{ ftp, 39999 >< 45001 }"
[...]
pass in quick on $Ext inet proto tcp from any to any port $InServicesTCP flags S/SAFR keep state label ServicesTCP
Soweit sogut ...
Nun muss ich ja alle ankommenden Pakete auf Port 21 und jene aus der Portrange auf die IP des Jails redirecten.
Code:
rdr on tun0 proto tcp from any to $Int port 21 -> 192.168.100.1 port 21
rdr on tun0 proto tcp from any to $Int port 39999:45001 -> 192.168.100.1 port 21
So, ich habe für $Int bzw. tun0 schon andere Werte genommen, aber nichts hat geholfen.
Ich habe ja in meiner rc.conf noch folgendes von NATD mit ipf stehen
Code:
natd_program="/sbin/natd"
natd_enable="YES"
natd_interface="tun0"
natd_flags="-dynamic -f /etc/firewall/natd.conf"
und in der natd.conf sind die Einträge
Code:
redirect_port tcp 192.168.100.1:21 21
redirect_port tcp 192.168.100.1:39999-45001 39999-45001
Ich habe mal die rdr Rules aus der pf.conf genommen und versucht es über die natd.conf laufen zu lassen, aber wieder ohne Erfolg.

Ich bin auch jetzt total verwirrt welches ich nun nehmen soll ... :confused:

Weiterhin ist mir auch noch etwas merkwürdiges aufgefallen:
Wenn ich mir mit sockstat -4cl anschauen möchte unter welchen user der Proftpd läuft, dann wird mir ein User angezeigt, den es in der Jail 100%ig nicht gibt, wohl aber im Hostsystem.
Ich habe in der proftpd.conf aber den User und die Gruppe "proftpd" angegeben. Wie kann sowas sein?

Kann sich einer meiner armen Seele nochmal annehmen, bitte, damit ich den FTP endlich zum laufen bekomme.
THX

vinc`

Edit: Tipfehler
 
Zuletzt bearbeitet:
Hallo,

Nun muss ich ja alle ankommenden Pakete auf Port 21 und jene aus der Portrange auf die IP des Jails redirecten. code: rdr on tun0 proto tcp from any to $Int port 21 -> 192.168.100.1 port 21 rdr on tun0 proto tcp from any to $Int port 39999:45001 -> 192.168.100.1 port 21

Wenn ich das richtig verstehe, leitet PF den an port 40000-45000 anliegenden Datenstrom nach port 21 in Deiner jail um.
Bloß proftpd erwartet - lt. Deiner Konfiguration - einen Datenstrom an den ports 40000-45000.
Setz da mal an:)

Viele Grüße

Jürgen
 
Hallo,

das war nur ein Tipfehler.
Meine pf rule sieht nun so aus
Code:
rdr on $Ext proto tcp from any to any port 21 -> 192.168.100.1 port 21
rdr on $Ext proto tcp from any to any port 40000:45000 -> 192.168.100.1 port 40000:45000
Ich habe nun das Problem, dass ich zwar von außen auf den FTP-Server connecten kann, aber nachdem ich ein 'ls' eingegeben habe, wieder derselbe Fehler kommt wie oben. Obwohl ich nun die PassivePorts berücksichtigt habe ...

Aus meinem internen Netz kann ich nicht auf den FTP connecten ... ich weiß nun auch nicht mehr weiter.

vinc`
 
Btw, was bedeuten eigentlich die beiden letzten Zahlen:
Code:
ftp> ls
227 Entering Passive Mode (192,168,100,1,158,69).
Die ersten vier sind ja die IP-Adresse meiner Jail.
 
Hallo vincent.v

Vielleicht wäre es mal sinnvoll, das Program "ethereal" mitlaufen zu lassen, um zu sehen, wo es klemmt.
Das Tool ist ein graphisches TCP/IP-Trace-Tool (benötigt gtk).

Link: http://www.FreeBSD.org/cgi/ports.cgi?query=ethereal&stype=all

Ansonsten tippe ich auf eine firewall-Regel, die die Weiterleitung der Datenpakete von der jail nach tun0 verhindert.

Hast Du denn das "rdr ... tun0 ..." auch mit dem passenden Interface fürs Intranet angelegt, also z.B. "rdr ... [Internes Interface] ..."?????

Grüße

Jürgen
 
Zuletzt bearbeitet von einem Moderator:
Hallo juedan,

also ich habe gestern erfolgreich das active ftp geschafft, d.h. ich habe von einem anderen Rechner von nem Kumpel Files up -und downgeloaded.

Passive ging immer noch nicht.

Meine Firewall Regeln betrefflich ftp sehen so aus:
Code:
Ext = "tun0" # Device an dem das Internet angeschlossen ist
Int = "xl0" # Device an dem das interne Netz haengt
IntNet = "192.168.200.0/24"

InServicesTCP = "{ ssh, ftp, auth, 80, 443, 39999 >< 45001, 25499 >< 25551, 4660 >< 4666, 10002 }"

rdr on $Ext proto tcp from !$IntNet to any port 21 -> 192.168.100.1 port 21
rdr on $Ext proto tcp from !$IntNet to any port 40000:45000 -> 192.168.100.1 port 40000:45000

pass in quick on $Ext inet proto tcp from any to any port $InServicesTCP flags S/SAFR keep state label ServicesTCP
Da ich active ftp machen kann, wüßte ich nicht warum was an den fw rules falsch sein soll ...

Das mit ethereal ist ein guter Tip, aber leider habe ich kein X auf dem Server, drum werd ich es nicht nutzen können.

vinc`
 
Hallöle vincent.v,

Auszug aus Deiner proftpd.conf:
code:
PassivePorts 40000, 45000
Bind 192.168.100.1

Das was Du in Deiner proftpd.conf eingetragen hast bedeutet: port 40000 und port 45000, aber stellt kein Intervall dar!

Weiterhin ist mir aufgefallen:
InServicesTCP = "{ ssh, ftp, auth, 80, 443, 39999 >< 45001, 25499 >< 25551, 4660 >< 4666, 10002 }"

Bist Du Dir sicher, dass pf den Konstrukt "39999 >< 45001" annimmt?
Sollte es nicht besser "40000:45000" heißen?

Du hast zwischen Variablenname, Gleichheitszeichen und Variablenwert jeweils Leerzeichen. Sind die auch im Skript so eingetragen? Wenn ja, dann raus damit. (ich will Dich damit nicht bloßstellen, Tipfehler sind schnell passiert:D )

Schalte doch mal das debugging von proftpd in der Konfiguration ein und schau mal im log-file nach, was das System ausspuckt.

Viele Grüße

Jürgen
 
Hi juedan,

danke erstmal, dass Du Dir noch solche Mühe gibst. :>

Also der ':' ist laut manpage nur in redirect Regeln erlaubt, bei den pass in Regeln nimmt man die '><' Operatoren.
Pf meckert ja auch beim Laden der Rules nicht über Syntax.

Ich habe ja das komplette Firewallscript von dem bekannten OpenBSD Howto genommen, von daher sind auch sonstige Syntaxfehler ausgeschlossen, denk ich.

Bei den PassivePorts in der proftpd.conf hast Du recht, das war keine Angabe für eine Range sondern nur eine Aufzählung. Ich hatte mich schon gefreut, dass wir den Fehler gefunden haben, doch leider hatte ich mich nur in diesem Thread verschrieben, in der config war das Komma nicht vorhanden :\.

Ich werde jetzt mal das Debuging einschalten, mal sehen ob ich was brauchbares finde.

Danke Dir erstmal für die Tips.

vinc`
 
Zurück
Oben