Asegurando tu red con Iptables – Proxy – NAT – IDS: PARTE 1

Este post intenta esclarecer un poco de como funcionan las redes y como convertir nuestro equipo Linux en un Router que nos asegure un poco mรกs nuestra red, ya sea de hogar e incluso empresarial.ย  Asรญ que vamos al tema:

Este contenido es basado en el libro ยซLinux โ€“ Administraciรณn del sistema y explotaciรณn de los servicios de redยป โ€“ Sรฉbastien BOBILLIER

Enrutamiento y filtrado

Para hablar y entender sobre el enrutamiento podemos definir primero ยฟcual es la funciรณn del router?. Para ello podemos decir que un router, ademรกs de crear una red y permitir conexiรณn con otros equipos (sabiendo que esto lo podemos hacer con un AP, Switch, Hub u otros) tiene la capacidad de conectar dos redes diferentes entre si.

router

Como lo podemos ver en la imagen, existe una red local ยซ10.0.1.0ยป que es creada por el router, y llega a una de sus dos interfaces.ย  Luego el router en su otra interfaz, tiene otra red, con su IP pรบblica con la cual puede conectar a Internet. La funciรณn de enrutamiento bรกsicamente es servir de intermediario entre estas dos redes para que puedan comunicarse.

Linux como router.

De forma natural, el Kernel de Linux ya tiene la capacidad de hacer ยซforwardingยป,ย  pero por defecto viene desactivado, entonces si queremos que nuestro linux pueda hacer este trabajo debemos ir al archivo.

/proc/sys/net/ipv4/ip_forward

Allรญ encontraremos que es un archivo que lo รบnico que contiene es un cero ยซ0ยป, lo que debemos hacer es cambiarlo por un uno ยซ1ยป para activar este comportamiento. Esto por desgracia se borra cuando reiniciemos el equipo, para dejarlo por defecto activado debemos utilizar el comando:

sysctl net.ipv4.ip_forward=1

O editarlo directamente en el archivo /etc/sysctl.conf. Dependiendo de la distribuciรณn esta configuraciรณn tambiรฉn puede estar en un archivo enย  /etc/sysctl.d/.

Por defecto nuestro Linux debe tener una tabla de enrutamiento, que generalmente es la configuraciรณn de nuestra red lan y conexiรณn con el router. Si queremos ver este enrutamiento podemos usar dos comandos:

route -n

o

netstat -nr

Ambos comandos deberรญan devolver lo mismo.

Captura de pantalla de 2014-09-30 18:23:06

En general, esta configuraciรณn es suficiente para que tu Linux sirva como Gateway y otros equipos puedan navegar a travรฉs de nuestro equipo. Ahora bien, si queremos que por ejemplo, nuestro Linux conecte dos o mรกs redes ya sean locales o no, podemos hacer uso de las rutas estรกticas.

Supongamos que mi Linux tiene dos interfaces de red,ย  en la primera tiene salida a Internet cuya red es 172.26.0.0 y en la segunda (10.0.0.0) hay unos equipos de otra red local.ย  Si queremos enrutar paquetes a esa otra red podemos usar:

route add -net 10.0.0.0 netmask 255.0.0.0 gw 172.26.0.8

De forma general es:

route add -net REDDESTINO netmask MASCARA gw IPDELLINUX

si damos route -n independientemente de que esta red exista o no, estarรก fijado este enrutamiento en nuestra tabla.

Captura de pantalla de 2014-09-30 18:31:35

Si queremos eliminar dicho enrutamiento podemos usar

route del -net 10.0.0.0 netmask 255.0.0.0

Iptables.

