[Ubuntu] Iptables FTP config

Pagina: 1
Acties:

Onderwerpen


  • battler
  • Registratie: November 2004
  • Laatst online: 30-06 15:11
Ik probeer mijn FTP Server werkend te krijgen. De FTP server staat op dezelfde machine als de firewall.
Nu is mijn enige manier om te testen of het werkt, met een desktop systeem in mijn eigen netwerk in te loggen op de ftp server.

Nu gaat alles goed, ik log in. Maar het probleem is dat ik na een tijdje niet meer terug kan in mijn mappen structuur.
Ik krijg dan de melding:
Commando: TYPE I
Antwoord: 200 Switching to Binary mode.
Commando: PASV
Antwoord: 227 Entering Passive Mode (82,95,194,119,216,10)
Commando: LIST
Fout: Verbinding verloren
Fout: Ontvangen van mappenlijst is mislukt

Als ik in IPTABLES
#iptables -P FORWARD ACCEPT
#iptables -P INPUT ACCEPT
#iptables -P OUTPUT ACCEPT

Alles allow, dan werkt het perfect. Maar uiteraaard wil ik alles op BLOCK hebben.

code:
1
2
3
4
5
6
7
8
9
10
ETH0 = wan
ETH1 = lan

#FTP (21:20) From Wan to Firewall
iptables -A INPUT -j ACCEPT  -p tcp --sport 21 -i eth0
iptables -A OUTPUT -j ACCEPT -p tcp --dport 21 -o eth0

#FTP (21) From Lan to wan
iptables -A FORWARD -j ACCEPT -p tcp --dport 21 -i eth1
iptables -A FORWARD -j ACCEPT -p tcp --sport 21 -o eth1


Als ik met een packet analyzer kijk of dat er andere data over de lijn gaat als policy ACCEPT is kom ik niets anders tegen. Alle data blijft over port 21 gaan, dus gewoon een passieve verbinding.
Waarom werkt dit maar heel kort? en als ik dieper in mijn mappenstructuur ga, waarom krijg ik dan geen list meer?

Lux.Architectuur | Van Dromen tot Wonen | www.Lux-a.nl


  • blaataaps
  • Registratie: Juli 2001
  • Niet online
Alle tips van [google=iptables ftp] al eens geprobeerd? Of de speciale ftp connection tracking module voor ftp?

  • battler
  • Registratie: November 2004
  • Laatst online: 30-06 15:11
FTP connection tracking is toch alleen nodig wanneer je gebruik maakt van de established en related functie ?

Lux.Architectuur | Van Dromen tot Wonen | www.Lux-a.nl


  • frapex
  • Registratie: Januari 2001
  • Laatst online: 10:49

frapex

got r00t

Probeer eens op internet te zoeken naar iptables firewall rules.

Onderstaande is om je op weg te helpen:

modprobe nf_conntrack_ftp ports=21,210,2100
modprobe nf_nat_ftp

iptables -A FORWARD -p tcp --dport 21 -m state --state NEW -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

FTP connection tracking is hier wel van toepassing, want je maakt gebruik van PASV mode.

[ Voor 13% gewijzigd door frapex op 27-09-2008 22:36 ]

Asus A7N8X-X, AMD XP2400+, 2.5GB Infineon+Samsung DDR333, Radeon x1600 Pro, 2x Fujitsu MAP3735NC 10Krpm SCSI 73GB, Seagate Medalist 17.2GB, LiteOn DVD 16x48x, LiteOn 48x12x48, Promise UDMA100/TX2, Adaptec 2110S Ultra3, 2x EIZO FlexScan (F931 & F930)


  • battler
  • Registratie: November 2004
  • Laatst online: 30-06 15:11
De FTP Server staat op de machine waar ook IPTABLES op draait. Dan zou ik toch nooit een rule moeten hebben met een FORWARD erin om de server aan de praat te krijgen?

Als het wel werkt met alles op ACCEPT, dan kan het toch nooit een probleem zijn m.b.t connection tracking? (aangezien ik niet gebruik maak van related, of established connections).

Uiteraard ben ik wel blij met jullie post;)

Lux.Architectuur | Van Dromen tot Wonen | www.Lux-a.nl


  • frapex
  • Registratie: Januari 2001
  • Laatst online: 10:49

frapex

got r00t

Het is een voorbeeld uit mijn eigen firewall.
Ik heb de rules op mijn router vandaar FORWARD. Jij zal INPUT moeten gebruiken.
PASV mode gaat niet over poort 21 (control port) of poort 20 (data port), maar over een random poort.
Dus je hebt een helper module nodig.

[ Voor 41% gewijzigd door frapex op 27-09-2008 22:48 ]

