miércoles, 24 de noviembre de 2010

FIREWALLS CON LINUX

Introducción
Amigos lectores, voy a dedicar este capítulo a los firewall en Linux o lo que es lo mismo cortinas, paredes o muros de fuego. La función básica de un firewall es la de filtrar paquetes. Los firewall pueden ser de Hardware o de Software. En Linux el firewall está compilado en el kernel, lo que lo hace disponible en cualquier distribución Linux, y no es necesario arrancar ningún tipo de aplicación ya que arranca cada vez que se inicia el Sistema Operativo. Se preguntarán, ¿cómo dejo de filtrar paquetes? Sencillo, el firewall en Linux es manejado por reglas, si no existen reglas, queda inactivo.
En el mundo Open Source existen una cantidad de aplicaciones gráficas que permiten generar reglas de modo sencillo, de las cuales me llama la atención fwbuilder y webmin (éste permite la administración de la máquina de forma remota vía web, y tiene una función para manejo de filtro de paquetes).

Cómo se crean las reglas…
Para comenzar, para versiones de kernel anterior a 2.4, se usa el comando ipchain, posterior a esta versión de ker-nel se usa iptables, que es la que explicaremos. La diferencia entre iptables e ipchain es el aporte de muchas mejoras.
  • FILTER: Esta es la tabla por defecto, permite generar reglas de filtrado. Qué paquetes aceptar, cuales rechazar o cuales paquetes omitir.
  • NAT: Permite el enmascaramiento de IP, la cual es muy usada en el paso de una red a otra, a través de varias interfaces de red.
  • MANGLE: Permite la modificación del paquete como puede ser TOS (Type of Service), TTL (Time to Live), o mark, lo cual permite marcar el paquete (usado para QOS o Calidad de Servicio)
Cada una de estas tablas poseen cadenas, que no son más que la agrupación de reglas. Cada tabla posee cadenas por defecto, las cuales no pueden ser eliminadas.Además de las cadenas por defecto, podemos tener nuestras cadenas, que nos permitirán agrupar y darle un poco de orden a las reglas.El proceso de funcionamiento de iptables lo podemos ver en la gráfica siguiente, basta que alguna regla cumpla con la condición del paquete entrante o saliente para que sea aplicada:Es recomendable recordar estos pasos, cuando se generen reglas. Continuando con reglas, además de las tablas y las cadenas, tenemos los parámetros que deseamos filtrar, convertir, marcar, etc. Los parámetros pueden ser interfaces de red, sean de entrada o salida, direcciones IP origen o destino, puertos de origen o destino, en fin podemos generar reglas desde lo más simple a lo más comple-jo.Cada una de las reglas tiene como resultado final una acción. La acción la podemos definir como qué debemos hacer con el paquete.
Cada cadena tiene una acción definida por defecto, debido a que si no existe regla que cumpla con la condición del paquete se ejecuta la acción por defecto.Las acciones pueden ser ACCEPT, REJECT,DROP, MASQUERADE, DNAT, SNAT, LOG.
  • ACCEPT: como su nombre lo indica, el paquete es aceptado,
  • REJECT: el paquete es rechazado y el emi-sor recibe notificación a través del protocolo
  • ICMP,DROP: el paquete es descartado y no se envía ninguna notificación al emisor,
  • MASQUERADE: enmascaramiento de la dirección IP origen de forma dinámica (más adelante se explicará),
  • DNAT: enmascaramiento de la dirección destino, ideal para re-enrutado de paquetes,
  • SNAT: enmascaramiento de la IP origen similar a MASQUERADE pero con IP FIJA.
Un punto muy importante que vale la pena resaltar en la secuencia de lectura de las reglas. Las reglas son leídas de modo secuencial,si se cumple alguna regla ésta es procesada y se ejecuta la acción con el paquete, saliendo del ciclo de verificación de reglas, es decir si la primera regla en la tabla filter de la cadena input es rechazar cualquier paquete, las siguientes reglas no son verificadas por iptables.
Sintaxis del comando iptables
El comando iptables tiene un sin número de parámetros, como también comandos. Los comandos indican que vamos hacer algo con las reglas, agregar una nueva regla, modificar una regla existente, insertar, etc. La sintaxis essencilla, pero a medida que necesitamos reglas complejas éstas son más largas.
Explicando un poco los comandos anteriores, quiero resaltar que todo lo que está entre corchetes es opcional. En el caso de [-t tabla] si no se especifica por defecto es filter. Todo lo que aparece posterior a [-t tabla] es el comando a aplicar a iptables, como por ejemplo -A, -I. etc.
Vamos a describir a continuación los comandos:
  • -R Reemplazar la regla numero_regla existente en la cadena cadena por los pa-rámetros dados,
  • -A Agregar una nueva regla al final de la cadena especificada cadena,
  • -I Insertar una nueva regla antes de la regla numero_regla en la cadena cadena por los parámetros dados,
  • -D Eliminar la regla numero_regla existente en la cadena cadena,
  • -N Crear una nueva cadena con el nombre cadena,
  • -X Elimina cadena con el nombre cadena. (No deben existir reglas para poder eliminar una cadena),
  • -P Modifica acción por defecto de la cadena cadena,
  • -E Modifica el nombre de la cadena nombre-anterior-cadena por nombre-nueva-cadena,
  • -L listado de reglas de la cadena cadena. Si no se especifica la cadena listará todas las reglas de todas las cadenas,
  • -F eliminar todas las reglas de la cadena cadena. (Si no se especifica la cadena eli-minará todas las reglas de todas las cadenas),
  • -Z Colocar en cero los contadores de paquetes y bytes de la cadena. (Si no se especifica la cadena borrará todos los contadores de todas las reglas en todas las cadenas).

No hay comentarios:

Publicar un comentario