PF und FTP - alle Jahre wieder

soul_rebel

ist immer auf der flucht
also ich habe hier eine obsd3.9 kiste die zwischen 3 netzen hängt.
dmz, lan und extern. letzteres ist ein mini-netz, dass nur mit einer fritzbox geteilt wird, die für internet sorgt.
in der dmz steht ein webserver, der einen eigen ftp-klienten hat der sich über das web-frontend bedienen lässt. (so zumindest die beschreibung, ich habe selber leider keinen zugriff auf diesen dienst und bin deswegen auf dies aussagen von jemand in dem lan angewiesen).

das problem, ist dass dieser dienst von der firewall blockiert wird.
folgendes steht in der pf.conf (ausschnitt)
Code:
#**** Anchors for ftp-connections ****
nat-anchor "ftp-proxy/*"
rdr-anchor "ftp-proxy/*"

#**** Redirects for ftp-proxy ****
rdr on { $int_if $dmz_if } proto { udp tcp } from any to any port ftp -> 127.0.0.1 port 8021

#**** erstmal alles von außen blocken und alles von drinnen genehmigen 
block   in  log on $ext_if all label "block by default"
pass    out all keep state

#**** traffic auf port 80 für den webserver zulassen
pass quick on { $dmz_if $ext_if } proto { tcp udp } from any to $www_server port 80
pass quick on { $dmz_if $ext_if } proto { tcp udp } from $www_server port 80 to any

#**** traffic vom ftp-proxy zulassen
anchor "ftp-proxy/*"
weitere regeln sollten keine rolle spielen, da ftp-proxy alle regeln mit quick lädt, aber das hier (nur zu testzwecken) hat auch nicht geholfen
Code:
pass quick on { $dmz_if $ext_if } proto tcp from any port { 20 21 } to any keep state
pass quick on { $dmz_if $ext_if } proto tcp from any to any port { 20 21 } keep state
pass quick on { $dmz_if $ext_if } proto tcp from any port >49152 to any keep state
pass quick on { $dmz_if $ext_if } proto tcp from any to any port >49152 keep state
"normale" ftp-verbindungen, d.h. mit bowser von irgendwo was runterladen, auch mit standard ftp tools irgednwas uploaden klappen.
diese ganz besondere software aber eben nicht. da man mir nicht sagen kann, ob das ding überhaupt aktives oder passives ftp benutzt, habe ich ftp-proxy sicherheitshalber mit "-r" gestartet.
das paradoxe ist, dass ich sämtlichen block regeln ein log hinzugefügt habe, aber trotzdem keine geblockten ftp-verbindungen im log auftauchen, also:
Code:
tcpdump -r /var/log/pflog tcp host [i]IP_DES_WEBSERVERS[/i]
gibt nichts aus...
...wenn ich aber pf auschalte, läuft die software ;'(

also wird doch was blockiert.... ich bin verzweifelt...
 
Ohne nun drüber nachgedacht zu haben:
Code:
pass log quick proto tcp from any to 127.0.0.1 port 8021 keep state
Und, wie sieht denn der Eintrag in inetd.conf aus?
 
@asg: naja eigentlich braucht man keine filterregeln mehr, die macht der neue ftp-proxy selber und lädt sie per anker rein.

asg schrieb:
Und, wie sieht denn der Eintrag in inetd.conf aus
der neue ftp-proxy wird nicht mehr über inetd gestartet sondern als daemon über rc.conf.local.

ABER ES KLAPPT JETZT!

hab pf deaktiviert und mir mit tcpdump den verkehr von einem erfolgreichen upload angeguckt. diese komische software nutzt als kommumikationsport mit den zielservern irgendwelche ports, also mal hier mal da und nicht port 21.
deswegen war das redirect und nicht die filter falsch.
habe jetzt, da ich nicht wissen kann welche zielports der nimmt, ein redirect auf basis der quelle hinzugefügt:
Code:
rdr on $dmz_if proto tcp from $www_server port { ftp ftp-data 20 } to any -> 127.0.0.1 port 8021
und so wiet klappt es :)

man hat das kopfzerbrechen verursacht...
 
oh man langsam werde ich wahnsinnig.
das hat jetzt ne stunde lang funktioniert, dann habe ich die eigentlich überflüssigen regeln (pass quick on { $dmz_if $ext_if } proto tcp from any port { 20 21 } to any keep state...) rausgenommen, dann gings nicht mehr.
also habe ich sie wieder reingetan, aber es geht trotzdem nicht mehr :mad:
ich habe sogar eine sicherheitskopie der datei wieder zurückgespielt um tippfehler auszuschließen, aber es geht trotzdem nicht :confused:
sowas unlogisches...
 
Zurück
Oben