Paga Con DineroMail

Dineromail, para enviar y recibir dinero via e-mail

lunes, 17 de octubre de 2011

Configuración de NAT y Firewall para la red privada

Vamos por parte dijo, jack el destripador...
Que significa NAT (Network Address Translation - Traducción de Dirección de Red) es un mecanismo utilizado por routers IP para intercambiar paquetes entre dos redes que se asignan mutuamente direcciones incompatibles. Consiste en convertir en tiempo real las direcciones utilizadas en los paquetes transportados. También es necesario editar los paquetes para permitir la operación de protocolos que incluyen información de direcciones dentro de la conversación del protocolo.

Este es un texto extraído de una definición de utilización...

Su uso más común es permitir utilizar direcciones privadas (definidas en el RFC 1918) para acceder a Internet. Existen rangos de direcciones privadas que pueden usarse libremente y en la cantidad que se quiera dentro de una red privada. Si el número de direcciones privadas es muy grande puede usarse solo una parte de direcciones públicas para salir a Internet desde la red privada. De esta manera simultáneamente sólo pueden salir a Internet con una dirección IP tantos equipos como direcciones públicas se hayan contratado. Esto es necesario debido al progresivo agotamiento de las direcciones IPv4.


Para configurar un NAT para nuestra red privada lo podemos hacer mediante el uso de reglas con el comando iptables además de esto para que la configuración permanezca es necesario hacer un script que se ejecute cada vez que la maquina inicie.

En Internet existen muchos script que realizan la misma funciona con otras reglas mas estrictas, este script puede además tener reglas para el filtrado de paquetes y de esta manera configurar el firewall
#!/bin/sh
echo -n Aplicando Reglas de Firewall...
## FLUSH de reglas
iptables -F
iptables -X
iptables -Z
iptables -t nat -F
## Establecemos politica por defecto
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
## Empezamos a filtrar
## Nota: eth0 es el interfaz conectado al router y eth1 a la LAN
# El localhost se deja (por ejemplo conexiones locales a mysql)
/sbin/iptables -A INPUT -i lo -j ACCEPT
# Al firewall tenemos acceso desde la red local
iptables -A INPUT -s 10.161.0.0/24 -i eth1 -j ACCEPT
## Ahora con regla FORWARD filtramos el acceso de la red local
## al exterior. Como se explica antes, a los paquetes que no van dirigidos al
## propio firewall se les aplican reglas de FORWARD
########## ICMP rules (Internet Control Message Protocol)
iptables -A FORWARD -p ICMP -s 0/0 --icmp-type 0 -j ACCEPT
iptables -A FORWARD -p ICMP -s 0/0 --icmp-type 3 -j ACCEPT
iptables -A FORWARD -p ICMP -s 0/0 --icmp-type 5 -j ACCEPT
iptables -A FORWARD -p ICMP -s 0/0 --icmp-type 11 -j ACCEPT
# Aceptamos que vayan a puertos 80
iptables -A FORWARD -s 10.161.0.0/24 -i eth1 -p tcp --dport 80 -j ACCEPT
# Aceptamos que vayan a puertos https
iptables -A FORWARD -s 10.161.0.0/24 -i eth1 -p tcp --dport 443 -j ACCEPT
#Aceptamos el puerto ssh
iptables -A FORWARD -s 10.161.0.0/24 -i eth1 -p tcp --dport 22 -j ACCEPT
# Aceptamos que consulten los DNS
iptables -A FORWARD -s 10.161.0.0/24 -i eth1 -p tcp --dport 53 -j ACCEPT
iptables -A FORWARD -s 10.161.0.0/24 -i eth1 -p udp --dport 53 -j ACCEPT
# Y denegamos el resto. Si se necesita alguno, ya avisaran
iptables -A FORWARD -s 10.161.0.0/24 -i eth1 -j DROP
# Ahora hacemos enmascaramiento de la red local
# y activamos el BIT DE FORWARDING (imprescindible!!!!!)
iptables -t nat -A POSTROUTING -s 10.161.0.0/24 -o eth0 -j MASQUERADE
# Con esto permitimos hacer forward de paquetes en el firewall, o sea
# que otras máquinas puedan salir a traves del firewall.
echo 1 > /proc/sys/net/ipv4/ip_forward
## Y ahora cerramos los accesos indeseados del exterior:
# Nota: 0.0.0.0/0 significa: cualquier red
# Cerramos el rango de puerto bien conocido
iptables -A INPUT -s 0.0.0.0/0 -p tcp --dport 1:1024 -j DROP
iptables -A INPUT -s 0.0.0.0/0 -p udp --dport 1:1024 -j DROP
# Cerramos un puerto de gestión: webmin
iptables -A INPUT -s 0.0.0.0/0 -p tcp --dport 10000 -j DROP
echo " OK . Verifique que lo que se aplica con: iptables -L -n"
# Fin del script
Para poder hacer que nuestro script se ejecute cada vez que nuestra maquina se prenda, debemos de arealizar un enlace simbolido de /etc/init.d/rc.iptables a /etc/rc3.d/S15iptables
Esta es la manera de hacerlo...

ln -s /etc/init.d/rc.iptables /etc/rc3.d/S15iptables 
 Espero que les sirva
Saludos!!

Menéame: publicadas -tecnología-