[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Redireccion FTP



El Jueves, 19 de Enero de 2006 16:27, Carlos Ferrabone escribió:
> El Jueves, 19 de Enero de 2006 09:43, Pedro M. López escribió:
> > El Jueves, 19 de Enero de 2006 13:23, Carlos Ferrabone escribió:
> > > El Jueves, 19 de Enero de 2006 08:04, Listas escribió:
> > > > Hola, ayer redirigi el puerto 21 para conectar a una maquina a traves
> > > > del 31 de la siguiente manera:
> > > > $IPTABLES -t nat -A PREROUTING -i eth0 -p tcp --dport 31 -j DNAT --to
> > > > 128.100.0.15:21
> > > > la cuestion es que cuando intentan conectar, les deja validarse pero
> > > > una vez dentro cuando intentan moverse por ahi les dice "invalid port
> > > > comand", ¿el puerto ftp se debe redirigir de alguna manera especial?
> > > > es que no les funciona a partir de este cambio, hasta ahora habia
> > > > funcionado si problemas. Gracias,
> > > > Laur@..
> > >
> > > a mi me pasa lo mismo. pero si uso el cliente ftp NO en modo pasivo (me
> > > aprece que se llama modo puerto) anda. es un problema de configuracion
> > > de iptables. en el modo pasivo, luego de la autentificacion, el cliente
> > > intenta conecatarse en un puerto alto para las trasferencias, y eso es
> > > lo que falla. justamente ahora estoy buscando info de como arreglarlo,
> > > pero lo hice andar destildando del cliente el casillero del modo
> > > pasivo. aclaro que si acepto todos los paquetes relacionados
> > >
> > > $iptables -A INPUT -i ppp0 -m state --state ESTABLISHED,RELATED -j
> > > ACCEPT
> > >
> > > alguien me habia dicho que la solucion era poner en esta linea el rango
> > > de puertos, pero no me acuerdo exactamente como era, y no lo pude
> > > probar
> >
> > ¿No te falta también el puerto 20?
> > El ftp utliza tanto uno como otro.
> > A parte de esto, me parece que hace falta cargar los módulos ip_nat_ftp,
> > ip_conntrack_ftp, y el  iptable_nat.
>
> los modulos no me faltan
> [root@fedora ~]# modprobe -l | grep ftp
> /lib/modules/2.6.14-1.1653_FC4/kernel/net/ipv4/netfilter/ip_nat_ftp.ko
> /lib/modules/2.6.14-1.1653_FC4/kernel/net/ipv4/netfilter/ip_conntrack_ftp.k
>o
> /lib/modules/2.6.14-1.1653_FC4/kernel/net/ipv4/netfilter/ip_conntrack_tftp.
>ko /lib/modules/2.6.14-1.1653_FC4/kernel/net/ipv4/netfilter/ip_nat_tftp.ko
> /lib/modules/2.6.14-1.1653_FC4/kernel/net/ipv4/ipvs/ip_vs_ftp.ko
>
> [root@fedora ~]# modprobe -l | grep iptable
> /lib/modules/2.6.14-1.1653_FC4/kernel/net/ipv4/netfilter/iptable_raw.ko
> /lib/modules/2.6.14-1.1653_FC4/kernel/net/ipv4/netfilter/iptable_mangle.ko
> /lib/modules/2.6.14-1.1653_FC4/kernel/net/ipv4/netfilter/iptable_nat.ko
> /lib/modules/2.6.14-1.1653_FC4/kernel/net/ipv4/netfilter/iptable_filter.ko
>
> y este es el script que uso
>
> #!/bin/sh
> #
> # generated by -bash on 2006.01.07.52
> #
>
> # set a few variables
> echo ""
> echo "  setting global variables"
> echo ""
> export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
> iptables="/sbin/iptables"
>
> # adjust /proc
> echo "  applying general security settings to /proc filesystem"
> echo ""
> if [ -e /proc/sys/net/ipv4/tcp_syncookies ]; then echo 1
>
> > /proc/sys/net/ipv4/tcp_syncookies; fi
>
> if [ -e /proc/sys/net/ipv4/conf/all/rp_filter ]; then echo 1
>
> > /proc/sys/net/ipv4/conf/all/rp_filter; fi
>
> if [ -e /proc/sys/net/ipv4/ip_forward ]; then echo 1
>
> > /proc/sys/net/ipv4/ip_forward; fi
>
> # load some modules
> if [ -e /lib/modules/`uname -r`/kernel/net/ipv4/netfilter/ip_nat_irc.o ];
> then modprobe ip_nat_irc; fi
> if [ -e /lib/modules/`uname
> -r`/kernel/net/ipv4/netfilter/ip_conntrack_irc.o ]; then modprobe
> ip_conntrack_irc; fi
> if [ -e /lib/modules/`uname
> -r`/kernel/net/ipv4/netfilter/ip_conntrack_ftp.o ]; then modprobe
> ip_conntrack_ftp; fi
> if [ -e /lib/modules/`uname -r`/kernel/net/ipv4/netfilter/ip_nat_ftp.o ];
> then modprobe ip_nat_ftp; fi
>
> # flush any existing chains and set default policies
> $iptables -F INPUT
> $iptables -F OUTPUT
> $iptables -P INPUT DROP
> $iptables -P OUTPUT ACCEPT
>
> # setup nat
> echo "  applying nat rules"
> echo ""
> $iptables -F FORWARD
> $iptables -F -t nat
> $iptables -P FORWARD DROP
> $iptables -A FORWARD -i eth0 -j ACCEPT
> $iptables -A INPUT -i eth0 -j ACCEPT
> $iptables -A OUTPUT -o eth0 -j ACCEPT
> $iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
> $iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o ppp0 -j MASQUERADE
>
> # allow all packets on the loopback interface
> $iptables -A INPUT -i lo -j ACCEPT
> $iptables -A OUTPUT -o lo -j ACCEPT
>
> # allow established and related packets back in
> $iptables -A INPUT -i ppp0 -m state --state ESTABLISHED,RELATED -j ACCEPT
>
> # icmp
> echo "  applying icmp rules"
> echo ""
> $iptables -A OUTPUT -p icmp -m state --state NEW -j ACCEPT
> $iptables -A INPUT -p icmp -m state --state ESTABLISHED,RELATED -j ACCEPT
> $iptables -A INPUT -p icmp --icmp-type echo-request -i ppp0 -j DROP
>
> # apply icmp type match blocking
> echo "  applying icmp type match blocking"
> echo ""
> $iptables -I INPUT -p icmp --icmp-type redirect -j DROP
> $iptables -I INPUT -p icmp --icmp-type router-advertisement -j DROP
> $iptables -I INPUT -p icmp --icmp-type router-solicitation -j DROP
> $iptables -I INPUT -p icmp --icmp-type address-mask-request -j DROP
> $iptables -I INPUT -p icmp --icmp-type address-mask-reply -j DROP
>
> # open ports to the firewall
> echo "  applying the open port(s) to the firewall rules"
> echo ""
> $iptables -A INPUT -p tcp --dport 22 -j ACCEPT
> $iptables -A INPUT -p tcp --dport 21 -j ACCEPT
> $iptables -A INPUT -p tcp --dport 6881:6890 -j ACCEPT
> #UDP azureus
> $iptables -A INPUT -p udp --dport 6881 -j ACCEPT
> #UDP azureus
> $iptables -A INPUT -p tcp --dport 5901 -j ACCEPT
> $iptables -A INPUT -p tcp --dport 5801 -j ACCEPT
> $iptables -A INPUT -p tcp --dport 8245 -j ACCEPT
>
>
>
>
> # drop all other packets
> echo "  applying default drop policies"
> echo ""
> $iptables -A INPUT -i ppp0 -p tcp --dport 0:65535 -j DROP
> $iptables -A INPUT -i ppp0 -p udp --dport 0:65535 -j DROP
>
> echo "### quicktables is loaded ###"
> echo ""


Uhmm, veamos
Con estas reglas debería de funcionarte el ftp, pero a través de sus puertos 
originales.

Si lo que quieres es redirigir las peticiones que te lleguen al puerto 31 (y 
supongo, que por tanto también al 32) y redirigirtelas a ti mismo al 21 y 22, 
sería en el prerouting supongo.
algo así como (no está probado)
iptables -A PREROUTING -p tcp --dport 31 -j DNAT --to-destination 127.0.0.1:21
iptables -A PREROUTING -p tcp --dport 32 -j DNAT --to-destination 127.0.0.1:22

(falta decir que tienen que ser paquetes nuevos, que llegan por la interfaz en 
la que quieras cambiar los puertos y demás)



Reply to: