En el post anterior vimos la configuración de IPTables para que funcione como un Firewall. Ahora podemos ver como crear esos scripts para que se ejecuten las reglas automáticamente cuando se inicie el sistema, y también como podemos eliminar o detener esas reglas por un momento.
Antes de hacer el script y mostrarles como va quedando, hablemos un poco de NAT y del concepto de lo que queremos hacer con este equipo.
NAT y Contexto del ejemplo.
Cuando hablamos de NAT, podemos confundir esto con enrutamiento, y es que ambos se encargan de conectar dos redes diferentes entre sí. La diferencia realmente radica es que el enrutamiento se aplica para pasar de una red local a otra y esta otra red puede conectarse a un router y salir a Internet.
Mientras que, cuando hablamos de NAT, hablamos de enrutar paquetes de una red local o privada a una red pública o Internet. Esto lo hace enmascarando los paquetes poniéndole la ip pública con la que sale a Internet. Es decir, que no necesitamos un router, porque la ip pública la tiene directamente el ordenador con GNU/Linux.

Trabajaremos esto con la consigna de que estamos usando nuestro Linux como un router/firewall para salir a Internet desde una red local. Pero aquí pueden aparecer dos escenarios.
En este caso, entre el router y nuestro Linux habría una red, y entre el Linux y la red local habría otra red diferente. Esto significa que nuestro router no tendría que hacer NAT como tal, con un simple enrutamiento de tráfico como lo explique en post anterior estaría bien.
Esto significa que nuestro Linux debe hacer NAT para que los paquetes puedan llegar a Internet.
Para efectos de este pequeño laboratorio entonces, diremos que nuestro Linux recibe directamente una ip pública y así poder probar los efectos de la NAT.
Para hacer NAT usamos entonces la sintaxis
iptables -t nat -A POSTROUTING -O eth1 -j MASQUERADE
Donde eth1 es la interfaz por donde recibimos la ip pública, osea por donde salimos a Internet.
se usa MASQUERADE cuando la ip es pública pero puede variar con el tiempo (dinámica). En caso contrario podemos usar SNAT –to-source ip
Creando script iptables
Supongamos entonces que: 172.26.0.0 es nuestra red local y 81.2.3.4 es la ip pública con la que salimos a Internet. (es una ip estática). Tengo las interfaces eth0 (Red local)
eth1 (Red pública).
Consiste básicamente en crear un script que pueda ser llamado desde /etc/init.d/cortafuegos (por ejemplo). y desde este script poder iniciar, detener o consultar el estado de nuestra configuración, tal y como hacemos con cualquier demonio del sistema.
Supongamos que mis reglas IPTABLES SON:
#! /bin/bash
# Firewall de mi hogar.
# Nombre de archivo /etc/cortafuegos_on
# By Jlcmux Twitter: @Jlcmux
#
# Política básica.
iptables -P INPOUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
#
#NAT para compartir Internet desde eth0 a eth1
iptables -t nat -A POSTROUTING -O eth1 -j SNAT --to-source 81.2.3.4
#
# Permitir conexiones entrantes iniciadas por mi
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
#
# Trafico saliente autorizado
iptables -A FORWARD -i eth0 -o eth1 -p tcp --dport 80 -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -p tcp --dport 443 -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -p udp --dport 53 -j ACCEPT
No olvidemos dar permisos de ejecución
Explicación:
El script básicamente hace lo siguiente:
Si quisiéramos usar nuestro equipo para navegar deberíamos repetir las lineas y cambiar FORWARD por INPUT o OUTPUT según el caso.
Script anulación.
Ahora vamos a crear un script que anule todo lo anterior y deje el equipo limpio de todo esto. (Para efectos de pruebas o simplemente queremos apagar el firewall).
#! /bin/bash
# Firewall de mi hogar.
# Nombre de archivo /etc/cortafuegos_off
# By Jlcmux Twitter: @Jlcmux
#
#Borrando Reglas
iptables -F
#
#Aplicando politicas por defecto (todo tráfico aceptado)
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
Automatizando.
Ahora debemos crear el script dentro de /etc/init.d/ y el servicio se inicie automáticamente y lo podamos gestionar de una manera más cómoda.
#! /bin/bash
# Firewall de mi hogar.
# Nombre de archivo /etc/init.d/cortafuegos
# By Jlcmux Twitter: @Jlcmux
case $1 in
start)
/etc/cortafuegos_on
;;
stop)
/etc/cortafuegos_off
;;
status)
iptables -L
;;
*)
echo "Sintaxis erronea. Valido = /etc/init.d/cortafuegos start|stop|status
;;
esac
Explicación:
Este último script lo ponemos en /etc/init.d/ con el nombre cortafuegos. Entonces si queremos gestionar el firewall podemos usar el comando /etc/init.d/cortafuegos start. De la misma forma lo podemos parar o ver el estado.
Ahora vamos a editar el archivo /etc/rc.local y ponemos algo como: /etc/init.d/cortafuegos start para que se inicie con el sistema.
Pues bien. Este es la segunda parte. Espero que aporte algo a todos ustedes. En la próxima vemos Proxy e IDS.
The post Asegurando tu red con Iptables – Proxy – NAT – IDS: PARTE 2 appeared first on Desde Linux.

