Foros del Web » Administración de Sistemas » Unix / Linux »

IpTables Headache

Estas en el tema de IpTables Headache en el foro de Unix / Linux en Foros del Web. Salu2 Linuxeros, bueno les cuento que estoy intentando implementar nat y un firewall con iptables. El entorno es el siguiente, tengo un computador con Linux ...
  #1 (permalink)  
Antiguo 16/01/2004, 08:03
Avatar de PpKamiK  
Fecha de Ingreso: marzo-2002
Ubicación: Frente a mi compiu..
Mensajes: 72
Antigüedad: 22 años, 2 meses
Puntos: 0
Pregunta IpTables Headache

Salu2 Linuxeros, bueno les cuento que estoy intentando implementar nat y un firewall con iptables.

El entorno es el siguiente, tengo un computador con Linux Slackware con dos tarjetas de red, eth0 para internet (ip estatica) y eth1 para LAN.

-Lo que quiero es que todos los de la LAN tengan salida a internet, salvo dos ips.
-Impedir el trafico desde internet hacia la LAN.
-Permitir las peticiones al puerto 80, tanto interna como externamente, pero redireccionando el trafico a un pc en la LAN.

Me funciona hasta el momento solo el nat, y he luchado para hacer la redireccion y no lo he logrado. Pasteo lo que tengo:


#interfaz usada eth0
# Habilito el NAT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -i eth1 -j ACCEPT
# Dejo pasar los paquetes ICMP
iptables -A INPUT -i eth0 -p ICMP -j ACCEPT
# Permito conexiones al puerto 80 (HTTP)
iptables -A INPUT -i eth0 -p TCP --dport 80 -m state --state NEW -j ACCEPT --> no funciona
iptables -A INPUT -i eth1 -p TCP --dport 80 -m state --state NEW -j ACCEPT --> no funciona
# Acepto paquetes de conexiones ya establecidas
iptables -A INPUT -p TCP -m state --state RELATED -j ACCEPT
# Rechazamos paquetes de conexiones nuevas
iptables -A INPUT -i eth0 -m state --state NEW,INVALID -j DROP
# Rechazamos paquetes de forwarding de conexiones no establecidas
iptables -A FORWARD -i eth0 -m state --state NEW,INVALID -j DROP

## Redirección a Puertos en Pc Internos ##

#Agregar la regla de Destination NAT (DNAT)

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 192.168.0.60:80 --> no me resulta.

Bueno, les reugo que me den una mano, ya que estoy atorado.
__________________
Salu2..
=========================
Usuario Registrado Linux #294376
==============
  #2 (permalink)  
Antiguo 16/01/2004, 09:24
Avatar de gomo  
Fecha de Ingreso: mayo-2002
Ubicación: [email protected]
Mensajes: 906
Antigüedad: 22 años
Puntos: 0
A ver, te he corregido un poco el script para corregir algunas fallas lógicas que tenía (más que nada en el orden de las reglas). Para que todas las reglas de NAT funcionen debes habilitar ip_forward así:
Código:
# echo 1 > /proc/sys/net/ipv4/ip_forward
Y por último, para que los paquetes del servidor al que haces DNAT, debes establecer la máquina del firewall como gateway por defecto de la que corre el servidor web (esto es esencial ya que sino los paquetes de respuesta no llegan a destino).
Código:
#interfaz usada eth0

# Esta se pone arriba de todo para evitar pasar por todas las reglas
# Se agrega "ESTABLISHED" también, por lo general
# Acepto paquetes de conexiones ya establecidas
iptables -A INPUT -p TCP -m state --state ESTABLISHED,RELATED -j ACCEPT

# Esto está bien siempre y cuando eth0 sea la de internet
# Habilito el NAT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -i eth1 -j ACCEPT

# Agregar la regla de Destination NAT (DNAT)
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 \
-j DNAT --to 192.168.0.60:80 --> no me resulta.

# Dejo pasar los paquetes ICMP
iptables -A INPUT -i eth0 -p ICMP -j ACCEPT
# Permito conexiones al puerto 80 (HTTP)

# porque es que esto "no funciona"? Te da algun error?
iptables -A INPUT -i eth0 -p TCP --dport 80 -m state --state NEW \
-j ACCEPT --> no funciona
iptables -A INPUT -i eth1 -p TCP --dport 80 -m state --state NEW \
-j ACCEPT --> no funciona

# No es necesario rechazar los paquetes de forma tan específica, simplemente
# pones una regla aquí que DROPee todo, al fin y al cabo las reglas de mas
# arriba ya han hecho que se acepten los paquetes que querías,
# y el flujo es lineal. Esto se conoce como regla "catch-all".
iptables -A INPUT -p all -j DROP
ptables -A FORWARD -p all -j DROP
Disclaimer : esto lo corregí en la ventana de edición de mensajes de modo que se me pueden haber pasado varias cositas, no garantizo nada :)

Saludos ;)
__________________
  #3 (permalink)  
Antiguo 16/01/2004, 14:58
Avatar de PpKamiK  
Fecha de Ingreso: marzo-2002
Ubicación: Frente a mi compiu..
Mensajes: 72
Antigüedad: 22 años, 2 meses
Puntos: 0
Gracias por la ayuda, apenas lo haga funcionar pasteo el resultado..
__________________
Salu2..
=========================
Usuario Registrado Linux #294376
==============
  #4 (permalink)  
Antiguo 16/01/2004, 15:26
Avatar de PpKamiK  
Fecha de Ingreso: marzo-2002
Ubicación: Frente a mi compiu..
Mensajes: 72
Antigüedad: 22 años, 2 meses
Puntos: 0
Tengo una duda, quiero que esta regla me acepte solo un rango de ip (en estos momentos me funciona solo para una) ahora yo quiero que funcione para las ips desde la 200.90.242.150 a la 200.90.242.250
como lo hago?

iptables -t nat -A PREROUTING -s 200.90.242.216 -i eth0 -p tcp --dport 3389 \
-j DNAT --to 192.168.0.60:3389
__________________
Salu2..
=========================
Usuario Registrado Linux #294376
==============
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:20.