Toon posts:

FTP Server achter PF onder FreeBSD

Pagina: 1
Acties:
  • 189 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
heren/dames,

nadat bleek dat mijn fijne Draytekrouter niet goed met mijn 20Mbit lijn om kon gaan (pastte uit zichzelf een soort QoS toe wat niet wenselijk en ook niet uit te schakelen was) ben ik op een goede dag maar eens naar unix/linux gebaseerde systemen gaan kijken, omdat me dit toch al interessant leek. Ik kwam uit bij FreeBSD, dit draait nu al een tijdje en met succes, althans...

Het volgende is het geval:

WWW ---> nic0 --> nic1 (DHCP) ---> Switch --> PC's


waarbij nic0 en nic1 dus vanzelfsprekend aangestuurd worden door FreeBSD.

NAT + Firewall wordt verzorgd door PF, waarvoor de regels gespecificeerd worden in pf.conf.

Hoop dat ik niks vergeet waardoor de situatie onduidelijk wordt.

Het probleem is nu dat 1 van de pc's aangesloten op dit netwerk een FTPserver draait, dit werkt intern natuurlijk perfect, maar om er van buiten bij te komen lijkt onmogelijk. Zover als ik kwam staat hieronder weergegeven, deze regels staan in m'n pf.conf file en zijn slechts een greep uit het geheel, aanvullingen op aanvraag:

# macros

int_if = "sk1"
ext_if = 'sk0"

ftpserver = "192.168.1.25"

# nat/rdr

nat on $ext_if from $int_if:network to any -> ($ext_if)

rdr on $ext_if proto tcp from any to any port 61664 -> $ftpserver port 61664
rdr on $ext_if proto tcp from any to any port 61668:61671 -> $ftpserver port 61668:61671

# filter rules

pass in log quick on $ext_if proto TCP from any to any to 192.168.1.25 port { 61666, 61664 } keep state
pass in log quick on $ext_if proto TCP any to any to 192.168.1.25 port 61668:61671 keep state

Korte verklaring, port 61664 forward to FTP server daarnaast staan poorten 61668 t/m 61671 open voor passive (dat laatste was een beetje slecht overwogen wanhoopsgreep tbh).

Verder staat er zoals je ziet nog een poort open voor dit IP, namelijk 61666, deze is voor inc. connections van Utorrent, dit werkt perfect.

Goed, Shields Up van GRC geeft dus aan dat de genoemde poorten van buiten af zichtbaar en open zijn. Met de rdr naar de utorrent poort is klaarblijkelijk ook niets mis, want dat werkt gewoon. Ik moet dus iets over het hoofd zien en daarbij hoop ik op jullie hulp. Trouwens, ik gebruik Serv-U als ftpserver, de luistert uiteraard netjes op port 61664 en PASV range. Waarom geen FTPD van BSD? Wil router en FTP niet onder 1 dak om obvious redenen. Daarom niet! ;)

Wellicht dat dit een dikke newb vraag is, maar goed, ik heb er echt goed in proberen te duiken, maar ik zie ten eerste door de bomen het bos niet meer met al die guides en theoretische uitleg en tweede wil ik gewoon even verder komen want als ik hier nog langer mee ga prutsen zonder dat het lukt vind ik het zometeen niet meer leuk, en dat zou jammer zijn ;)

Thanx alvast!

  • axis
  • Registratie: Juni 2000
  • Laatst online: 26-01-2023
FTP is een beetje een lastig verhaal.. Je hebt een command channel, default poort 21, waarover alle commando's gaan, en je hebt andere poorten die gebruikt worden voor data transfer. Die command channel zal geen probleem zijn, is 1 poortje, kun je ook zo testen met telnet van buiten, als je telnet naar je poort .

Ik raad je aan op zoek te gaan naar het verschil tussen active en passive (PASV) FTP, aangezien hierbij belangrijke zaken anders geregeld zijn.. Als je gaat sniffen op je command channel, zie je alle commando's langskomen, met je FTP server die de client vertelt welke poorten hij wil gaan gebruiken voor data transfer, en andersom. Die poorten moeten dan dus ook gemapped staan. Geen makkelijke stof, maar met een goede guide en een sniffer moet het al veel helderder worden!

ah: http://slacksite.com/other/ftp.html

Zie nu dat je deze poorten 61668:61671 mapped, waarschijnlijk voor passive FTP, maar als je sniffed op poort 61664 zou je moeten zien wat je FTP server voor poortnummer aan je client toewijst.. Bovenstaande document leest hoe je dat kunt zien in de FTP commando's..