Continúar leyendo...
Antes de hacer el script y mostrarles como va quedando, hablemos un poco de NAT y del concepto de lo que queremos hacer con este equipo.
NAT y Contexto del ejemplo.
Cuando hablamos de NAT, podemos confundir esto con enrutamiento, y es que ambos se encargan de conectar dos redes diferentes entre sí. La diferencia realmente radica es que el enrutamiento se aplica para pasar de una red local a otra y esta otra red puede conectarse a un router y salir a Internet.
Mientras que, cuando hablamos de NAT, hablamos de enrutar paquetes de una red local o privada a una red pública o Internet. Esto lo hace enmascarando los paquetes poniéndole la ip pública con la que sale a Internet. Es decir, que no necesitamos un router, porque la ip pública la tiene directamente el ordenador con GNU/Linux.

Trabajaremos esto con la consigna de que estamos usando nuestro Linux como un router/firewall para salir a Internet desde una red local. Pero aquí pueden aparecer dos escenarios.
- Que nuestro Linux esté entre el router del proveedor de servicio y la red local.
En este caso, entre el router y nuestro Linux habría una red, y entre el Linux y la red local habría otra red diferente. Esto significa que nuestro router no tendría que hacer NAT como tal, con un simple enrutamiento de tráfico como lo explique en post anterior estaría bien.
- Que nuestro Linux tenga una interfaz conectada a la red local y por la otra interfaz reciba directamente una ip pública con la cual navega.
Esto significa que nuestro Linux debe hacer NAT para que los paquetes puedan llegar a Internet.
Para efectos de este pequeño laboratorio entonces, diremos que nuestro Linux recibe directamente una ip pública y así poder probar los efectos de la NAT.
Para hacer NAT usamos entonces la sintaxis
iptables -t nat -A POSTROUTING -O eth1 -j MASQUERADE
Donde eth1 es la interfaz por donde recibimos la ip pública, osea por donde salimos a Internet.
se usa MASQUERADE cuando la ip es pública pero puede variar con el tiempo (dinámica). En caso contrario podemos usar SNAT –to-source ip
Creando script iptables
Supongamos entonces que: 172.26.0.0 es nuestra red local y 81.2.3.4 es la ip pública con la que salimos a Internet. (es una ip estática). Tengo las interfaces eth0 (Red local)
eth1 (Red pública).
Consiste básicamente en crear un script que pueda ser llamado desde /etc/init.d/cortafuegos (por ejemplo). y desde este script poder iniciar, detener o consultar el estado de nuestra configuración, tal y como hacemos con cualquier demonio del sistema.
Supongamos que mis reglas IPTABLES SON:
#! /bin/bash
# Firewall de mi hogar.
# Nombre de archivo /etc/cortafuegos_on
# By Jlcmux Twitter: @Jlcmux
#
# Política básica.
iptables -P INPOUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
#
#NAT para compartir Internet desde eth0 a eth1
iptables -t nat -A POSTROUTING -O eth1 -j SNAT --to-source 81.2.3.4
#
# Permitir conexiones entrantes iniciadas por mi
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
#
# Trafico saliente autorizado
iptables -A FORWARD -i eth0 -o eth1 -p tcp --dport 80 -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -p tcp --dport 443 -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -p udp --dport 53 -j ACCEPT
No olvidemos dar permisos de ejecución
Explicación:
El script básicamente hace lo siguiente:
- Primero restringe toda la navegación, conexiones y tráfico. (Políticas básicas de Firewall)
- Luego crea la NAT con el destino eth1. indicando le que tenemos una ip pública estática “81.2.3.4”
- Abre los puertos necesarios para recibir los paquetes de conexiones iniciadas por mi.
- Acepta el tráfico saliente de HTTP, HTTPS y DNS.
Si quisiéramos usar nuestro equipo para navegar deberíamos repetir las lineas y cambiar FORWARD por INPUT o OUTPUT según el caso.
Script anulación.
Ahora vamos a crear un script que anule todo lo anterior y deje el equipo limpio de todo esto. (Para efectos de pruebas o simplemente queremos apagar el firewall).
#! /bin/bash
# Firewall de mi hogar.
# Nombre de archivo /etc/cortafuegos_off
# By Jlcmux Twitter: @Jlcmux
#
#Borrando Reglas
iptables -F
#
#Aplicando politicas por defecto (todo tráfico aceptado)
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
Automatizando.
Ahora debemos crear el script dentro de /etc/init.d/ y el servicio se inicie automáticamente y lo podamos gestionar de una manera más cómoda.
#! /bin/bash
# Firewall de mi hogar.
# Nombre de archivo /etc/init.d/cortafuegos
# By Jlcmux Twitter: @Jlcmux
case $1 in
start)
/etc/cortafuegos_on
;;
stop)
/etc/cortafuegos_off
;;
status)
iptables -L
;;
*)
echo "Sintaxis erronea. Valido = /etc/init.d/cortafuegos start|stop|status
;;
esac
Explicación:
Este último script lo ponemos en /etc/init.d/ con el nombre cortafuegos. Entonces si queremos gestionar el firewall podemos usar el comando /etc/init.d/cortafuegos start. De la misma forma lo podemos parar o ver el estado.
Ahora vamos a editar el archivo /etc/rc.local y ponemos algo como: /etc/init.d/cortafuegos start para que se inicie con el sistema.
Pues bien. Este es la segunda parte. Espero que aporte algo a todos ustedes. En la próxima vemos Proxy e IDS.
The post Asegurando tu red con Iptables – Proxy – NAT – IDS: PARTE 2 appeared first on Desde Linux.
Continúar leyendo...