Asus A7N8X-X, AMD XP2400+, 2.5GB Infineon+Samsung DDR333, Radeon x1600 Pro, 2x Fujitsu MAP3735NC 10Krpm SCSI 73GB, Seagate Medalist 17.2GB, LiteOn DVD 16x48x, LiteOn 48x12x48, Promise UDMA100/TX2, Adaptec 2110S Ultra3, 2x EIZO FlexScan (F931 & F930)


  • battler
  • Registratie: November 2004
  • Laatst online: 30-06 15:11
Dan heb ik het verkeerd begrepen, ik was in de veronderstelling dat een passieve connectie alleen gebruikt maakte van port 21. En data niet tegelijkertijd kon verzenden en ontvangen.

Lux.Architectuur | Van Dromen tot Wonen | www.Lux-a.nl


Verwijderd

battler schreef op zaterdag 27 september 2008 @ 22:50:
Dan heb ik het verkeerd begrepen, ik was in de veronderstelling dat een passieve connectie alleen gebruikt maakte van port 21. En data niet tegelijkertijd kon verzenden en ontvangen.
Bij FTP is er altijd sprake van een communicatieverbinding. Deze gaat standaard via TCP poort 21 naar de server.
Over de communicatieverbinding wordt "afgesproken" hoe bestanden moeten worden overgepompt. Afhankelijk van passive/active zal dat gaan via TCP poort 20 inkomend naar de server, of via een willekeurige poort bij de client. Maar deze tweede verbinding staat dus los van de eerste.

[ Voor 4% gewijzigd door Verwijderd op 27-09-2008 22:56 ]


Acties:
  • 0 Henk 'm!

  • Dr Nix
  • Registratie: September 2000
  • Laatst online: 10-09 00:46

Dr Nix

a.k.a. Dr. Nix

Wat ook kan, zonder ftp-connectie-track-module, is aan je server mee te geven welke passive poorten hij mag gebruiken. En die dan in de firewall te zetten. Zo heb ik:

vsftpd.conf
code:
1
2
pasv_min_port=21212
pasv_max_port=21221


Met als relevante firewall:
code:
1
2
3
4
5
$IPT -A public_input -d $PUBLIC_IP -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A public_input --protocol tcp -d $PUBLIC_IP --dport ftp-data -j ACCEPT
$IPT -A public_input --protocol tcp -d $PUBLIC_IP --dport ftp -j ACCEPT
# vsftpd passive port range
$IPT -A public_input --protocol tcp -d $PUBLIC_IP --dport 21212:21221 -j ACCEPT

Een koe is en blijft een merkwaardig beest!


Acties:
  • 0 Henk 'm!

  • Ploink
  • Registratie: April 2002
  • Laatst online: 21-08 13:05
Is dit een NAT router/firewall? Ik zie namelijk geen NAT rules...
Je bent port 20 vergeten. Deze port wordt gebruikt als PASV port.
Je hebt ook --sport en --dport verwisselt (verkeer naar je server, dus INPUT, heeft destination port 21 of 20)
Ik neem aan dat de ftp server zowel van wan als lan bereikbaar moet zijn, dus je hoeft dan geen interface op te geven.
Het zou dan zoiets moeten zijn:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
ETH0 = wan
ETH1 = lan

#FTP (21:20)  to Firewall
iptables -A INPUT -j ACCEPT  -p tcp --dport 20
iptables -A INPUT -j ACCEPT  -p tcp --dport 21

iptables -A OUTPUT -j ACCEPT -p tcp --sport 20
iptables -A OUTPUT -j ACCEPT -p tcp --sport 21

#FTP (21) From Lan to wan
iptables -A FORWARD -j ACCEPT -p tcp --dport 21 -i eth1
iptables -A FORWARD -j ACCEPT -p tcp --sport 21 -o eth1
iptables -A FORWARD -j ACCEPT -p tcp --dport 20 -i eth1
iptables -A FORWARD -j ACCEPT -p tcp --sport 20 -o eth1

[ Voor 32% gewijzigd door Ploink op 28-09-2008 23:57 ]


Acties:
  • 0 Henk 'm!

  • Ploink
  • Registratie: April 2002
  • Laatst online: 21-08 13:05
battler schreef op zaterdag 27 september 2008 @ 22:45:
De FTP Server staat op de machine waar ook IPTABLES op draait. Dan zou ik toch nooit een rule moeten hebben met een FORWARD erin om de server aan de praat te krijgen?

Als het wel werkt met alles op ACCEPT, dan kan het toch nooit een probleem zijn m.b.t connection tracking? (aangezien ik niet gebruik maak van related, of established connections).

Uiteraard ben ik wel blij met jullie post;)
Klopt, FORWARD is alleen voor 'doorgaand verkeer'. Het FTP verkeer gaat niet via NAT, dus je hebt geen connection track modules nodig. Dit is alleen als je een ftp server achter de nat firewall hebt, met een lokaal IP.
Het kan eventueel wel handig zijn voor lokale ftp clients die van active mode gebruik maken (waarbij een ftp server op het internet een data verbinding met de client maakt). Aangezien alle browsers en de meeste clients standaard PASV gebruiken, is dit niet echt nodig.

