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

Re: iptables forwarding nat + p2p + policy drop



KEBRA escribió:
Julián Esteban Perconti escribió:
Hola gente..
sigo sin entender algunas cuestiones de iptables:

tengo un script para rutear hacia una lan, haciendo nat y forwarding con la tabla filter en drop, etc etc..

el tema es que:

1º Tengo mi emule configurado para el puerto 2000/tcp 2010/udp, bien. Para que lograr que este bicho funcione con las políticas estan en drop (excepto de la tabla nat, solo filter) tuve que hacer algo como lo siguiente:

En NAT:

iptables -t nat -A PREROUTING -i ppp0 -p tcp --sport 1024:65535 --dport 2000 -j DNAT --to 192.168.0.2:2000 iptables -t nat -A PREROUTING -i ppp0 -p udp --sport 1024:65535 --dport 2010 -j DNAT --to 192.168.0.2:2010

Y en filter:

iptables -t filter -A FORWARD -i eth1 -p tcp --sport 1024:65535 --dport 2000 -d 192.168.0.2 -j ACCEPT iptables -t filter -A FORWARD -o eth1 -p tcp --sport 1024:65535 --dport 2000 -d 192.168.0.2 -j ACCEPT iptables -t filter -A FORWARD -o eth1 -p udp --dport 1024:65535 --sport 2010 -j ACCEPT iptables -t filter -A FORWARD -i eth1 -p udp --dport 1024:65535 --sport 2010 -j ACCEPT

OK, tengo una "ID Alta" en ambas redes (ed2k y kademlia)

Sin embargo viendo un poco el trafico en iptraf aparecen conexiones del tipo:

UDP (50 bytes) from 190.51.60.99:2010 to 124.135.213.248:6268 on ppp0
UDP (66 bytes) from 192.168.0.2:2010 to 84.220.31.159:36625 on eth1
UDP (66 bytes) from 190.51.60.99:2010 to 84.220.31.159:36625 on ppp0
UDP (79 bytes) from 192.168.0.2:2010 to 60.234.142.64:57766 on eth1
UDP (79 bytes) from 190.51.60.99:2010 to 60.234.142.64:57766 on eth1
UDP (163 bytes) from 79.103.169.41:54786 to 190.51.60.99:2010 on ppp0
UDP (163 bytes) from 79.103.169.41:54786 to 192.168.0.2:2010 on eth1
UDP (66 bytes) from 124.135.213.248:6268 to 190.51.60.99:2010 on ppp0
UDP (66 bytes) from 124.135.213.248:6268 to 192.168.0.2:2010 on eth1

Bueno no puedo ubicar las TCP, ya que desde hace un tiempo eMule sobrevive mas por la red KAD que la ed2k..(además el p2p hace que el iptraf vuele) El hecho es que..en forward no uso para nada la iface ppp0 (mucho menos eth0, que vendria a ser "reemplazada" por ppp0) y lo contrario en NAT..uso ppp0 pero no eth1 (supongo que es por ahi donde entra la ip que tengo que natear), y además de eso solo nateo puerto de destino 2010 y 2000, mientras que en iptraf estos puertos también esta como origen ( 1º y 2º linea de iptraf) ¿como es entonces que tengo ID alta?

Y lo que tampoco me doy cuenta y busque en internet es que no tengo que hacer nat de los 0:1024, entonces digo: "Ahh! OK, no tengo que hacer DNAT de estos puertos por que la policy de nat esta en accept" (en las 3 cadenas), Pero si fuera asi tampoco tendría que hacer DNAT de los puertos que uso para el emule. Y si no hago DNAT de dichos puertos emule no conecta. Entonces, ¿por que unos SI y otros NO? Me van a matar lo se; pero tampoco es necesario en NAT permitir en --sport 2000 y 2010, como esta en filter.

Bueno paro aca por que me van a echar de la lista, y los que estan cansados de que escriba siempre de iptables tienen derecho a insultarme y escribir lo que se les ocurra.

Perdon y Gracias.

Atte: "iptables addict" jaj

