iptables: FTP por VPN

Juan Martínez jeugenio en umcervantes.cl
Jue Feb 1 08:04:21 CLST 2007


El Mie, 31 de Enero de 2007, 10:00 pm, Victor Quiroz escribió:
> Hola, resulta que ya tengo funcionando mis conexiones vpn desde 3
> oficinas a una oficina principal, hasta ahora todo va bien, pero
> resulta que ahora existe la necesidad de permitir conexiones de los
> clientes de las oficinas hacia la oficina principal por medio de FTP

Es decir, el servidor esta en la oficina principal, el resto de las
oficinas son clientes

> y PCanyware,

Por que no VNC?

> al momento de probarlo no se puede realizar la conexion, he
> probado con el siguiente script pero hasta ahora no puedo conseguirlo.
> Tambien considerar que este equipo actua de GW, y hace de proxy
>
> En el script solo adicione la parte correspondiente a los FTPs y
> PCanyware, ya que lo demas viene funcionando correctamente, me podrian
> ayudar a corregir  mi problema por favor? GRACIAS
> Variables:
> W_NIC,V_NIC, L_NIC son las interfaces de la red wan, vpn y lan
> respectivamente
> LAN, lAN_PRI son las redes locales y la red de la oficina principal
>
>
> #==================================================================
> #Permitimos Ip Forwarding
> echo 0 > /proc/sys/net/ipv4/ip_forward

Con eso no lo estas permitiendo, todo lo contrario

> #Para poder permitir el uso de FTP
> modprobe ip_conntrack
> modprobe ip_conntrack_ftp
> modprobe ip_nat_ftp
>
> #Politicas
> iptables -P INPUT DROP
> iptables -P OUTPUT DROP

DROP para OUTPUT? Cual es la idea?

> iptables -P FORWARD DROP
>
> #VPN
> iptables -A INPUT -i $W_NIC -p udp --dport 1194 -j ACCEPT
> iptables -A OUTPUT -o $W_NIC -p udp --dport 1194 -j ACCEPT
>
> iptables -A INPUT -i $V_NIC -j ACCEPT
> iptables -A OUTPUT -o $V_NIC -j ACCEPT
>
> iptables -A FORWARD -i $L_NIC -o $V_NIC -j ACCEPT
> iptables -A FORWARD -o $L_NIC -i $V_NIC -j ACCEPT
>
> #Conexiones de entrada
> iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
> iptables -A INPUT -i $W_NIC -m state --state NEW -j DROP
> iptables -I FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
>
> #Enmascaramiento de las peticiones
> iptables -t nat -A POSTROUTING -s $LAN -o $W_NIC -j MASQUERADE
>
> #Abrimos el puerto 3128 (SQUID):
> iptables -A INPUT -i $L_NIC -s $LAN -p tcp --dport 3128 -j ACCEPT
> iptables -A OUTPUT -d $LAN -m state --state ESTABLISHED,RELATED -p tcp
> --sport 3128 -j ACCEPT

Ojo! Le estas mandando todo el trafico de la red a Squid!
Es necesario?

> #Permitimos trafico con el DNS
> iptables -A FORWARD -p udp --dport 53 -j ACCEPT
>
> #FTP
> iptables -A FORWARD -s $LAN -d $LAN_PRI -p tcp --dport 20:21 -j ACCEPT
> iptables -A FORWARD -s $LAN_PRI -d $LAN -p tcp --sport 20:21 -j ACCEPT

Esta ultima linea no tiene sentido. Te falta establecer una regla de
FORWARD para que deje pasar a todas las conexiones ya establecidas.

> #PCanyware
> iptables -A FORWARD -s $LAN -d $LAN_PRI -p tcp --dport 5631:5632 -j ACCEPT
> iptables -A FORWARD -s $LAN_PRI -d $LAN -p tcp --sport 5631:5632 -j ACCEPT
> iptables -A FORWARD -s $LAN -d $LAN_PRI -p tcp --dport 5631:5632 -j ACCEPT
> iptables -A FORWARD -s $LAN_PRI -d $LAN -p tcp --sport 5631:5632 -j ACCEPT
>
>
> echo 1 > /proc/sys/net/ipv4/ip_forward

Esto es medio prehistorico. Mira la doc de sysctl.conf. De muestra un boton:

# Uncomment the next line to enable packet forwarding for IPv4
#net.ipv4.conf.default.forwarding=1

Creo que puedes tener errores de concepto en la forma que conformate las
reglas.

Yo no mandaria todo el trafico a Squid. No todo debe ser cacheado verdad?
Bueno, si es necesario hacerlo, entonces el acceso al FTP lo debes
gestionar con la ACL correspondiente en squid.conf.

Ahora con esta logica no se si se podria hacer lo mismo para pcanywhere.

Creo que puede ser mas optimo mandarle a squid solo el trafico que quieres
cachear. El resto no es necesario y se controla via reglas de iptables.

-- 
Juan Martinez                      Linux user # 335778
Departamento de Informática        499 7934 - 499 7992
Universidad Miguel de Cervantes    Mac Iver # 370 - Stgo. Centro - RM



Más información sobre la lista de distribución Linux