Bรกsicamente iptables es usado para el filtrado de paquetes, salientes, entrantes u otros, esto hace que se convierta en una gran herramienta para administrar el trรกfico de nuestra red. Pues iptables asรญ como nos permite filtrar el trรกfico del mismo equipo, tambiรฉn permite filtrar el trรกfico que pasada a travรฉs de รฉl. (Forwarding). Iptables puede dividirse en tablas, cadenas, y acciones.

  • Tablas:ย  bรกsicamente pueden haber dos tablas, filter, para filtrar paquetes yย  nat para traducir direcciones, es decir, para pasar de una red a otra.
  • Cadenas: La cadena se refiere al tipo de trรกfico que deseamos filtrar o natear,ย  es decir, ยฟa cual trรกfico vamos aplicar las tablas?. y pueden ser:ย  INPUT: Trรกfico entrante, OUTPUT: trรกfico saliente o FORWARD: Trรกfico que pasa a travรฉs de รฉl, pero no es una conexiรณn propia.
  • Tambiรฉn puede aparecer POSTROUTING, que se usa para tratar el paquete de un modo determinado luego de haber sido enrutado.
  • Acciones: Las acciones bรกsicamente es la acciรณn que se va realizar con la cadena. Esta acciรณn puede ser DROP, que simplemente destruye ese trรกfico o ACCEPT. que permite al trรกfico hacer dicha acciรณn.

Las reglas de IPTABLES se guardan y ejecutan en el orden que fueron creadas, y si una regla suprime a una regla anterior, siempre queda aplicada la ultima regla en el orden.

Polรญticas de Cortafuegos.

En general, de forma natural los cortafuegos trabajan de dos maneras:

  1. Permitir todo el trรกfico excepto, o
  2. No permitir ningรบn trรกfico exceptoโ€ฆ

Para aplicar politicas se usa IPTABLES โ€“ P CADENA ACCION

Donde la cadena representa el tipo de trรกfico (INPUT, OUTPUT, FORWARD, POSTROUTINGโ€ฆ) y la acciรณn es DROP O ACCEPT.

Veamos un ejemplo.

Captura de pantalla de 2014-09-30 18:53:23

Aquรญ vemos que en principio pude hacer ping, luego le dije a IPTABLES que todo el trรกfico OUTPUT (Saliente) fuera DROP o no permitido. Luego le dije a IPTABLES que lo aceptara.

Si vamos a construir un cortafuegos desde cero debemos siempre aplicar las reglas de (No permitir ningรบn trรกfico exceptoโ€ฆย ย  Para esto entonces aplicamos las reglas

iptables -P INPUT DROP
iptablesย -P OUTPUT DROP
iptablesย -P FORWARD DROP
Si aplican estas polรญticas no tendrรกn ningรบn tipo de conexiรณn
.

Para regresar escribimos lo mismo y reemplazamos DROP por ACCEPT.

En este punto, ya que todo el trรกfico estรก denegado, comenzamos a decirle a nuestro IPTABLES cual es el trรกfico que si puede tener.

La sintaxis es:

iptables -A cadena -s ip_orgigen -d ip_destino -p protocolo --dport puerto -j acciรณn

Donde:

Cadena = INPUT, OUTPUT o FORWARD

ip_origen = Origen de los paquetes, esto puede ser una sola IP o una red y en este caso debemos especificar la mascara ).

ip_destino = hacia donde se dirigen los paquetes. esto puede ser una sola IP o una red y en este caso debemos especificar la mascara ).

protocolo = indica el protocolo que usan los paquetes (icmp, tcp, udpโ€ฆ)

puerto = puerto destino del trรกfico.

acciรณn = DROP o ACCEPT.

Ejemplo:

Captura de pantalla de 2014-09-30 19:26:41

Se aplican las polรญticas de TODO restringido.

Captura de pantalla de 2014-09-30 19:27:42

Luego aรฑadimos las reglas para poder tener trรกfico por el puerto 80 HTTP y 443 HTTPS, con el protocolo TCP.ย  Luego el puerto 53 Se aplica para que el cliente DNS pues a resolver los dominios, de lo contrario no navegarรกs. Esto funciona con protocolo udp.

La linea:

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

Es por lo siguiente: Cuando haces una peticiรณn HTTP por ejemplo, tu te conectas al puerto 80 del servidor, pero el servidor para devolverte la informaciรณn necesita conectar contigo por un puerto cualquiera. (Generalmente superior a 1024).

Como todos nuestros puertos estรกn cerrados esto no se lograrรกย a menos que abramos todos los puertos superiores a 1024 (Mala idea). Lo que esto dice es que se acepta todo el trรกfico entrante que provenga de una conexiรณn que yo mismo establecรญ. Osea una conexiรณn que en principio yo iniciรฉ.

