IPTables y FireHOL: configurando el firewall en un equipo Linux

El kernel de Linux incluye un firewall muy potente, Iptables. Este programa está instalado en la mayoría de las distribuciones. Con él se pueden crear reglas de filtrado de paquetes desde muy sencillas a extremadamente complejas. De esta manera, el administrador de un equipo Linux tiene una herramienta muy poderosa para aumentar la seguridad de su sistema.

Explicaremos de manera rápida la lógica de Iptables, y sus comandos básicos. Aunque hay que decir que configurar Iptables a mano es una tarea complicada, no es trivial. Además, a todos nos ha pasado, equivocarte en un comando en un cortafuegos puede llevar a que no puedas conectarte tu mismo a la máquina (ten siempre una acceso de seguridad para emergencias). Así que, más adelante, hablaremos sobre un programa que nos ayudará a configurar nuestro firewall.

Conceptos de Iptables.

Los paquetes puedes entrar (input), salir (output) o pasar (forward) por tu sistema. Las reglas se pueden hacer teniendo en cuenta:

  • Protocolo del paquete (-p=protocol) . Por ejemplo Tcp, udp, icmp..
  • Origen del paquete (-s=source). Puede ser una ip o un rango de ips.
  • Interfaz de entrada (-i=input) o de salida (-o=output). Por ejemplo eth0, eth1,ppp0…
  • Por el tipo de paquete (input, output o forward).
  • Podemos decir que hag Nateo antes de enrutar (iptables -t nat -P PREROUTING ACCEPT) o después de enrutar (iptables -t nat -P POSTROUTING ACCEPT) o ambos.

Para ver las reglas que tenemos configuradas o activas en una tabla podemos hacer:

iptables -L

O si queremos algo organizado por servicio:

iptables -S

Con estos comando también podemos filtrar por tipo (Input, output, TCP), por ejemplo:

sudo iptables -S TCP
sudo iptables -L INPUT

  • Para borrar todos los contadores podemos usar: iptables -Z  (podemos especificar por tipo).
  • Para borrar todas las reglas: iptables -F  (podemos especificar por tipo). Cuidado que borra todo.

Pero como decimos, configurar Iptables a mano puede ser complejo. Así que existen varias soluciones para ayudarte con ello. Hay GUIs (interfaces gráficos) como Firestarter, o programas como FireHOL, del que hablamos hoy.

FireHOL es un lenguaje y un programa para ejecutarlo que, aunque no tiene asistente gráfico, nos ayuda mucho a configurar los Iptables. Consta de un fichero de configuración en /etc/firehol/firehol.conf  desde el que se configura todo.

La sintaxis de FireHOL es sencilla y se basa en la idea típica de los cortafuegos “deniega todo y luego acepta sólo lo que quieres dejar pasar“.

El uso es sencillo, puedes poner reglas como server (entrante) o client (saliente). Y definir tus propios servicios como:

server_emule_ports="tcp/4662,64397,7037,23213,25286 udp/4672"
client_emule_ports="default"

Y luego aceptarlos en el interfaz adecuado:

server emule accept
client emule accept

 

Una vez guardado el fichero no se activan las reglas hasta que hagas:

/etc/init.d/firehol restart

PERO recomiendo (y esto es una GRAN ventaja) probar primero la configuración antes de grabarla con

firehol try

Esto activa las nuevas reglas durante 30 segundos hasta que escribas la palabra commit. Si no lo haces (porque algo haya fallado) restaura el cortafuegos anterior (permitiéndote cambiar la configuración.

Puedes ver más información aquí: