iptables en passive FTP transfers

Pagina: 1
Acties:

  • _Hades_
  • Registratie: Juli 2000
  • Laatst online: 17:04
Hallo,
Ik heb een klein probleempje. Ik heb in een test setupje een iptables firewall met daarachter (op het interne netwerkje dus) een WindowsXP pc met FTP server staan. Wanneer ik vanaf een pc buiten dat netwerk probeer in te loggen, dan gaat dat perfect wanneer ik Passive mode uit heb staan. Maar wanneer ik passive aan doe, dan krijg ik geen listing. De ftpclient komt dan met deze melding:

PASV
227 Entering Passive Mode (192,168,1,3,15,187)
Data Socket Error: Connection timed out

Ik heb heel zowat alle hits van google al doorgelezen, en de search van got heb ik ook gebruikt. Maar ik kom er echt niet meer uit..

Dit is mijn firewall script:

#!/bin/sh

IPTABLES=/sbin/iptables
MODPROBE=/sbin/modprobe
LSMOD=/sbin/lsmod
GREP=/bin/grep
AWK=/usr/bin/awk

PUBLICIPSUB=192.168.1.3/32
PUBLICIP=192.168.1.3
PUBLICSUB=192.168.1.0/24
INTERNIP=10.0.0.1/32
INTERNSUB=10.0.0.0/24
LOCALSUB=127.0.0.0/8


#IP Conntrack module laden
echo -en "ip_conntrack, "

#Checken of die niet al geladen is.
if [ -z "` $LSMOD | $GREP ip_conntrack | $AWK {'print $1'} `" ]; then
$MODPROBE ip_conntrack
fi

#IP Conntrack FTP module laden
echo -en "ip_conntrack_ftp, "

#Checken of die niet al geladen is.
if [ -z "` $LSMOD | $GREP ip_conntrack_ftp | $AWK {'print $1'} `" ]; then
$MODPROBE ip_conntrack_ftp
fi

echo -en "ip_nat_ftp, "

if [ -z "` $LSMOD | $GREP ip_nat_ftp | $AWK {'print $1'} `" ]; then
$MODPROBE ip_nat_ftp
fi


#Default policy zetten op de tables
$IPTABLES -P INPUT DROP
$IPTABLES -P FORWARD DROP
$IPTABLES -P OUTPUT ACCEPT


#Tables flushen
$IPTABLES -F INPUT
$IPTABLES -F FORWARD
$IPTABLES -F OUTPUT
$IPTABLES -F -t nat

#Forward alle pakketjes van eth1(intern netwerk) naar internet
$IPTABLES -A FORWARD -i eth1 -o eth0 -j ACCEPT

#Forward alle pakketjes die bij bestaande of related verbindingen horen
$IPTABLES -A FORWARD -i eth0 -o eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT

#Laat alle pakketjes in de firewall zelf die bij verbindingen horen
$IPTABLES -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT

#Alle inputs van interne en local interfaces toestaan
$IPTABLES -A INPUT -i eth1 -s 0/0 -d 0/0 -j ACCEPT
$IPTABLES -A INPUT -i lo -s 0/0 -d 0/0 -j ACCEPT


#NAT inschakelen
$IPTABLES -A POSTROUTING -t nat -s $INTERNSUB -o eth0 -j SNAT --to-source $PUBLICIP


#Portforwarding
$IPTABLES -A PREROUTING -t nat -p tcp -d $PUBLICIP --dport 21 -j DNAT --to-destination 10.0.0.10:21

$IPTABLES -A PREROUTING -t nat -p tcp -d $PUBLICIP --sport 4000:5000 -j DNAT --to 10.0.0.10 --dport 4000:5000


#Poorten open zetten
$IPTABLES -A FORWARD -p tcp -d 10.0.0.10 --dport 21 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

$IPTABLES -A FORWARD -p tcp -d 10.0.0.10 --dport 4000:5000 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT


#Gespoofde adressen weigeren op de public interface
$IPTABLES -A INPUT -i eth0 -s $PUBLICIPSUB -j DROP
$IPTABLES -A INPUT -i eth0 -s $INTERNSUB -j DROP
$IPTABLES -A INPUT -i eth0 -s $LOCALSUB -j DROP