[ Voor 26% gewijzigd door axis op 16-11-2006 14:09 ]

Two advices for network troubleshooting.. learn to draw diagrams in Visio, and THINK IN LAYERS!


Verwijderd

Topicstarter
dank voor je reactie, deze site had ik al eens doorgenomen, werd er niet heel veel wijzer van, maar informatief is hij zeker. Het gaat me eigenlijk echt eerder om wat er nou precies fout gaat. Dat is waar die sniffer me bij gaat helpen, goed idee van je! Etherdetect ga ik maar eens proberen. In de tussentijd hoop ik dat er een held langskomt die een soortgelijk probleem al eens heeft opgelost, thanx iig.

Verwijderd

Topicstarter
schopje... Help please!??

  • Parasietje
  • Registratie: Juli 2004
  • Laatst online: 10-06-2024

Parasietje

linux-geek

Eerst en vooral: Waar wordt poort 21 geredirect? Die ben je vergeten volgens mij. Je hebt dus niet eens een command channel; als je van buitenaf verbinding maakt zal je krijgen "Connection refused".

Ten tweede: staat je FTP-server als passive of als active ingesteld?
Passive: op het command channel krijgt de server van de client een poort door waarop hij de data moet sturen. Server connect naar client voor data-connectie.
Active: op het command channel krijgt de client een poort waar hij de data die op de server staan kan krijgen. Client connect naar de server.

Een passive connectie is makkelijk; moet je enkel poort 21 voor redirecten. Echter kunnen andere mensen dan van achter een NAT niet connecten. Active connectie is simpeler, maar vraagt iets meer werk. In linux zijn er modules voor iptables die het FTP command channel verkeer analyseren op layer7 en zo meteen de juiste poorten openzetten voor active connecties. Je zal eens moeten zoeken of zoiets ook voor FreeBSD bestaat.
En anders: PASV mode aanzetten op FTP client en zorg dat je server dit ook ondersteunt.

Ten derde: zorg dat je een bak buitenaf hebt waarmee je kan debuggen. Vraag bijvoorbeeld een shell aan op rootshell.be. Connect eens met telnet om te kijken of je al verbinding krijgt! Probeer ook eens een sniffer uit om het verkeer te analyseren.

[ Voor 10% gewijzigd door Parasietje op 17-11-2006 13:15 ]

WebDAV in Vista is horribly broken. Ik wil het fixen, maar ben nog steeds op zoek naar de tarball met de source...


Verwijderd

Topicstarter
Tja, dan komt het dus neer op 2 problemen meteen hehe, want ten eerste moet ik dus zorgen voor een Active verbinding, zodat ik zélf alleen al kan testen, want zonder die module kan ik dus niet connecten.
Voor FreeBSD bestaat er zoiets als een FTP-Anchor, waarbij het verkeer op port 21 wordt omgeleid naar 8021 waar het inderdaad wordt geanalyseerd en de NAT data aan het pakket wordt toegevoegd. Zodanig dat het verkeer aan 2 kanten door NAT behandeld kan worden. Dit is om de client te helpen om active connecties aan te gaan. Dit heb ik dus nodig om mn eigen server te benaderen als ik dat vanaf buiten wil testen. Daarnaast zal ik ervoor moeten zorgen dat mn eigen server die active connecties ook nog eens accepteert :s Zucht... Maar wel leuk dit :D

@Parasiet, het is wel zo dat de ftpserver staat te luisteren naar poort 61664 he, dus dan fungeert die poort als command channel toch?

Dit document moet me denk ik wel op weg helpen, dus als iemand anders met een soortgelijk probleem zit ;)

http://www.parinux.org/ressources/docs/ftp-nat-sous-openbsd

[ Voor 9% gewijzigd door Verwijderd op 17-11-2006 13:53 ]


Verwijderd

Topicstarter
Schopje, iemand, please?

Verwijderd

ftp is klote.
- gebruik active ftp
- forward 21 en 20 tcp en udp (van de internet interface input) naar je ftpserver op het LAN.
- stel de ftpserver op active ftp in
- stel de ftpclient op active ftp in (disable passive)

probeer te testen met een remote shell of proxy of remote gui client
vermijd testen vanaf het LAN.

mensen die dan nog problemen hebben met je te connecten hebben zelf een instelling probleem (passive ftp client, of nat problem (geen ftp tracking) ) maw, niet jouw probleem.

