Home Linux Tutorial IPTABLES III – Firewall simple entre redes

Tutorial IPTABLES III – Firewall simple entre redes

by José Luis Sánchez Borque
firewall

Diseñaremos un ejemplo simple de firewall entre dos redes. Ambas redes tienen servicios que deben estar habilitados para la otra red.

Editaremos el archivo con las reglas del firewall. Por coherencia lo guardamos en /etc/fw

mkdir /etc/fw
vi /etc/fw/rules.fw

 

# Definimos variables para hacer más flexible el diseño del firewall

ZONA1=192.168.0.0/24
SRV1=192.168.0.100
ZONA2=10.0.0.0/8
SRV2=10.0.0.100
WebPort=80
RdpPort=3389
SshPort=22
DnsPort=53
WebmPort=10000
McPC10=10:10:10:10:10:10

# Inicializamos el Firewall
# Borramos cualquier regla de las cadenas FILTER,NAT y MANGLE (-F)
# Borramos cualquier regla de las cadenas de usuario (-X)
# Ponemos a cero todos los contadores de paquetes y bytes de todas las cadenas (-Z)

iptables –F
iptables –X
iptables –Z

# Política por defecto DROP

iptables –P INPUT DROP
iptables –P OUTPUT DROP
iptables –P FORWARD DROP

# Permitimos conectividad con blucle local ( 127.0.0.1 )

iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

Tendremos  que dar permiso de ejecución al archivo rules.fw

chmod +x /etc/fw/rules.fw

Consejo: ajustar los permisos en entornos reales para que solo root pueda ejecutar el archivo.

Podemos repasar los permisos de forma resumida en el enlace siguiente: Permisos de Linux

Para que pueda ejecutarse al arrancar el sistema, un método simple es añadirlo al archivo /etc/rc.local. Lo podemos editar con vi, nano, etc.

#!/bin/bash
# rc.local

# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.

# In order to enable or disable this script just change the execution
# bits.

# By default this script does nothing.

/etc/fw/rules.fw

exit 0

Enfocamos la solución como ejemplo didáctico, es decir prevalece la claridad sobre la complejidad. Así que añadiremos las siguientes líneas a lo diseñado anteriormente.

# Tramas de Zona 1 a Zona 2

iptables -A FORWARD -i eth0  -s $ZONA1 -p tcp --dport:$WebPort -d $SRV2 -j ACCEPT
iptables -A FORWARD -i eth1  -s $SRV2  -p tcp --sport:$WebPort -d $ZONA1 -j ACCEPT
iptables -A FORWARD -i eth0  -s $ZONA1 -p tcp --dport:$RdpPort -d $SRV2 -j ACCEPT
iptables -A FORWARD -i eth1  -s $SRV2  -p tcp --sport:$RdpPort -d $ZONA1 -j ACCEPT
iptables -A FORWARD -i eth0  -s $ZONA1 -p tcp --dport:$SshPort -d $SRV2 -j ACCEPT
iptables -A FORWARD -i eth1  -s $SRV2  -p tcp --sport:$SshPort -d $ZONA1 -j ACCEPT

# Tramas de Zona 2 a Zona 1
iptables -A FORWARD -i eth1  -s $ZONA2 -p tcp --dport:$WebPort -d $SRV1 -j ACCEPT
iptables -A FORWARD -i eth0  -s $SRV1  -p tcp --sport:$WebPort -d $ZONA2 -j ACCEPT
iptables -A FORWARD -i eth1  -s $ZONA2 -p udp --dport:$DnsPort -d $SRV1 -j ACCEPT
iptables -A FORWARD -i eth0  -s $SRV1  -p udp --sport:$DnsPort -d $ZONA2 -j ACCEPT
iptables -A FORWARD -i eth1  -s $ZONA2 -p tcp --dport:$SshPort -d $SRV1 -j ACCEPT
iptables -A FORWARD -i eth0  -s $SRV1  -p tcp --sport:$SshPort -d $ZONA2 -j ACCEPT

# Vamos a por nota... Queremos controlar el acceso desde PC10 para
# administrar el router tanto por ssh, como por Webmin (10000/tcp)

iptables -A INPUT -i eth0 -p tcp –dport:$SshPort -m mac --mac-source $McPC10 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp –dport:$WebmPort -m mac --mac-source $McPC10 -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp –sport:$WebmPort  -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp –sport:$SshPort  -j ACCEPT

Si, que se que se puede mejorar con estados, resumiendo hasta lo infinitesimal, pero he priorizado de momento la claridad…

En el próximo capítulo…. NAT, POSTROUTING y PREROUTING…

You may also like

Leave a Comment