PD: Esto viene a poder tener ID alta con lo justo y necesario, sin puertos de mas ni de menos; para no tener lo que "justo y trojan horse necesita", como alguien me dijo una vez tratando un hilo similar a este. Lo cual me parece perfecto.



Bien, antes que nada aseguremonos que sos conciente que 1024:65535 significa "desde el puerto 1024 hasta el puerto 65535".
si soy consiente de ello.
Ahora si puedo preguntarte ¿para qué queres tantos puertos abiertos? .
es lo que requiere el p2p...OK, el puerto de destino es en tu caso el 9185,40385,9188, etc...DESTINO, pero el de origen puede ser cualquiera entre 1024:65535, por ejemplo: cuando "usamos" el tcp/80 para navegar.., salimos por un puerto que es aleatorio, entre 1024:65535 (puerto de origen) y nos reciben (el servidor) por el 80, el que usa el 80 es el servidor, no nosotros. Lo mismo ocurre con el p2p, pero peor (mas complejo por lo que llevo con el tema. ).
Que alguien me corrija.

Te pego las reglas que usaba yo antes de tener un script de verdad:
a ver..


## Mulita
iptables -A FORWARD -s 10.0.0.2 -i eth0 -p tcp --dport 9185 -j ACCEPT
iptables -A FORWARD -s 10.0.0.2 -i eth0 -p udp --dport 40385 -j ACCEPT
iptables -A FORWARD -s 10.0.0.2 -i eth0 -p tcp --dport 9188 -j ACCEPT
iptables -A FORWARD -s 10.0.0.2 -i eth0 -p udp --dport 9188 -j ACCEPT
iptables -A FORWARD -s 10.0.0.2 -i eth0 -p tcp --dport 4662 -j ACCEPT
iptables -A FORWARD -s 10.0.0.2 -i eth0 -p udp --dport 4672 -j ACCEPT
iptables -A FORWARD -s 10.0.0.2 -i eth0 -p udp --dport 4662 -j ACCEPT
iptables -A FORWARD -s 10.0.0.2 -i eth0 -p tcp --dport 4672 -j ACCEPT
iptables -A FORWARD -s 10.0.0.2 -i eth0 -p tcp -j ACCEPT
iptables -A FORWARD -s 10.0.0.2 -i eth0 -p udp -j ACCEPT
iptables -t nat -A PREROUTING -p tcp --dport 9185 -j DNAT --to 10.0.0.2:9185 iptables -t nat -A PREROUTING -p tcp --dport 9188 -j DNAT --to 10.0.0.2:9188 iptables -t nat -A PREROUTING -p udp --dport 40385 -j DNAT --to 10.0.0.2:40385
Bueno leyendo un poco tu script, dijiste que "¿para que queres tantos puertos abiertos ?" , no podes decirme esto, teniendo estas dos reglas:

iptables -A FORWARD -s 10.0.0.2 -i eth0 -p tcp -j ACCEPT iptables -A FORWARD -s 10.0.0.2 -i eth0 -p udp -j ACCEPT

que alguien me corrija, pero yo por estas dos reglas entiendo: "permitir que entre quienquiera a 10.0.0.2 por eth0, siempre y cuando el protocolo sea tcp o udp". ahora bien.. las demas reglas que estan arriba de estas dos que elegí, para mi no tienen sentido.. estas 2 veces diciendo lo mismo y peor. ya que ( a grandes rasgos) el destino puede ser cualquiera, y los puertos de origen y destino también.

Ya que como dice el dicho "el que calla otorga" en iptables sucede algo similar...si no especificas puertos, ifaces o origen destino, etc.. iptables asume que es para todos los puertos, ifaces..etc.

Notá que en ningun punto hay un rango de puertos, solo los necesarios para mi configuracion:
idem

TCP: 9185
UDP: 40385

Los 46xx eran los pueros por defecto. Podés probar sin ellos.
El puerto 9188 es el resultado de 1985 + 3, que es para KAD.

Echále un vistazo y ajustalo a tus necesidades.
Ok..nos escribimos...



Reply to: