[iptables] FTP connectie wil niet lukken

Pagina: 1
Acties:

  • BSeB
  • Registratie: Juni 2001
  • Laatst online: 22-09-2025
Ik heb een leuke server met een leuke firewall, feit is nu alleen dat ik alleen bij de ftp kan komen als ik alles wat in de firewall draaid flush, dat is niet de bedoeling, dus heb ik gezocht op i-net en op GoT. Aan de hand daarvan heb ik een aantal regels aan mijn firewall toegevoegd:

# FTP Server on ppp0

iptables --table filter -A INPUT -i $EXT_DEV1 -p tcp --sport 21 -m state --state ESTABLISHED -j ACCEPT
iptables --table filter -A OUTPUT -o $EXT_DEV1 -p tcp --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT

iptables --table filter -A INPUT -i $EXT_DEV1 -p tcp --sport 20 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables --table filter -A OUTPUT -o $EXT_DEV1 -p tcp --dport 20 -m state --state ESTABLISHED -j ACCEPT

#iptables --table filter -A INPUT -i $EXT_DEV1 -p tcp --sport 1024: --dport 1024: -m state --state ESTABLISHED
#iptables --table filter -A OUTPUT -o $EXT_DEV1 -p tcp --sport 1024: --dport 1024: -m state --state ESTABLISHED,REL

en voor de modules:

# Load appropriate modules

modprobe ip_tables
modprobe ip_conntrack
modprobe ip_conntrack_ftp

Dit zou zoals ik overal heb gelezen moeten werken, toch kan ik niet inloggen op mijn ftp server, weet iemand wat ik fout doe?

  • Buffy
  • Registratie: April 2002
  • Laatst online: 26-12-2024

Buffy

Fire bad, Tree pretty

De ftp server bouwt een data connectie op naar de ftp client (port 20, maar het kan tegenwoordig ook een hogere port zijn). Je zult dus een ESTABLISHED,RELATED rule moeten toevoegen (zonder port nr) in de OUTPUT chain.

Als de ftp client passieve mode gebruikt (bv vanwegen firewall forward problemen aan de client kant) dan moet je ook een ESTABLISHED,RELATED rule aan de INPUT chain toevoegen (op de server).

That which doesn't kill us, makes us stranger - Trevor (AEon FLux)
When a finger points at the moon, the imbecile looks at the finger (Chinese Proverb)


  • BSeB
  • Registratie: Juni 2001
  • Laatst online: 22-09-2025
Zo'n regel extra geeft niet het gewenste resultaat. Ik krijg geen eens een welkom message, dus der zla wel iets meer fout zijn!

Misschien een ander idee?!

  • blaataaps
  • Registratie: Juli 2001
  • Niet online
Waar is de regel die nieuwe inkomende verbindingen op poort 21 toestaat? Dat is natuurlijk het eerste waar je naar moet kijken als je niet eens login banner krijgt. En wat ook veel beter werkt bij firewallscripts dan domweg bergen regels van anderen toevoegen, is zelf 1 voor 1 regels toevoegen waarvan je wel weet wat ze doen, en als het dan niet werkt bedenken waarom dat zo is.

  • BSeB
  • Registratie: Juni 2001
  • Laatst online: 22-09-2025
Mijn firewall heb ik geschreven aan de hand van de netfilter documentatie en deze site:

http://home.nedlinux.nl/~bart/?page=3

Verder heb ik de ftp netfilter wiki gebruikt en deze site:

http://slacksite.com/other/ftp.html#active

Hierna ben ik nog is gaan experimenteren met mijn regels en heb de simpelst mogelijke ervan gemaakt:

iptables --table filter -A INPUT -p tcp --sport 21 -j ACCEPT
iptables --table filter -A OUTPUT -p tcp --dport 21 -j ACCEPT

iptables --table filter -A INPUT -p tcp --sport 20 -j ACCEPT
iptables --table filter -A OUTPUT -p tcp --dport 20 -j ACCEPT

Maar zolang er die poort staat kan ik er niet naar connecten met bijvoorbeeld een telnet of ftp, maar haal ik die poort weg en dan staat mijn hele systeem dus open, dan kan het wel, lijkt erop dat daar iets fout gaat, maar wat is me niet duidelijk!

