iptables no abre puertos?
Buenas con todos, tengo una duda, es que ya llevo mas de dos semanas intentanto configurar en mi servidor debian para que me redireccione una peticion externa(internet) hacia una pc interna de mi lan por remote desktop(puerto 3389), la cuestion esta en que ya probe muchos scripts que usan el DNAT, reviso con iptables -L y si estan las reglas puestas, pero cuando intento la conexion desde exterior, me da "acceso denegado".
Probando con nmap online, me sale que el puerto 3389 al cual me quiero conectar, aparecio en cierto momento con el estado filtered, y despues como closed...
¿Es que se debe configurar en algun otro lado aparte de iptables para abrir el puerto?... o que pasos seguir para saber si este esta abierto, y com configurarlo para poder ingresar y redireccionarlo
Gracias..
- Inicie sesión o regístrese para enviar comentarios
- 445 lecturas



Describe tu red y postea el script que estas utilizando.
Saludos.
postea lo que pusiste en DNAT para ver si es correcta la sentencia y que sistema operativo corre en tu maquina DMZ
Bueno aqui mi configuracion
--------------------------------------------------------
Servidor
- AlphaServer 400 4/233
Sistema Op.
- Debian 4 ETCH
Interfaces
- ETH0 -> xxx.xxx.xxx.xxx -Externa
- ETH1 -> 192.168.10.1 -Interna
PC (DMZ)
- Windows Server 2003 -> 192.168.10.241
LAN
- 192.168.10.0/255.255.255.0
--------------------------------------------------------
Servicios
- Proxy -> Squid 2.6 -----------------Levantado
- DHCP -> DHCP3-SERVER ---------------Levantado
- Firewall -> IPTABLES ---------------Aqui el problema<<<<<
--------------------------------------------------------
Objetivos:
- Redireccionar las peticiones externas que apunten por el puerto 3389 (remote desktop) a la ip xxx.xxx.xxx.xxx(ETH0)-- hacia el puerto 3389(remote desktop) de la ip interna 192.168.10.241(ETH1 - Windows Server 2003)
--------------------------------------------------------
--------------------------------------------------------
ultimo script eecutado en iptables
###Borro reglas previas
iptables -F
iptables -X
iptables -Z
iptables -t nat -F
###Acepto todo
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P PREROUTING ACCEPT
iptables -P POSTROUTING ACCEPT
###Acepto entrantes al puerto 80 y 3389
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 3389 -j ACCEPT
###Aceptar todo en las interfaces LAN
iptables -I INPUT 1 -i eth0 -j ACCEPT #Acepta todo lo que entre por la eth0
iptables -I INPUT 1 -i lo -j ACCEPT #Acepta el Looking
#Enrutado de las conexiones del puerto 3389
iptables -t nat -A PREROUTING -i eth0 -s 0/0 -p tcp --dport 3389 -j DNAT
--to 192.168.10.241
iptables -A FORWARD -i eth0 -d 192.168.10.1/255.255.255.0 -j ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
#Permitir forward a traves del router
echo 1 > /proc/sys/net/ipv4/ip_forward
-----------------------------------------------
Consultando NMAP ONLINE me lanza que el puerto 3389 de la ip (etho) esta filtered
Pero cuando vuelo las reglas del iptables
me sale que el puerto 3389 esta closed
----------------------------------------------
Me mencionaron algo que selinux podria estar bloqueando la conexion al puerto, eh probado varios scripts de iptables y no me funcionan, con esta informacion mas detallada tienen alguna sugerencia?????
EDITADO POR LA MODERACIÓN
He quitado las ip públicas.
Politica por defecto a DROP.. siempre, despues empezas a abrir.
Para hacer la redirección solo necesitas dos reglas, la que modifica la dirección de destino en PREROUTING y la que la acepta EL FORWARD.
Además deberías separar las reglas, una que acepta datagramas NEW y otra que acepta ESTABLISHED
Vas a tener que leer bastante sobre iptables, re recomiendo empezar con el articulo de la wikipedia.
Saludos.
iptables -t nat -A PREROUTING -i eth0 -s 0/0 -p tcp --dport 3389 -j DNAT
--to 192.168.10.241
iptables -A FORWARD -i eth0 -d 192.168.10.1/255.255.255.0 -j ACCEPT
segun estas reglas parece estar bien
te daría un consejo , aun tengo dudas no se cuanto te pueda ayudar esto ... ni que servidor estas direccionando en este caso supondré que es un servidor web
fijate en el /etc/service que el puerto exista una vez hecho esto
iptables -t nat -A PREROUTING -i eth0 -s 0/0 -p tcp --dport 3389 -j DNAT
--to 192.168.10.241:80 ---> // asegura te que el puerto y el servicio a la maquina destino este bien configurado
me gustaría que pongas el resultado de este comando de tu maquina destino
netstat -a | grep "LISTEN" para ver si el puerto esta abierto
Gracias por las respuestas, ultimamente ande algo ocupado y no pude postear los resultados, mas que decir que realice las operaciones que me indicaron sin exito alguno.....
Asi que decidi fusilar mi sistema, acabo de instalar debian lenny, aunque segun lei etch es la estable, pero tenia el instalador de lenny a la mano...
A ver a lo que hasta ahora en esta ultima semana de lecturas, si bien al no configurar aun mi iptables, y teniendo todas las politicas en ACCEPT, significaria que todos mis puertos estan abiertos listos para ser usados...
luego si ejecuto un nmap online u otro scanner de puertos, me muestra 3 o 4 puertos en listen, entre ellos el puerto 22 "SSH", entonces me pregunto:
---->>>¿si todos mis puertos estan abiertos, porque al ejecutar el scanner de puertos solo me muestra esos 3 o 4?...
segun lo que lei, "CREO" que solo se ven LISTEN aquellos puertos que tienen un demonio detras ejecutandose... ¿cierto?
ahora.. que pasa con los demas puertos.. como por ejemplo el que yo quiero 3389, ¿cómo comprobar que estan abiertos?
eh usado telnet localhost 3389, pero no comprendo si el mensaje de error que me lanza es indicio que esta abierto o no..
existe algun comando, o utilitario para esta labor?
de ser asi por favor mencionenmelo y ensenme como usarlo
Gracias..
quizás en el firewall El puerto este abierto .Pero no en tu maquina DMZ windows
este comando de windows services.msc puede ayudar a ver los servicios activos de tu maquina dmz revisa que el ssh este abierto para ejecutar este comando corre a ejecutar services.msc y te aparecerán todos los servicios de tu maquina windows
sobre listen es un indicador que nos dice que ese puerto esta siendo utilizado por un servicio instalado en la maquina objeto
saludos
Pongámonos de acuerdo, un puerto no puede estar "abierto", eso de abrir puertos es un mito... Si tu intentas conectarte a un puerto, enviando un syn, puede pasar que:
Por otro lado, un escaneo completo de puertos puede llevar horas, los scanner generalmente realizan esto solo sobre los puertos bien conocidos, si quieres hacer un escaneo sobre puertos efímeros deberás indicarlo al scanner explicitamente.
Otra cosa, la política a ACCEPT hace que el los puertos no estén bloqueados pero hasta que no hagas la redirección del puerto 3389 en el firewall ese puerto seguirá cerrado.
Claro y preciso...
Gracias Pato Silva, esa explicación fue mas que entendible, con esto ya me pones claro las dudas sobre puertos, pues bien como comente reinstale mi debian y comenzare desde cero, para ver si me sale todo bien ahora...
Primero redireccionare mi puerto, y luego de funcionar, sigo con la instalacion del dhcp y el proxy los cuales ia se como... gracias a todos por atender mis consultas.
yo tengo re direccionado mi puerto del proxy y funciona muy bien , aparte de esto tengo entendido que cuando un puerto esta cerrado en windows o esta filtrado siempre responden con un reset no se si esto es solo un rumor o algo verdadero