#Alle overige UDP en TCP requests weigeren
$IPTABLES -A INPUT -s 0/0 -d 0/0 -p udp -j DROP
$IPTABLES -A INPUT -s 0/0 -d 0/0 -p tcp --syn -j DROP

#IP forwarding aanzetten
echo 1 > /proc/sys/net/ipv4/ip_forward

#Melding bij booten
echo -e "Firewall geladen."




Op de ftpserver heb ik een passiveport range ingesteld van 4000 tot 5000 zoals ook te zien is in het script.

[ Voor 4% gewijzigd door _Hades_ op 23-01-2004 22:01 ]


  • Gondor
  • Registratie: September 2003
  • Laatst online: 16:29
Bij een time-out denk ik aan;

1- Je server geeft geen antwoordt op passive requests.
Ik weet niet welk ftp server je gebruikt maar staat die passive ftp wel toe, is die evt. geenabled?

2- Pakketten verdwijnen in iptables.
Het zou ook handig zijn als je sommige pakketten gaat loggen voor dat je ze laat vallen. Op die manier kan je ook veel sneller achterhalen wat er nog mist of niet goed is aan je regels.

"Peace cannot be kept by force. It can only be achieved by understanding"-Albert Einstein-


  • Tomaat
  • Registratie: November 2001
  • Laatst online: 11:41
*slap* lees Tomaat!

[ Voor 93% gewijzigd door Tomaat op 24-01-2004 10:38 ]


  • pierre-oord
  • Registratie: April 2002
  • Laatst online: 20-02 12:27
Probeer eens poort 20 te forwarden :) dus portmapping & forward.
Ik heb overigens niet die port geforward, maar gebruik m'n FTP altijd via web2ftp of intern. Extern komt misschien later pas. Hier heb ik nog een stukje opgezocht dat dit bevestigd:
You may already know that when FTP (File Transfer Protocol) commands cross the wire, they use port 21 by default. You may also know that port 20 is assigned to FTP data. Unfortunately, most FTP data sessions do not actually use port 20.
Bron: http://www.networknewz.com/2003/0922.html
En hier nog wat dingen over blokkeren enzo:
http://www.linuxchix.org/...urity/connection_tracking

Misschien dat je firewall te strikt is...
Probeer ook eens te zoeken op google met: "FTP 21 20"

[ Voor 125% gewijzigd door pierre-oord op 24-01-2004 11:04 ]

Ondernemer in tech (oud LOQED.com, nu UpToMore.com)


  • _Hades_
  • Registratie: Juli 2000
  • Laatst online: 17:04
pierre-oord schreef op 24 januari 2004 @ 10:59:
Probeer eens poort 20 te forwarden :) dus portmapping & forward.
Ik heb overigens niet die port geforward, maar gebruik m'n FTP altijd via web2ftp of intern. Extern komt misschien later pas. Hier heb ik nog een stukje opgezocht dat dit bevestigd:


[...]
Poort 20 word volgens mij alleen gebruikt voor active ftp, en die dataverbinding word vanuit de server geopend, en dat kan dus ook gewoon (van binnen naar buiten accept ie alles).

Ik heb het nog even geprobeerd, maar het maakt niet veel uit.. :/

Bedankt voor je links iig :)

Verwijderd

kep hetzelfde probleem :(
krijg het ook niet opgelost.

[ Voor 38% gewijzigd door Verwijderd op 24-01-2004 20:16 ]


  • pierre-oord
  • Registratie: April 2002
  • Laatst online: 20-02 12:27
Heb je al eens je firewall wijd open gezet, dus geen policy enzo? En eventueel andere FTP software.

Ondernemer in tech (oud LOQED.com, nu UpToMore.com)


Verwijderd

pierre-oord schreef op 24 januari 2004 @ 20:23:
Heb je al eens je firewall wijd open gezet, dus geen policy enzo? En eventueel andere FTP software.
Ikzelf heb iptables alleen in gebruik als gateway op het interne netwerk, dus ik heb geen policy ingesteld. Andere FTP software kan het niet zijn, bij mij lukt een active verbinding met ieder ftp programma maar een passieve verbinding niet, webbrowsers doen passive verbindingen leggen en geen active dus daar hebben wij nix aan.

  • pierre-oord
  • Registratie: April 2002
  • Laatst online: 20-02 12:27
Verwijderd schreef op 24 januari 2004 @ 20:34:
[...]

Ikzelf heb iptables alleen in gebruik als gateway op het interne netwerk, dus ik heb geen policy ingesteld. Andere FTP software kan het niet zijn, bij mij lukt een active verbinding met ieder ftp programma maar een passieve verbinding niet, webbrowsers doen passive verbindingen leggen en geen active dus daar hebben wij nix aan.
eum, ik bedoel de andere server ftp software. Werkt het trouwens intern wel? Ik kan me niet herinneren dat je dat zei; zonder IPtables ertussen kun je dan wel passive doen? Even zien of het probleem iptables is of je server software :)