Al poner OUTPUT en las reglas, esto solo aplica para el equipo en cuestiรณn, si estamos usando nuestro equipo como router para permitir estas conexiones, debemos cambiar OUTPUT por FORWARD. Dado que el trรกfico pasa por el equipo pero no es iniciado por รฉl
Todas estas reglas se borran luego del reinicio, por eso hay que crear scripts para que se inicien por defecto.ย  Pero esto lo veremos en la prรณxima

Espero que esta informaciรณn les haya gustado. En la prรณxima les hablarรฉ de NAT, Proxy y scripts para el Firewal.


Deja tu comentario

Tu direcciรณn de correo electrรณnico no serรก publicada. Los campos obligatorios estรกn marcados con *

*

*

  1. Responsable de los datos: Miguel รngel Gatรณn
  2. Finalidad de los datos: Controlar el SPAM, gestiรณn de comentarios.
  3. Legitimaciรณn: Tu consentimiento
  4. Comunicaciรณn de los datos: No se comunicarรกn los datos a terceros salvo por obligaciรณn legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu informaciรณn.

      Rogelio Pinto dijo

    Esta es la base que toman muchos emprendedores para fabricar sus propios firewalls, por eso hay en el mercado tantas y tantas marcas de firewalls con linux embebido, algunas buenos y otras no tanto.

      Heber dijo

    Excelente artรญculo. Espero ansioso la segunda parte.

      Milton dijo

    Muy buena explicaciรณn, me sirviรณ para entender el proxy de mi trabajo. Gracias

      faustod dijo

    Hola Jlcmux,

    Excelente, me gusto mucho, cuando estara disponible la otra parte?

    Un saludos y gracias por compartir

         @Jlcmux dijo

      Gracias por el comentario.

      Yo mande la otra parte ayer, en el transcurso del dรญa creo que la estarรกn publicando.

      Saludos.

      Israel dijo

    Muy buen articulo amigo @Jlcmux,de veras q aprendi con el ya que me esclarecio algunas dudas que tenia desde hace algun tiempo,por cierto no te molestaria compartir el libro de la fuente del articulo,el de Sรฉbastien BOBILLIER, bueno slau2s y ahora a ver la 2da parte, salu2s .

         @Jlcmux dijo

      Hola Gracias por comentar Israel.

      Resulta que el libro lo tengo en fรญsico. Pero encontrรฉ este link en Google Books. http://books.google.com.co/books?id=zxASM3ii4GYC&pg=PA356&lpg=PA356&dq=S%C3%A9bastien+BOBILLIER+Linux+%E2%80%93+Administraci%C3%B3n+del+sistema+y+explotaci%C3%B3n+de+los+servicios+de+red#v=onepage&q=

      Creo que estรก completo.

      Ariel dijo

    Muy buen artรญculo, agrego una consulta: ยฟCuรกl serรญa la ventaja de utilizar linux como router, si es que existe alguna, con respecto a un hardware dedicado a ello? ยฟO es solo a modo de ejercicio? Se que hay distros dedicadas pero no se si estรกn para rescatar viejas pcs o provee una mayor flexibilidad en la configuraciรณn.

         @Jlcmux dijo

      Bueno, pienso que las ventajas y desventajas dependen del escenario donde vayas a implementar esto. Porque seguramente no vas a comprar un UTM o algo asรญ para tu casa? Y quizรก para una empresa pequeรฑa que no pueda pagarlo tampoco. Igualmente a modo de ejercicio es bueno, pues te ayuda a entender toda la logica de esto y puedes configurar mejor un FWall dedicado. Ademรกs de que casi todos estos aparatos realmente lo que tienen es Linux Embebido.

      Saludos.

      Ariel dijo

    Hola, una pregunta, se puede generar una interfaz ยซartificialยป en linux para similar enrutamiento entre redes? (al estilo packet tracer) para trabajar con mรกquinas virtuales? ej si tengo eth0 (porque tengo una sola placa claro) puedo crear eth1 para hacer otra red? Muy bueno el tuto!

         elav dijo

      En Linux puedes crear interfaces virtuales, evidentemente. Si tienes eth0, puedes tener eth0:0, eth0:1, eth0:2… etc

      chinoloco dijo

    Muy bueno, gracias por compartir