31 enero 2007

Redireccionamiento de puertos y direcciones

Una vez creado el ruteador a partir de un fichero de texto con unas cuantas reglas iptables vamos acrear otro que añada nuevas funciones de administracion a nuestra red o a darle mas rendimiento al fichero anterior introduciendo alguna regla mas.
En este ejemplo crearemos un fichero nuevo independiente que nos dara la utilidad añadida de un firewall de red al poder filtrar el contenido que recivimos basandonos en el puerto por el que llega ese contenido a nosotros.
Un primer ejemplo del script util para la redireccion de puertos en un servidor (en este caso servidor web y de correo):
En este ejemplo la maquina que corre el script es la 192.168.5.1, el servidor de correo es la 192.168.5.5 y el servidor web sera el 192.168.5.10

#!/bin/bash

#Esta linea habilita las reglas iptables para la traduccion de direcciones. Por lo normal estan habilitadas, para quien no, que le quite el comentario "#".
#/sbin/modprobe iptable_nat

#Esta linea habilita las reglas iptables para el reenvio de paquetes. Por lo normal estan habilitadas, para quien no, que le quite el comentario "#".
#echo 1 > /proc/sys/net/ipv4/ip_forward

#Limpia las tablas (ojo! este paso SOLO si es el primer script referente a iptables que ejecutamos al iniciar el sistema ya que si lo hacemos despues de otros anulara el efecto de los anteriores.


/sbin/iptables -F
/sbin/iptables -t nat -F
/sbin/iptables -t mangle -F

/sbin/iptables -t nat -A POSTROUTING -j MASQUERADE # Enmascara todo el trafico de la red sin importar hacia la tarjeta de red a la que se dirija

#Redireccion simple de un puerto 10001 al 10000
iptables -t nat -I PREROUTING -i eth0 -p tcp --dport 10001 -j DNAT --to-destination 192.168.5.1:10000

# Redireccion del puerto de correo electronico POP3 al puerto 110 de una maquina que no tiene que ser la que ejecuta estas normas pero que pertenece a nuestra red.
iptables -t nat -I PREROUTING -i eth0 -p tcp --dport 110 -j DNAT --to-destination 192.168.5.5:110

#Similar pero en este caso redirecciona el contenido web del puerto 80 que llega a nuestra maquina hacia otra de la misma red y hacia el mismo puerto.
iptables -t nat -I PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination 192.168.5.10:80


#Acepta el trafico hacia los puertos 10000, 110 y 80 del 192.168.5.1 y el los distribuye.
iptables -I FORWARD -d 192.168.5.1 -p tcp --dport 110 -j ACCEPT
iptables -I FORWARD -d 192.168.5.1 -p tcp --dport 10000 -j ACCEPT
iptables -I FORWARD -d 192.168.5.1 -p tcp --dport 80 -j ACCEPT
iptables -I FORWARD -s 192.168.5.1 -j ACCEPT #Acepta el trafico de 192.168.5.1 hacia todos los lados

iptables -A FORWARD -j DROP

#deniega el acceso al resto de los puertos y evita cualquier intrusion de contenidos no deseados dirigidos por otro cualquier puerto. Esto evita que los posibles ataque intencionados se dirijan a nuestros servidores de correo y web ya que primero se rechazan los paquetes no deseados y despues se envia a los equipos de la red la informacion que llegue para ellos.


Y para terminar y poder hacer una redireccion completa tambien una orden para evitar que desde dentro de la red se acceda a contenido privado o simplemente a paginas web no deseadas por los administradores:

#Por ejemplo redireccion de yahoo.es a google, asi al intentar acceder a yahoo.es desde algun equipo enrutado por nosotros no vera yahoo sino google.

iptables -t nat -A PREROUTING -d www.yahoo.es -j DNAT --to 66.102.9.147


#Otro ejemplo es evitar el acceso de ciertas maquinas a ciertas direcciones mandandoles a otro lugar. En este caso la maquina con IP 192.168.5.23 no accedera a yahoo.

iptables -t nat -A PREROUTING -s 192.168.5.23 -d www.yahoo.es -j DNAT --to 66.102.9.147

# y por último la denegacion de acceso por red a un equipo determinado.

iptables -t nat -A PREROUTING -d 192.168.5.100 -j DNAT --to 66.102.9.147


Buena suerte gente!

No hay comentarios: