ftpserver en iptables firewall

Pagina: 1
Acties:

  • Snipie2000
  • Registratie: Juni 2000
  • Laatst online: 22-06-2024
Heb hier een linux bakje draaien met debian en een iptables firewall. Ik heb daarop een ftp server geinstalleerd op een niet standaard poort. Het probleem is nu dat mensen vanuit inet niet passive kunnen connecten. (geen dataverbinding totstand brengen) :(

Het komt doordat de ftp_conntrack kernel module alleen "luistert" naar poort 21. Nu dat de ftp server niet op standaard poort zit, wordt de control verbinding niet bekeken, en daardoor wordt de dataverbinding niet als related aangemerkt. En wordt dus de inkomende dataverbinding geblocked door mijn firewall.

Mijn vraag, hoe pas ik de ftp conntrack module aan zodat hij ook op een andere poort dan 21 gaat luisteren? In de source van deze module zie ik niet direct wat ik zou moeten aanpassen. Of dat er misschien parameters bestaan? Heeft iemand hier ervaring mee?

Verwijderd

Ik zou me kunnen voorstellen dat die informatie uit de /etc/services file wordt gehaald. Daar staat ftp-data als poort 20 en ftp zelf als poort 21. Als je daar de poorten verandert heb je misschien kans dat hij dan naar die andere poort gaat luisteren...

Niet zelf getest dus ik heb geen idee of hier enige vorm van zinnigheid inzit... (dit klinkt als een lousy disclaimer :P)

  • luc
  • Registratie: Maart 2000
  • Niet online

luc

Je moet de datapoort nog ff unblocken, datapoort zit een poort onder de control poort, da's degene die je in je ftp server hebt ingesteld.

  • Snipie2000
  • Registratie: Juni 2000
  • Laatst online: 22-06-2024
Helaas, ik heb geprobeerd in services ftp poort aan te passen, maar helaas lijkt de module zich daar niets van aan te trekken. Die blijft volgens mij gewoon op port 21 connecties checken.

Ook het openzetten van poort 20, die aangegeven staat als ftpdata port zal helaas niet werken. Deze poort wordt nl niet gebruikt voor inkomend verkeer, maar juist uitgaand.
De server gebruikt dit als source port bij het verzenden van packetjes voor ftp data connectie.

De dataport zit ergens boven de 1024 en wordt "random" gekozen boven de 1024. Het is mogelijk om in de ftp server een kleiner gebied in te stellen waar tussen deze moeten liggen, zodat je dit eventueel open kan zetten. Dit wil ik niet, omdat je dan je firewall gewoon permanent gedeeltelijk open zet.

En ik wil dit systeem ook kunnen gebruiken om ftp server op niet standaard poort achter mijn firewall te kunnen zetten, op dat moment zal ook echt de conntrack module moeten werken, anders gaat de nat de mist in.

Het mooiste zou zijn als er zelfs meerdere poorten zijn in te stellen..... Helaas vind ik nergens op inet hoe het zou moeten, zou niemand zelfde probleem hebben?

  • ripzura
  • Registratie: Augustus 2001
  • Laatst online: 29-09-2024

ripzura

ik ontken alles

hmmmm Ik heb zelf ook een iptables firewall met daarachter een ftp
ftp draait op poort: 8472
dan is de datapoort: 8471 (een poort lager)
ik heb deze twee gewoon open gezet in de firewall..en geen problemen mee
maar hoe het dan zit met die ip_conntrack module?? (geen id)



edit: damn typo's

oogjes dicht en snaveltjes toe...en nou bek dicht en slapen kreng!


Verwijderd

Even voor de duidelijkheid:

Je wilt dus je ftp server op een andere machine in het lokale netwerk draaien? Als dit niet het geval is het je die conntrack module niet nodig, dan hoeft ie ook niet te natten. Als dit wel zo is kan ik je niet helpen :( (Ik draai em zelf wel op 21)

Verwijderd

Ik heb dat probleem dus ook :(
Iemand enig idee???

  • ripzura
  • Registratie: Augustus 2001
  • Laatst online: 29-09-2024

ripzura

ik ontken alles

probeer dan eens wat ik net zei:

ftp_conntrack er uit gooien
de poort open waar je ftp op draait + 1 poort lager

kan natuurlijk zijn dat je dan ook ESTABLISHED of RELATED connections door moet laten (ook niet echt jou bedoeling geloof ik)

anders zit je toch vast op die poort 21 :(

(id: misschien source code "ff" editten van ip_conntrack) :)

oogjes dicht en snaveltjes toe...en nou bek dicht en slapen kreng!


  • Snipie2000
  • Registratie: Juni 2000
  • Laatst online: 22-06-2024
Voor de duidelijkheid, ik wil te veel :) Ik wil een ftpserver op mijn linux bakje draaien op een niet standaard poort, en ik wil daarnaast ook nog eens een ftpserver achter mijn server kunnen zetten op een andere niet standaard poort. En daarbij wil ik ook nog dat je kan connecten zowel active als passive.

De poort onder de control connectie doorlaten heb ik geprobeerd, maar dat werkt helaas niet. Deze poort wordt (zover ik weet) ook niet gebruikt als inkomende poort voor data connecties, waar de server gaat luisteren. Nl de poort waar dit gaat gebeuren wordt door de ftp server random (in bepaalde range) gekozen.

(De datapoort die je beschijft wordt volgens mij als source poort gebruikt voor de uitgaande dataconnectie van de server, maar heb dit niet gecontroleerd. Standaard is dat dacht ik 20 als ftp op standaard poort 21 draait. )

Een ftp client logt in op server (control verbinding) geeft daar het commando "pasv". De server geeft dan als antwoord iets als "227 Entering Passive Mode (a,b,c,d,x,y)". De poort waar de ftpserver dan gaat luisteren voor data connectie is dan dacht ik zoiets als x*256+y. Dit gaat mis bij mij, omdat de poort x*256+y geblocked staat.

Bij iptables hebben ze daar oplossing voor, door de ftp_conntrack module de connecties naar poort 21 van de server te monitoren, en dan te kijken of hij ergens pasv langs ziet komen. Als dat zo is, wordt poort x*256+y aangemerkt als related, en komt hij door firewall heen.
Inkomende related packetjes heb ik nl op accept staan in firewall. (Zoiets dergelijks geldt voor nat van een ftpserver achter firewall, alleen is ietsje ingewikkelder omdat hij de ips en poorten van de commandos in de control verbinding moet aanpassen.)

Wat ik dus moet hebben is echt het instellen van de conntrack module zodat die op meer poorten dan alleen 21 checked op "pasv" etc. Ik zie geen andere manier. Het lijkt me dat het niet zo moeilijk moet zijn om dat ergens te wijzigen in source van die modules of iets dergelijks. Helaas kan ik niet vinden wat er dan aangepast moet worden.

Verwijderd

is het niet mogelijk om een passive port range te specifyen in je FTP-server programma ??
Dan kun je die poorten openzetten op je OUTPUT chain voor NEW,ESTABLISHED connecties naar poorten >1024
en op je INPUT zet je deze dan open voor ESTABLISHED
en op je andere FTP stel je dan een andere passive port-range in en zet je deze poorten 'open' op je FORWARD chain

  • Snipie2000
  • Registratie: Juni 2000
  • Laatst online: 22-06-2024
ik denk dat dit wel moet kunnen werken. Kan bij beide servers zie ik de pasv port range instellen. :)

Enigste nadeel aan deze methode vind ik dat je de firewall dus standaard open moet zetten op deze poorten. Het zou mooier zijn als het via related gaat, zodat poort alleen open gaat als er gebruik van gemaakt wordt. Liefste zie ik de module aangepast. Vind het beetje raar dat ik enigste zou zijn met dit probleem, er moeten toch veel meer mensen dit zelfde willen?? Dus zou zeggen dat er wel een patch voor moet bestaan...

  • Snipie2000
  • Registratie: Juni 2000
  • Laatst online: 22-06-2024
Volgens mij heb ik een oplossing gevonden :) Heb nog eens goed naar de source van de module gekeken, en het blijkt helemaal niet zo moeilijk, zelfs erg simpel aan te passen. Heb de poort nu direct in de module gezet in init gedeelte (ip_conntrack_ftp.c).

Maar er blijkt al mooi systeem in te zitten, hij kijkt nl eerst of er module parameters zijn, zo ja, dan leest hij de poort nummers in uit de parameters in de array. Zoniet dan vult hij array met de standaard poort(en) (die heb ik dus aangepast).

Het is stuk netter als je de module parameter gebruikt, dan zelf in code zitten te editen. Iemand weet hoe dat werkt? moeten die parameters er al bij het compileren bij? of met insmod? Uit de source wordt me niet helemaal direct duidelijk hoe dat nu gaat.
Pagina: 1