Hola listeros,

De nuevo os traigo mi duda y os adjunto dos archivos: el dibujo de mi
red y el archivo sh de configuración.

El problema mas grave que tengo es que no consigo que el equipo de la
DMZ pueda acceder a los archivos compartidos de un ordenador de la red
local protegida.

El otro problema es el balanceo de carga... no consigo que me funcione
desde la red local. Es decir: desde el firewall me hace balanceo y
luego si me pongo en cualquier ordenador de la red local no tengo
acceso a internet. Si quito el balanceo y pongo que acceda siempre por
un gateway no hay problema.

Una vez mirado en muchiiiiisimos comos y habiéndome vuelto loco de
tanto buscar.... ¿alguna ayudita? Muchas gracias y saludos

--
Raúl Alonso
[EMAIL PROTECTED]

Attachment: esquema_red.gif
Description: GIF image

#!/bin/sh
## Script para balanceo de dos conexiones a internet y una red local, además de 
configuración de Firewall
## Modificado por Raúl Alonso para Ediciones Peldaño
## Para activar el script copiar a /etc/init.d
## Despues usar este comando: update-rc.d fwbalanceo.sh defaults 
## Para eliminar el script usar:  update-rc.d -f fwbalanceo.sh remove

## Variables de nuestra red
IPLOCAL="192.168.0.21"
IPINTERNET1="192.168.1.2"
IPINTERNET2="192.168.2.2"
IPDMZ="192.168.2.3"
GATEWAY1="192.168.1.1"
GATEWAY2="192.168.2.1"
INTERNET1="eth1" # Ono
INTERNET2="eth2" # Telefonica
REDLOCAL="eth0" # Red local

## SCRIPT PARA DAR CONEXION A INTERNET MEDIANTE BALANCEO DE CARGA ##

echo "Limpiando tablas de ruteo anteriores..."

# Limpio las tablas de ruteo
ip route flush cache
ip route flush default
ip route flush table 1
ip route flush table 2

# Reinicio lo
ip addr flush lo
ip link set lo down
ip addr add 127.0.0.1/8 dev lo
ip link set lo up

# Reinicio eth0, LAN, lo mismo esto para cada placa de red
ip addr flush eth0
ip link set eth0 down
ip addr add 192.168.0.21/24 dev eth0
ip link set eth0 up

# Reinicio eth1
ip addr flush eth1
ip link set eth1 down
ip addr add 192.168.1.2/24 dev eth1
ip link set eth1 up

# Reinicio eth2
ip addr flush eth2
ip link set eth2 down
ip addr add 192.168.2.2/24 dev eth2
ip link set eth2 up

echo "Creando tablas de ruteo..."

# Identifico redes en sus eth
ip route add 192.168.0.0/24 dev $REDLOCAL src $IPLOCAL
ip route add 192.168.1.0/24 dev $INTERNET1 src $IPINTERNET1
ip route add 192.168.2.0/24 dev $INTERNET2 src $IPINTERNET2

# Creo tablas

ip route show table main | grep -Ev ^default | while read ROUTE ; do ip route 
add table 1 $ROUTE ; done
ip route show table main | grep -Ev ^default | while read ROUTE ; do ip route 
add table 2 $ROUTE ; done

# Añado puertas de enlace en las tablas

ip route add default via $GATEWAY1 table 1
ip route add default via $GATEWAY2 table 2

# Configuro las reglas de ruteo
ip rule add from $IPINTERNET1 table 1
ip rule add from $IPINTERNET2 table 2

echo "Tablas de ruteo creadas."

# Balanceo de carga (2 gateways)
ip route add default scope global equalize nexthop via $GATEWAY1 dev $INTERNET1 
weight 1 \
nexthop via $GATEWAY2 dev $INTERNET2 weight 1

# Un solo gateway
# ip route add default via $GATEWAY1

# desactivo el filtrado de paquetes
echo "0" > /proc/sys/net/ipv4/conf/eth0/rp_filter
echo "0" > /proc/sys/net/ipv4/conf/eth1/rp_filter
echo "0" > /proc/sys/net/ipv4/conf/eth2/rp_filter

# 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

echo "Carga balanceada."

## fin SCRIPT ##


## SCRIPT FIREWALL ##

echo "Limpiando reglas de firewall anteriores..."

## FLUSH de reglas
iptables -F
iptables -X
iptables -Z
iptables -t nat -F

echo "Creando política de firewall..."

# 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

echo "Política de firewall creada."

# Permito FTP PASV
modprobe ip_conntrack
modprobe ip_conntrack_ftp ports:21,20
modprobe ip_nat_ftp ports:21,20

echo "Creando filtros..."

# 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 192.168.0.0/24 -i $REDLOCAL -j ACCEPT

echo "Configuramos accesos desde dentro hacia fuera..."