edit:
En wat ik niet weet: Zou ipchains kunnen conflicteren misschien? Hier heb ik geen verstand van, maar las eens ergens dat de pakketten weleens samen geinstalleerd kunnen zijn.

[ Voor 12% gewijzigd door pierre-oord op 24-01-2004 20:49 ]

Ondernemer in tech (oud LOQED.com, nu UpToMore.com)


  • Gondor
  • Registratie: September 2003
  • Laatst online: 16:29
pierre-oord schreef op 24 januari 2004 @ 20:48:
[...]
edit:
En wat ik niet weet: Zou ipchains kunnen conflicteren misschien? Hier heb ik geen verstand van, maar las eens ergens dat de pakketten weleens samen geinstalleerd kunnen zijn.
Ze kunnen wel tegelijk geïnstalleerd zijn maar tegelijk actief kunnen ze niet zijn.

"Peace cannot be kept by force. It can only be achieved by understanding"-Albert Einstein-


  • NoBody
  • Registratie: Juni 2001
  • Laatst online: 12-12-2024

NoBody

www.gentoo.org

je moet op je ftp-server even het internet-IP invullen als "passive mode IP" (bij serv-u is dit te realiseren met "Domains -> <naam domein> -> Settings -> tabje 'Advanced' en dan optie 'Allow passive mode data transfers, use IP <invullen>'", bij GuildFTPd met "Admin -> Options -> tabje 'Advanced settings' -> Real IP address) :)

That'll be all :Y)

Hoi


  • Jimbolino
  • Registratie: Januari 2001
  • Laatst online: 11:32

Jimbolino

troep.com

code:
1
PUBLICIP=192.168.1.3
hier kan je al ruiken dat het misgaat

de oplossing van NoBody zou moeten werken (je server moet zijn externe ip weten)

vermeld in het vervolg ook ff welk merk ftpd je draait :)

The two basic principles of Windows system administration:
For minor problems, reboot
For major problems, reinstall


  • _Hades_
  • Registratie: Juli 2000
  • Laatst online: 17:04
Jimbolino schreef op 25 januari 2004 @ 03:04:
code:
1
PUBLICIP=192.168.1.3
hier kan je al ruiken dat het misgaat

de oplossing van NoBody zou moeten werken (je server moet zijn externe ip weten)

vermeld in het vervolg ook ff welk merk ftpd je draait :)
Het is een testsetup, en ik doe nu net alsof dat subnet het internet is zeg maar :).
De ftpserver is trouwens helemaal goed ingesteld, en zou zo moeten werken.

Ik ben trouwens al zo ver gekomen dat mijn client zegt dat de connection refused is :). Ik denk dat de regels niet in goede volgorde staan ofzo.. ik pruts iig nog even verder :)

  • Gondor
  • Registratie: September 2003
  • Laatst online: 16:29
_Hades_ schreef op 25 januari 2004 @ 14:29:
[...]
Ik ben trouwens al zo ver gekomen dat mijn client zegt dat de connection refused is :). Ik denk dat de regels niet in goede volgorde staan ofzo.. ik pruts iig nog even verder :)
Nou, als je client 'connection refused' zegt en gezien je in je fw geen regel hebt waar REJECT target gebruikt wordt kan het bijna niets anders zijn dan dat je ftp server het weigert.

"Peace cannot be kept by force. It can only be achieved by understanding"-Albert Einstein-


  • Jimbolino
  • Registratie: Januari 2001
  • Laatst online: 11:32

Jimbolino

troep.com

code:
1
2
CLIENT -> PASV
SERVER -> 227 Entering Passive Mode (192,168,1,3,15,187)

Je server geeft een verkeerd ip door aan de client. De client probeert te connecten met 192.168.1.3 op poort 4027 (15*256+187)