Verder snap ik wel wat ik aan het doen ben, alleen wil het me niet lukken!

Na wat meer testen, heb ik het volgende werkend:

iptables --table filter -A INPUT -p tcp --sport 21 -j ACCEPT
iptables --table filter -A OUTPUT -p tcp -j ACCEPT

iptables --table filter -A INPUT -p tcp -j ACCEPT
iptables --table filter -A OUTPUT -p tcp --dport 20 -j ACCEPT

Hier ben ik natuurlijk nog niet tevreden mee, maar het is een begin!

[ Voor 17% gewijzigd door BSeB op 04-06-2006 09:22 ]


  • Aetos
  • Registratie: November 2001
  • Laatst online: 14-10-2025
iptables --table filter -A INPUT -p tcp --sport 21 -j ACCEPT
wil zeggen dat je alle verkeer accepteert dat naar jou server verstuurd wordt vanaf poort 21.

Dus als een wildvreemde op zijn computer voor elkaar krijgt dat hij een verbinding opent
vanaf 21 naar b.v. telnet (of een andere service die je niet wilt openzetten) dan lukt dat toch.

Dat lijkt me in ieder geval niet de bedoeling.

  • BSeB
  • Registratie: Juni 2001
  • Laatst online: 22-09-2025
Dat klopt, ik had dit ook als test geprobeerd om te kijken wat wel en wat niet wil werken. Ik wil natuurlijk graag state gebruiken en wat andere dingen zoals in mijn eerste post geschreven, maar dan moet dit wel geaccepteerd worden en dat gebeurd nog niet.

  • Aetos
  • Registratie: November 2001
  • Laatst online: 14-10-2025
Een ftp sessie begint met het openen van een tcp verbinding vanaf een willekeurig ip adres en poortnummer naar jouw server op poort 21. Oftewel er moet een rule zijn die inkomend tcp verkeer accepteerd op poort 21 zonder voorwaarden. In de regel waarvan ik denk je dit wilt regelen staat wel een voorwaarde, namelijk dat ie al established moet zijn en er staat dat het verkeer afkomstig moet zijn vanaf poort 21.

iptables --table filter -A INPUT -i $EXT_DEV1 -p tcp --sport 21 -m state --state ESTABLISHED -j ACCEPT

Mij lijkt dat je alleen hoeft te zeggen dat verbindingen naar poort 21 moet gaan en zonder de verbinding te openen kan hij nooit established worden dus die voorwaarde mag ook weg.

Dus iets als:

iptables --table filter -A INPUT -i $EXT_DEV1 -p tcp --dport 21 -j ACCEPT

  • axis
  • Registratie: Juni 2000
  • Laatst online: 26-01-2023
lees ook het verschil tussen acitve en passive eens goed door: http://slacksite.com/other/ftp.html

edit:

dit zou in ieder geval het commando kanaal op poort 21 goed open moeten zetten:

#allow all connections TO port TCP/21 on interface $EXT
iptables -A INPUT -i $EXT -p tcp --dport 21 -m state --state NEW -j ACCEPT
#allow responses back FROM port TCP/21 on interface $EXT
iptables -A OUTPUT -i $EXT -p tcp --sport 21 -m state --state ESTABLISHED,RELATED -j ACCEPT

En je moet zelf even lezen over het verschil tussen passive en active, en je andere rules daarop bouwen.. Of even google voor voorbeelden. Ik zie er zo al genoeg..

Als je dit onderaan je iptables script zet:

#log all packets on INPUT chain not handled above
iptables -A INPUT -j LOG --log-level debug --log-prefix "BLOCKED INPUT: "
#log all packets on OUTPUT chain not handled above
iptables -A OUTPUT -j LOG --log-level debug --log-prefix "BLOCKED OUTPUT: "

Kom je denk ik ook een eind, kun je tenminste nog goed troubleshooten, anders dan 'het werkt niet' :)

[ Voor 99% gewijzigd door axis op 04-06-2006 12:46 ]

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


  • BSeB
  • Registratie: Juni 2001
  • Laatst online: 22-09-2025
Door het veranderen van de state en toevoegen van de logger werkt het nu.

Dank je wel.
Pagina: 1