IPTABLES

Preámbulo

Este artículo va dedicado a la seguridad en nuestro sistema operativo, en él voy a explicar una forma muy básica de defenderse de agentes externos, para ello usaremos las iptables, que voy a intentar definir a continuación.

Introducción

Para configurar un firewall en GNU/Linux, podemos hacer uso de las iptables, una potente herramienta que parece olvidada por muchos usuarios.

Existen otros métodos para filtrar tráfico a nivel de enlaces (links html):

  • ebtables y
  • arptables

Podemos implementar servidores proxy como Squid a nivel de aplicaciones, para por ejemplo llevar la gestión del tráfico y el ancho de banda, desde y hacia Internet.

El caso es que iptables puede resultar útil para todos los casos anteriores, complementando el diseño del sistema de seguridad de la organización, e implementando una buena capa de seguridad a nivel kernel en nuestro sistema, además nos permite controlar varios niveles de la arquitectura TCP/IP.

El kernel Linux Implementa iptables, es una parte del núcleo que se ocupa de filtrar paquetes, iptables identificará mediante reglas qué información entra y salé, desde o hacia nuestra red local, aislando a los sistemas de posibles amenazas, como ataques de fuerza bruta al servidor ssh, mail, web, etc. En este artículo te enseñamos a configurar de una forma muy sencilla iptables en tu sistema.

USO

La forma general de usar iptables para crear una política de filtrado es:

iptables -argumentos i/o acción

Donde

-argumento es el argumento que usaremos, normalmente:

  1. -P para establecer la política por defecto, aunque existen otros como
  2. -L para ver las políticas que tenemos configuradas,
  3. -F para eliminar una política creada,
  4. -Z para poner a cero los contadores de bytes y paquetes, etc.
  5. -A para añadir una política,
  6. -I para insertar una regla en una posición concreta
  7. -D suprimir una regla.

También habrá otros argumentos para filtrar por

  1. -p protocolo/s,
  2. -sport puerto fuente,
  3. -dport puerto destino,
  4. -i interfaz entrante,
  5. -o interfaz saliente,
  6. -s dirección IP origen y
  7. -d dirección IP destino.

Vamos a ver a continuación un conjunto de reglas muy concretas: imagina que tienes un servidor web y por tanto el tráfico por el puerto 80 debe estar permitido”:

iptables -A INPUT -p tcp –dport 80 -j ACCEPT

Y si además de la regla anterior, queremos que un equipo con iptables solo sea visto por los equipos de nuestra subred, y que pase desapercibido para una red externa:

iptables -A INPUT -p tcp -s 192.168.30.0/24 –deport 80 -j ACCES

En la línea anterior, lo que estamos diciendo a iptables es que se

+Añadir una regla -A para que las entradas INPUT, protocolo TCP, puerto 80, sean aceptadas.

Ahora imagina que necesitamos rechazar la navegación web a los sistemas de la red local, que pasen a través de la máquina que ejecuta iptables en nuestra red (firewall). Procederíamos con esta otra regla:

iptables -t filter -A FORWARD -i eth1 -o eth0 -p tcp –dport 80 DROP

Para Iniciar/Parar/reiniciar iptables tenemos los siguientes comandos, que deberemos ejecutar con permisos de administrador:

service iptables start

service iptables stop

service iptables restart

Los comandos de iptables que más terminaremos utilizando son los siguientes:

-A agrega una regla a una cadena

-D borra una regla de una cadena especificada

-R reemplaza una regla

-I inserta una regla en lugar concreto de una determinada cadena

Otras reglas que podemos necesitar en nuestro firewall, para bloquear el tráfico procedente de una determinada DIRECCIÓN|RANGO IP:

iptables -A INPUT -p tcp -m iprange – – src-range 192.168.1.13-192-168.2.19

También podríamos bloquear por dirección física o MAC ADDRESS con la condición -mac-source:

iptables -A INPUT -m mac -mac-source 00:00:00:00:00:01

Una vez ejecutadas las reglas que queremos aplicar, debemos guardarlas ejecutando como admim:

service iptables save

Para borrar toda la configuración del firewall y poder volver a configurarlo de nuevo, el comando a ejecutar sería este:

iptables -F

Para permitir las conexiones entrantes tenemos los siguientes ejemplos de sintaxis, donde podéis variar los datos entre corchetes para adaptarlo a vuestras necesidades:

iptables -A INPUT -i [interface] -p [protocolo] –dport [puerto] -m state –state NEW, ESTABLISHED -j ACCEPT

En el caso de tener el firewall pinchado a dos redes, 2 tarjetas de red, eth0 para la LAN y eth1 para la WAN Internet, podemos configurar el firewall para que reenvíe el tráfico de la red local a través de Internet:

iptables -A FORDWARD -i eth0 -o eth1 -j ACCEPT

Podremos definir si la política se aplica a la entrada INPUT, a la salida OUTPUT o si se redirecciona el tráfico FORDWARD.

  1. ACCEPT si aceptamos
  2. REJECT si rechazamos
  3. DROP si eliminamos

La diferencia entre DROP y REJECT es que cuando se rechaza un paquete con REJECT, la máquina que lo originó sabrá que ha sido rechazado, pero con DROP se actúa con silencio y el atacante u origen no sabrá que ha pasado, y tampoco sabrá si tenemos un cortafuegos o simplemente ha fallado la conexión.

También hay otras como LOG, que mandan un seguimiento del syslog

Para modificar reglas podemos editar el fichero de iptables con nuestro editor de texto preferido o crear scripts con reglas, mediante la consola con comandos.

La política de bloquear absolutamente todo el tráfico (nos dejará aislados):

iptables -P INPUT DROP

La política de aceptar absolutamente todo el tráfico:

iptables -P INPUT ACCEPT

Si queremos que todo el tráfico saliente desde nuestro equipo sea aceptado:

iptables -P OUTPUT accept

UFW (Uncomplicated Firewall)

Es una herramienta de configuración de firewall para Ubuntu, desarrollado para facilitar la configuración de las iptables.

UFW proporciona una manera fácil de crear un firewall basado en host IPv4 o IPv6. Lo primero que debemos hacer es instalarlo:

aptitude install ufw

Y lo levantaremos con el comando:

ufw enable

Podremos parar el firewall, con este otro comando::

ufw disable

Una vez tengamos el firewall funcionando, podremos configurarlo a base de reglas. Podremos permitir todo el tráfico por defecto con esta regla:

ufw default allow

Podremos bloquear todo el tráfico con esta otra regla:

ufw default deny

Para aplicar reglas a determinados puertos:

ufw allow\deny [puerto]/[protocolo]

Existe un archivo /etc/ufw/before.rules con reglas establecidas, conviene tenerlo en cuenta.

Comentando, poniendo una almohadilla # delante de la línea siguiente, estaremos deshabilitando el ping:

-A ufw-before-input -p icmp -icmp-type echo-request -j ACCEPT

Podemos consultar en todo momento las reglas del firewall ufw:

ufw status

Y esto es todo, iré editando la entrada 😉


También te puede interesar:

  1. https://sospedia.net/iptables/
  2. https://sospedia.net/iptables-borrar-una-regla-unban-ip/
  3. https://sospedia.net/tutorial-basico-de-iptables/
  4. https://sospedia.net/vps-ubuntu-configuracion-sobre-un-dominio-2018/
  5. https://sospedia.net/script-php-para-obtener-los-dominios-que-nos-han-atacado/
  6. https://sospedia.net/fail2ban-iptables/

5 comments

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.