Acties:
  • 0 Henk 'm!

  • blaataaps
  • Registratie: Juli 2001
  • Niet online
Ploink schreef op zondag 28 september 2008 @ 23:44:
[...]

Klopt, FORWARD is alleen voor 'doorgaand verkeer'. Het FTP verkeer gaat niet via NAT, dus je hebt geen connection track modules nodig. Dit is alleen als je een ftp server achter de nat firewall hebt, met een lokaal IP.
Connection tracking staat op zich los van NAT, ook voor lokale verbindingen kun je dat nodig hebben, om gaatjes in je firewall te prikken.
Het kan eventueel wel handig zijn voor lokale ftp clients die van active mode gebruik maken (waarbij een ftp server op het internet een data verbinding met de client maakt). Aangezien alle browsers en de meeste clients standaard PASV gebruiken, is dit niet echt nodig.
Het is juist voor een ftp-server superhandig allebei te ondersteunen, zodat je ook ftp-clients achter een gekke firewall kunt serveren: als je allebei ondersteunt kan de client kiezen, en is de kans groter dat het werkt. Als je allerlei drop-dingen hebt, zou ik zeker wel de conntrack-module gebruiken, of een vaste set poorten die openstaan.

Acties:
  • 0 Henk 'm!

  • Osiris
  • Registratie: Januari 2000
  • Niet online
Verwijderd schreef op zaterdag 27 september 2008 @ 22:55:
[...]

Afhankelijk van passive/active zal dat gaan via TCP poort 20 inkomend naar de server (…)
Veelgemaakte fout bij active FTP: de data-verbinding zal van poort 20 uitgaand richting de client gaan die luistert op de uitgaande poort van de control-connection+1. ('uitgaand' t.o.v. het éérste SYN-TCP-pakketje). De verbindings-'richting' is dus tegengesteld bij active FTP.

Dat TCP in principe altijd uit twee 'losse' tegengestelde connecties bestaat bedoel ik in dit geval eventjes niet, want als we 't over 'inkomend' en 'uitgaande' verbindingen hebben, hebben we 't meestal over die éérste verbinding die gemaakt wordt door de partij die 't eerste SYN-pakketje verstuurt. Dat de daaropvolgende SYN/ACK eigenlijk óók een vergelijkbare connectie maakt is minder relevant qua firewalls aangezien de RELATED/ESTABLISHED toch wel op ALLOW staat :P

[ Voor 32% gewijzigd door Osiris op 29-09-2008 00:08 ]


Acties:
  • 0 Henk 'm!

  • Ploink
  • Registratie: April 2002
  • Laatst online: 21-08 13:05
blaataaps schreef op zondag 28 september 2008 @ 23:48:
..
Het is juist voor een ftp-server superhandig allebei te ondersteunen, zodat je ook ftp-clients achter een gekke firewall kunt serveren: als je allebei ondersteunt kan de client kiezen, en is de kans groter dat het werkt. Als je allerlei drop-dingen hebt, zou ik zeker wel de conntrack-module gebruiken, of een vaste set poorten die openstaan.
Als je een publieke server hebt met veel users en je wil echt 100% compatibel zijn dan wel. Maar aangezien browsers alleen PASV ondersteunen en de meeste mensen ftp vanuit de browser gebruiken, kun je er van uitgaan dat dit werkt. Als PASV niet werkt voor clients achter een 'gekke firewall', dan doet active mode het sowieso niet (of het moet wel een hele gekke fw zijn).
Nu is het wel zo dat sommige hele oude ftp clients default active mode gebruikten, maar nu bijna iedereen achter een NAT firewall zit, is pasv toch wel zo'n beetje standard geworden.

Acties:
  • 0 Henk 'm!

  • icyx
  • Registratie: Januari 2007
  • Niet online

icyx

chown -R us ./base

Hier thuis heb ik een iptables firewall draaien, maar die 'beschermd' alleen de machine in kwestie. Hier staat echter wel een ftp server op. Om overal vandaan te connecten naar de ftp server te connecten gebruik ik de volgende twee regels:
code:
1
2
$iptables -A INPUT -p tcp --dport 21 -j ACCEPT
$iptables -A INPUT -p TCP --dport 20 -m state --state ESTABLISHED,RELATED -j ACCEPT


Edit: Ik ben dus je klasgenoot :+

[ Voor 4% gewijzigd door icyx op 29-09-2008 16:48 ]

When you think you’ve succeeded / but something’s missing / means you have been defeated / by greed, your weakness.

Pagina: 1