overweeg ssh2 sftp, scp, of http, minder foutgevoelig.

Verwijderd

Topicstarter
Thanx, dit helpt ook alweer een beetje :D
Verwijderd schreef op zaterdag 18 november 2006 @ 15:02:
mensen die dan nog problemen hebben met je te connecten hebben zelf een instelling probleem (passive ftp client, of nat problem (geen ftp tracking) ) maw, niet jouw probleem.
Het probleem is mede dat ik geen gezeur wil van clients: "Hij doet het niet, bleh,bleh,bleh...!" Enfin, je kent het wel ;) En ik geef je helemaal gelijk hoor: Hun kant van het verhaal is niet mijn probleem, maar daar hebben de meeste gebruiker lak aan, die gaan je toch wel benaderen, immers weten ze zelf niet hoe ze het moeten regelen.

Ik overgweeg om het huidige domein gewoon te klonen als het ware, de ene op poort A als 'active server' en de andere op poort B als 'passive server'. Dan moet je wel steeds 2 adressen uitreiken, wat natuurlijk niet heel fijn is, maar op zich...Ik werk met het programma FlashFXP als client, wat best een aanrader is als je hem niet kent. Het is namelijk een standalone exe, wat de 'implementatie' bijzonder eenvoudig maakt als je iemand toegang wilt geven die er de ballen verstand van heeft zeg maar ;) Want wat je doet is gewoon het progje goed instellen, hierdoor worden naast de exe in dezelfde folder een aantal bestandjes aangemaakt die de bookmarks en settings verzorgen. Hele boeltje inpakken en opsturen, uitpakken en draaien met alle settings voorgeprogrammeerd. Denk, denk....

Er is dus absoluut GEEN mogelijkheid om een active server als het ware passive compatible te maken? Met andere woorden: wachten op het PORT command van de client, komt dat niet, dan wijst de server zelf een poort aan?

  • axis
  • Registratie: Juni 2000
  • Laatst online: 26-01-2023
Verwijderd schreef op zondag 19 november 2006 @ 12:45:
Thanx, dit helpt ook alweer een beetje :D
[...]
Het probleem is mede dat ik geen gezeur wil van clients: "Hij doet het niet, bleh,bleh,bleh...!" Enfin, je kent het wel ;) En ik geef je helemaal gelijk hoor: Hun kant van het verhaal is niet mijn probleem, maar daar hebben de meeste gebruiker lak aan, die gaan je toch wel benaderen, immers weten ze zelf niet hoe ze het moeten regelen.

Ik overgweeg om het huidige domein gewoon te klonen als het ware, de ene op poort A als 'active server' en de andere op poort B als 'passive server'. Dan moet je wel steeds 2 adressen uitreiken, wat natuurlijk niet heel fijn is, maar op zich...Ik werk met het programma FlashFXP als client, wat best een aanrader is als je hem niet kent. Het is namelijk een standalone exe, wat de 'implementatie' bijzonder eenvoudig maakt als je iemand toegang wilt geven die er de ballen verstand van heeft zeg maar ;) Want wat je doet is gewoon het progje goed instellen, hierdoor worden naast de exe in dezelfde folder een aantal bestandjes aangemaakt die de bookmarks en settings verzorgen. Hele boeltje inpakken en opsturen, uitpakken en draaien met alle settings voorgeprogrammeerd. Denk, denk....

Er is dus absoluut GEEN mogelijkheid om een active server als het ware passive compatible te maken? Met andere woorden: wachten op het PORT command van de client, komt dat niet, dan wijst de server zelf een poort aan?
Of dat wachten op het port command in te stellen is denk ik niet, maar ik denk dat je je clients de PASV instelling moet meegeven, en dan moet zorgen dat PASV werkt. Je kunt in je server instellen (in elke server die ik tot nu toe heb gezien), welke poorten je server toewijst voor PASV. Die moet je ook doormappen in je firewall. Je kunt met je sniffer precies zien welke poorten je server toewijst. Ik raad je ook nogmaals aan om bovenstaand documentje wat ik je aanraadde uit te printen, en op de bank met een kop koffie of thee eens goed te bekijken. Dan snap je wat je precies doet.. :)

[ Voor 3% gewijzigd door axis op 19-11-2006 14:14 ]

Two advices for network troubleshooting.. learn to draw diagrams in Visio, and THINK IN LAYERS!


Verwijderd

Topicstarter
Zal ik doen, ik houd je op de hoogte, thanx!
Pagina: 1