Als op je router deze poorten zijn doorgemapt, kun je het controleren door "telnet [jouw ip] 4027" te doen. Dan zou je een dirlisting moeten zien...

[ Voor 4% gewijzigd door Jimbolino op 25-01-2004 16:21 ]

The two basic principles of Windows system administration:
For minor problems, reboot
For major problems, reinstall


  • _Hades_
  • Registratie: Juli 2000
  • Laatst online: 17:04
Het werkt! :)
Een nieuwe ftpserver hielp toch.. tegen mijn verwachting in overigens ;)
Ook heb ik mijn script een beetje netjes gemaakt ;)

Hieronder mijn script zoals het nu draait:
#!/bin/sh

IPTABLES=/sbin/iptables
MODPROBE=/sbin/modprobe
LSMOD=/sbin/lsmod
GREP=/bin/grep
AWK=/usr/bin/awk

PUBLICIPSUB=192.168.1.3/32
PUBLICIP=192.168.1.3
PUBLICSUB=192.168.1.0/24
INTERNIP=10.0.0.1/32
INTERNSUB=10.0.0.0/24
LOCALSUB=127.0.0.0/8


#Modules
echo -en "ip_conntrack, "
if [ -z "` $LSMOD | $GREP ip_conntrack | $AWK {'print $1'} `" ]; then
$MODPROBE ip_conntrack
fi

echo -en "ip_conntrack_ftp, "
if [ -z "` $LSMOD | $GREP ip_conntrack_ftp | $AWK {'print $1'} `" ]; then
$MODPROBE ip_conntrack_ftp
fi

echo -en "ip_nat_ftp, "
if [ -z "` $LSMOD | $GREP ip_nat_ftp | $AWK {'print $1'} `" ]; then
$MODPROBE ip_nat_ftp
fi


#IP forwarding aanzetten
echo 1 > /proc/sys/net/ipv4/ip_forward

#Tables flushen
$IPTABLES -F INPUT
$IPTABLES -F FORWARD
$IPTABLES -F OUTPUT
$IPTABLES -F -t nat

#Default policy zetten op de tables
$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -P FORWARD DROP

#NAT regels
$IPTABLES -A FORWARD -i eth1 -j ACCEPT
$IPTABLES -A INPUT -i eth1 -j ACCEPT
$IPTABLES -A OUTPUT -o eth1 -j ACCEPT
$IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A POSTROUTING -t nat -s $INTERNSUB -o eth0 -j SNAT --to-source $PUBLICIP

#Laat alle pakketjes in de firewall zelf die bij verbindingen horen
$IPTABLES -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT

#Alle inputs van interne en local interfaces toestaan
$IPTABLES -A INPUT -i eth1 -s 0/0 -d 0/0 -j ACCEPT
$IPTABLES -A INPUT -i lo -s 0/0 -d 0/0 -j ACCEPT


#Poorten open zetten
$IPTABLES -A INPUT -p tcp --dport 21 -j ACCEPT
$IPTABLES -A INPUT -p tcp --dport 4000:4049 -j ACCEPT

#Portforwarding
$IPTABLES -A FORWARD -i eth0 -p tcp --dport 21 -j ACCEPT
$IPTABLES -t nat -A PREROUTING -i eth0 -p tcp -d $PUBLICIP --dport 21 -j DNAT --to-destination 10.0.0.10:21
$IPTABLES -A FORWARD -i eth0 -p tcp --dport 4000:4049 -j ACCEPT
$IPTABLES -t nat -A PREROUTING -i eth0 -p tcp -d $PUBLICIP --dport 4000:4049 -j DNAT --to-destination 10.0.0.10:4000-4049

#Gespoofde adressen weigeren op de public interface
$IPTABLES -A INPUT -i eth0 -s $PUBLICIPSUB -j DROP
$IPTABLES -A INPUT -i eth0 -s $INTERNSUB -j DROP
$IPTABLES -A INPUT -i eth0 -s $LOCALSUB -j DROP

#Alle overige UDP en TCP requests weigeren
$IPTABLES -A INPUT -i eth0 -p udp --dport 0:65535 -j DROP
$IPTABLES -A INPUT -i eth0 -p tcp --dport 0:65535 -j DROP

#Melding bij booten
echo -e "Firewall geladen."

[ Voor 7% gewijzigd door _Hades_ op 26-01-2004 17:15 ]

Pagina: 1