# DENEGAMOS ACCESOS
iptables -A FORWARD -s 192.168.0.20 -i $REDLOCAL -p tcp --dport 80 -j DROP 
#Eneko
iptables -A FORWARD -d 64.4.32.7 -j REJECT # HOTMAIL
iptables -A FORWARD -d 207.46.1.0/24 -j REJECT # MESSENGER
iptables -A FORWARD -d 64.4.15.61 -j REJECT # MESSENGER
iptables -A FORWARD -d 64.4.13.0/24 -j REJECT # MESSENGER
iptables -A FORWARD -d 213.199.148.191 -j REJECT # MESSENGER
iptables -A FORWARD -p TCP --dport 1863 -j REJECT # PUERTO MSN

# DAMOS ACCESO DESDE LA LAN AL EXTERIOR
# HTTP
iptables -A FORWARD -s 192.168.0.0/24 -i $REDLOCAL -p tcp --dport 80 -j ACCEPT
# HTTPS
iptables -A FORWARD -s 192.168.0.0/24 -i $REDLOCAL -p tcp --dport 443 -j ACCEPT
# EMAIL
iptables -A FORWARD -s 192.168.0.0/24 -i $REDLOCAL -p tcp --dport 110 -j ACCEPT
iptables -A FORWARD -s 192.168.0.0/24 -i $REDLOCAL -p tcp --dport 25 -j ACCEPT
# DNS
iptables -A FORWARD -s 192.168.0.0/24 -i $REDLOCAL -p tcp --dport 53 -j ACCEPT
iptables -A FORWARD -s 192.168.0.0/24 -i $REDLOCAL -p udp --dport 53 -j ACCEPT
# PUERTO 8181
iptables -A FORWARD -s 192.168.0.0/24 -i $REDLOCAL -p tcp --dport 8181 -j ACCEPT
# FTP
iptables -A FORWARD -s 192.168.0.0/24 -i $REDLOCAL -p tcp --dport 21 -j ACCEPT 
iptables -A FORWARD -s 192.168.0.0/24 -i $REDLOCAL -p tcp --dport 20 -j ACCEPT

# PERMITIDO PARA INFORMATICA
iptables -A FORWARD -s 192.168.0.2 -i $REDLOCAL -j ACCEPT 
iptables -A FORWARD -s 192.168.0.65 -i $REDLOCAL -j ACCEPT
iptables -A FORWARD -s 192.168.0.1 -i $REDLOCAL -p tcp --dport 139 -j ACCEPT

# Y denegamos el resto. Si se necesita alguno, ya avisaran
iptables -A FORWARD -s 192.168.0.0/24 -i $REDLOCAL -j DROP

# Enmascaramiento de rutas
echo "Enmascarando rutas..."
# iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o $INTERNET2 -j SNAT 
--to-source $GATEWAY2
# iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o $INTERNET1 -j SNAT 
--to-source $GATEWAY1
# iptables -t nat -A POSTROUTING -s 192.168.0.1 -o eth2 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o $INTERNET2 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o $INTERNET1 -j MASQUERADE
echo "Rutas enmascaradas."

## Permitimos el paso de la DMZ acceder al intercambio de archivos con 
192.168.0.1
iptables -A FORWARD -s 192.168.0.1 -d $IPDMZ -p tcp --sport 1024:65535 --dport 
139 -j ACCEPT
iptables -A FORWARD -s $IPDMZ -d 192.168.0.1 -p tcp --sport 139 --dport 
1024:65535 -j ACCEPT

## Permitimos abrir el VNC server de la DMZ desde la IP 192.168.0.2
iptables -A FORWARD -s 192.168.0.2 -d $IPDMZ -p tcp --sport 1024:65535 --dport 
5900 -j ACCEPT
iptables -A FORWARD -s $IPDMZ -d 192.168.0.2 -p tcp --sport 5900 --dport 
1024:65535 -j ACCEPT

# Cerramos el acceso de la DMZ a la LAN
iptables -A FORWARD -s $IPDMZ -d 192.168.0.0/24 -j DROP

## Cerramos el acceso de la DMZ al propio firewall
iptables -A INPUT -s $IPDMZ -i $REDLOCAL -j DROP

# Y ahora cerramos los accesos indeseados del exterior:

echo "Cerramos los accesos desde fuera hacia adentro..."

# Cerramos el rango de puerto bien conocido
iptables -A INPUT -i $INTERNET1 -s 0.0.0.0/0 -p tcp --dport 1:1024 -j DROP
iptables -A INPUT -i $INTERNET1 -s 0.0.0.0/0 -p udp --dport 1:1024 -j DROP
iptables -A INPUT -i $INTERNET2 -s 0.0.0.0/0 -p tcp --dport 1:1024 -j DROP
iptables -A INPUT -i $INTERNET2 -s 0.0.0.0/0 -p udp --dport 1:1024 -j DROP

# Cerramos el puerto de gestión: webmin
iptables -A INPUT -i $INTERNET1 -s 0.0.0.0/0 -p tcp --dport 10000 -j DROP
iptables -A INPUT -i $INTERNET2 -s 0.0.0.0/0 -p tcp --dport 10000 -j DROP

## fin SCRIPT ##



Reply via email to