iptables servidor nat con direccionamiento de puertos no me trabaja bien

Forums: 

tengo montado un servidor linux haciendo nat y port forwarding ya tengo todos los puertos localizados de mi servidor con camaras de vigilancia que esta montando en una pc con windows tienen 16 camaras pero el programa se comunica via web ahora usa 8 puertos diferentes ya los tengo ubicado pero me surge un detalle en mi red tengo el squid solo para proxy cache pero tambien pueden salir via nat lo que pasa es que filtro contenidos con el squid y no quiero que se salgan del squid y por eso aplique una regla del iptables donde deniego el acceso al puerto 80 FORWARD para toda la red, hasta ahi todo va bien pero como tengo web en el servidor no puedo direccionar el puerto 80 al ip de la maquina con las camaras por lo tanto hago un PREROUTING del 81 al 80 de la maquina interna ahi va todo bien pero cuando tengo que cargar la web del servidor de camaras no levanta ya habilite el FORWARD del puerto 80 a esa maquina pero el programa carga la web pero me da error el software activex cuando cancelo la regla de bloquear a todas las maquinas el puerto 80 si carga perfectamente las camaras porque no puedo decirle al iptables que solo le deje el puerto 80 a esa maquina especificamente sin que falle a continuacion les muestro mi iptables.
mi tabla nat es esta
-A PREROUTING -i eth0 -p tcp -m tcp --dport 3550 -j DNAT --to-destination 192.168.1.12:3550
-A PREROUTING -i eth0 -p tcp -m tcp --dport 81 -j DNAT --to-destination 192.168.1.12:80
-A PREROUTING -i eth0 -p tcp -m tcp --dport 5066 -j DNAT --to-destination 192.168.1.12:5066
-A PREROUTING -i eth0 -p tcp -m tcp --dport 5550 -j DNAT --to-destination 192.168.1.12:5550
-A PREROUTING -i eth0 -p tcp -m tcp --dport 6550 -j DNAT --to-destination 192.168.1.12:6550
-A PREROUTING -i eth0 -p tcp -m tcp --dport 4550 -j DNAT --to-destination 192.168.1.12:4550
-A PREROUTING -i eth0 -p tcp -m tcp --dport 3650 -j DNAT --to-destination 192.168.1.12:3650
-A PREROUTING -i eth0 -p tcp -m tcp --dport 3389 -j DNAT --to-destination 192.168.1.12:3389
-A PREROUTING -i eth0 -p tcp -m tcp --dport 2967 -j DNAT --to-destination 192.168.1.12:2967
-A POSTROUTING -o eth0 -j SNAT --to-source xxx.xxx.xxx.xxx

y las demas estan aqui.

-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 25 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 53 -j ACCEPT
-A INPUT -p udp -m udp --dport 53 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 110 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 143 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 1:1024 -j DROP
-A FORWARD -s 192.168.1.21 -p tcp -m tcp --dport 80 -j ACCEPT
-A FORWARD -s 192.168.1.12 -p tcp -m tcp --dport 80 -j ACCEPT
-A FORWARD -p tcp -m tcp --dport 80 -j DROP

y no funciona ahi solo que quite la ultima linea del forward donde deniego toda utilizacion del puerto 80 a toda la red funciona que puede pasar ahi. gracias por su apreciado tiempo y dedicar un tiempito a mi problema :) salud a todos los que los rodean. gracias

algo de teoria

Imagen de denisenrique

REDIRECT
Otra extensión es REDIRECT (redirigir). Su misión es alterar los paquetes, de manera de cambiar el puerto de destino, pero sin modificar opciones adicionales, como en el caso de mangle.
Por ejemplo
# iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 3200
desvía los paquetes que llegan al puerto 80 para redirigirlos al puerto 3200. Es útil para Web servers, ya que se puede correr Apache en un puerto superior al 1024 (user ports) y desviar el tráfico desde el puerto 80 al puerto donde realmente está corriendo, de forma transparente.
SNAT y DNAT
Estas extensiones permiten realizar transformaciones de dirección (origen y destino, respectivamente) de los paquetes. DNAT indica que la dirección de destino debe ser modificada. SNAT, la dirección de origen.
Permiten, por ejemplo, redirigir el tráfico hacia un host específico
# iptables -t nat -A POSTROUTING -d 192.168.1.1 -p tcp --dport 80 -j SNAT --to 192.168.1.3
O permitir que el tráfico desde Internet sea enviado a una máquina dentro de la LAN
# iptables -t nat -A PREROUTING -d 10.200.1.18 -j DNAT --to 192.168.1.8.

en el forward podrias hacer un not(!)
iptables -A FORWARD -s !tuipadenegar -p tcp -m tcp --dport 80 -j ACCEPT

en vez de utilizar drop , bueno seria una manera de hacerlo

Nota:Para los que piden las fuentes esto me fue enviado por un amigo por correo diduartes@cablenet.com.ni

Denis Guido

Denis Guido

gracias denis

Imagen de juandarcy2000

probando la ultima linea del forward donde deniego el uso del puerto 80 notaba que ahi andaba algo malo lo que hice fue decirle al iptables que bloqueara el en el forward el puerto 80 pero solo a la interfaz de la lan y bloqueo el puerto y no me bloqueo las camaras lo que no entendi fue el porque si no especifico que interfaz bloquear se supone las bloquea todas porque cuando le digo a mi regla donde le permito que use el 80 a la ip 192.168.1.12 la deje salir por todas las interfaces no hace el trabajo bien.
esto fue lo que puse
-A FORWARD -s 192.168.1.12 -p tcp -m tcp --dport 80 -j ACCEPT
-A FORWARD -i eth1 -p tcp -m tcp --dport 80 -j DROP

ahi trabaja muy bien todo es que le quite el eth1 y se me cae el acceso a las camaras via web desde otra red pero ojo en la donde le digo al 192.168.1.12 que use el 80 no lo deja trabajar si en la regla de abajo no le digo a que interfaz. ahi quedo mi duda voy a leer un poco mas del asunto pero por el momento me esta trabajando bien. talvez alguien sabe el porque no trabaja bien el programa de vigilancia y a tenido problemas similares y explique como resolvio el problema. gracias

Prueba poniendole la

Imagen de damage

Prueba poniendole la mascara, intenta asi:
-A FORWARD -s 192.168.1.12/32 -p tcp -m tcp --dport 80 -j ACCEPT
Saludos
Keep The Fire Burning.....
Stryper 1988
http://counter.li.org/

ya lo trate pero

Imagen de juandarcy2000

nada no funciona solo de la forma en que lo puse anteriormente funciono pero no entendi el porque trabajo porque no le hace caso a la regla que le digo que le de permiso a la ip 192.168.1.12 al puerto 80 y denegar el uso del 80 para todas las tarjetas en FORWARD solo tengo que decirle que la eth1 tendra denegado el uso del 80.
una cosa que podria pasar es que el programa envia paquetes y autoriza via el 80 y al hacer el nat no reconoce el ip 192.168.1.12 en la parte wan por el enmascaramiento por eso deniega el uso del puerto 80 en la parte wan me imagino que trata de ver correspondencias en ambas interfaces para que el programa autorice el envio de datos. es una idea verdad que opinan.? tomando en cuenta que el programa es un software profesional de vigilancia para 16 camaras. que graba y envia paquetes por la internet debe tener algunas vainas de certificados de autorizacion.