Configuración del Firewall en Kali con iptables

Kali LinuxBeginner
Practicar Ahora

Introducción

En esta práctica de laboratorio, aprenderás a configurar un firewall en Kali Linux utilizando iptables, una herramienta potente para gestionar las reglas de filtrado de paquetes IP en el kernel de Linux. El objetivo principal es comprender y aplicar reglas de firewall para mejorar la seguridad de la red, controlando el tráfico en función de direcciones IP, puertos y protocolos. A través de actividades prácticas paso a paso, visualizarás las reglas actuales de iptables, bloquearás direcciones IP específicas, permitirás el tráfico en puertos designados y guardarás tus configuraciones. Al trabajar dentro de un contenedor Kali Linux preconfigurado en el entorno de VM de LabEx, adquirirás habilidades prácticas en la gestión de ajustes de firewall para asegurar el tráfico de red.

Esta es una Práctica Guiada, que proporciona instrucciones paso a paso para ayudarte a aprender y practicar. Sigue las instrucciones cuidadosamente para completar cada paso y ganar experiencia práctica. Los datos históricos muestran que esta es una práctica de nivel principiante con una tasa de finalización del 99%. Ha recibido una tasa de valoraciones positivas del 100% por parte de los alumnos.

Instalación y Visualización de Reglas de iptables

En este primer paso, instalarás iptables y aprenderás a visualizar las reglas de firewall actuales dentro del contenedor Kali Linux. Este es un punto de partida esencial para comprender la configuración de firewall existente antes de realizar cualquier cambio.

Al abrir la terminal en el entorno de VM de LabEx, te conectarás automáticamente a la shell del contenedor Kali Linux. No es necesario iniciar manualmente el contenedor ni entrar en la shell; el entorno ya está configurado para ti. Comencemos instalando iptables y explorando el estado actual de las reglas del firewall.

iptables es una utilidad de línea de comandos que permite gestionar las reglas de filtrado de paquetes IP del kernel de Linux. Estas reglas determinan cómo se maneja el tráfico de red: si se acepta, se descarta o se redirige en función de criterios específicos como la IP de origen o los números de puerto. Visualizar las reglas te ayuda a ver qué políticas están vigentes en este momento.

Primero, actualicemos la lista de paquetes e instalemos iptables. Escribe el siguiente comando y presiona Enter:

apt update && apt install -y iptables

Este comando actualizará la lista de paquetes e instalará iptables en un solo paso. El operador && garantiza que la instalación solo proceda si la actualización es exitosa.

Salida Esperada (ejemplo, la salida real puede variar):

Get:1 http://mirrors.cloud.aliyuncs.com/kali kali-rolling InRelease [30.9 kB]
...
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
iptables is already the newest version (1.x.x-1).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

Ahora que iptables está instalado, ejecuta el siguiente comando para listar las reglas actuales de iptables. Escribe el comando y presiona Enter:

iptables -L -v -n

Este comando se desglosa de la siguiente manera:

  • iptables: La herramienta para gestionar las reglas del firewall.
  • -L: Lista todas las reglas en las cadenas seleccionadas.
  • -v: Proporciona una salida detallada (verbose), incluyendo contadores de paquetes y bytes.
  • -n: Muestra las direcciones IP y los puertos en formato numérico sin resolución de nombres.

Después de ejecutar este comando, verás una salida similar a la siguiente. La salida exacta puede variar según la configuración inicial del contenedor.

Salida Esperada (ejemplo, la salida real puede variar):

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Esta salida muestra las tres cadenas principales: INPUT para el tráfico entrante, FORWARD para el tráfico que pasa a través del sistema y OUTPUT para el tráfico saliente. Cada cadena muestra su política predeterminada (como ACCEPT) y cualquier regla específica si existe. Si las cadenas aparecen vacías, como en este ejemplo, significa que no hay reglas personalizadas aplicadas actualmente y las políticas predeterminadas rigen todo el tráfico.

Tómate un momento para revisar la salida. Comprender el estado actual de tu firewall es crucial antes de añadir o modificar reglas, lo cual harás en los siguientes pasos. Este paso fundamental asegura que estés familiarizado con la configuración inicial de iptables en tu contenedor Kali Linux.

Comprensión de las Cadenas y Políticas de iptables

Ahora que tienes iptables instalado y has visualizado las reglas iniciales, profundicemos en cómo funciona iptables antes de crear reglas personalizadas. En este paso, aprenderás sobre las diferentes cadenas y sus políticas predeterminadas.

iptables organiza las reglas del firewall en cadenas, que son listas de reglas contra las cuales se comprueban los paquetes. Las tres cadenas integradas principales son:

  • INPUT: Gestiona los paquetes destinados al sistema local.
  • FORWARD: Gestiona los paquetes que se enrutan a través del sistema.
  • OUTPUT: Gestiona los paquetes que se originan en el sistema local.

Cada cadena tiene una política predeterminada que determina qué sucede con los paquetes que no coinciden con ninguna regla específica. Las políticas más comunes son ACCEPT (permitir el paquete) y DROP (descartar el paquete).

Examinemos los ajustes de política actuales más de cerca. Ejecuta el siguiente comando para ver información detallada sobre cada cadena:

iptables -L -v -n --line-numbers

La opción --line-numbers añade números de línea a cada regla, lo que facilita la referencia a reglas específicas más adelante.

Salida Esperada (ejemplo, la salida real puede variar):

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
num  pkts bytes target     prot opt in     out     source               destination

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num  pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
num  pkts bytes target     prot opt in     out     source               destination

Observa que todas las cadenas tienen actualmente una política de ACCEPT, lo que significa que si ninguna regla específica coincide con un paquete, se le permitirá pasar. Los contadores de paquetes y bytes muestran 0 porque aún no se ha procesado tráfico en este entorno de contenedor nuevo.

Comprender estos conceptos fundamentales es crucial antes de añadir reglas personalizadas, ya que necesitas saber cómo fluyen los paquetes a través del sistema y cuál será el comportamiento predeterminado para el tráfico que no coincida con ninguna regla.

Bloqueo de una Dirección IP Específica

Ahora que tienes iptables instalado, pasemos a configurar tu firewall bloqueando el tráfico de una dirección IP específica. Esta es una medida de seguridad común para prevenir accesos no deseados o amenazas potenciales de una fuente en particular.

Bloquear una dirección IP con iptables significa crear una regla para descartar (drop) los paquetes entrantes de esa dirección. Cuando un paquete se descarta, el sistema lo ignora, deteniendo efectivamente cualquier comunicación desde la IP especificada. Para este ejercicio, bloquearás el tráfico de una dirección IP hipotética, 192.168.1.100, como un ejemplo seguro para practicar dentro del entorno del contenedor.

Escribe el siguiente comando en la terminal del contenedor Kali Linux y presiona Enter para añadir una regla que bloquee todo el tráfico entrante desde 192.168.1.100:

iptables -A INPUT -s 192.168.1.100 -j DROP

Desglosemos este comando:

  • iptables: La herramienta para gestionar las reglas del firewall.
  • -A INPUT: Añade (append) una regla a la cadena INPUT, que gestiona el tráfico entrante.
  • -s 192.168.1.100: Especifica la dirección IP de origen (source) que debe coincidir con esta regla.
  • -j DROP: Establece la acción de descartar los paquetes de la dirección IP especificada.

No habrá una salida inmediata después de ejecutar este comando, lo que indica que la regla se ha añadido correctamente a la cadena INPUT.

Para confirmar que la regla está vigente, ejecuta el siguiente comando para listar las reglas actuales de iptables y presiona Enter:

iptables -L -v -n

Salida Esperada (ejemplo, la salida real puede variar):

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 DROP       all  --  *      *       192.168.1.100        0.0.0.0/0

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Esta salida muestra una regla bajo la cadena INPUT que descarta todo el tráfico de 192.168.1.100. Los contadores de paquetes (pkts) y bytes (bytes) probablemente mostrarán 0 a menos que se haya intentado tráfico desde esta IP.

Al completar este paso, has añadido con éxito una regla para bloquear el tráfico de una dirección IP específica. Esta habilidad es vital para restringir el acceso de fuentes no deseadas o maliciosas. En el siguiente paso, aprenderás cómo permitir el tráfico en puertos específicos para habilitar los servicios necesarios manteniendo la seguridad.

Habilitación de Tráfico en un Puerto Específico

Habiendo bloqueado una dirección IP, la siguiente habilidad importante es permitir el tráfico en puertos específicos para habilitar el acceso a los servicios necesarios. En este paso, añadirás una regla para permitir el tráfico entrante en un puerto designado utilizando iptables.

Los puertos son utilizados por los servicios de red para comunicarse a través de una red. Por ejemplo, los servidores web suelen utilizar el puerto 80 para el tráfico HTTP. Permitir el tráfico en un puerto específico significa crear una regla para aceptar los paquetes entrantes destinados a ese puerto, asegurando que el servicio asociado sea accesible. Para este ejercicio, permitirás el tráfico en el puerto 80 como un ejemplo práctico.

Escribe el siguiente comando en la terminal del contenedor Kali Linux y presiona Enter para añadir una regla que acepte el tráfico TCP entrante en el puerto 80:

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

Desglosemos este comando:

  • iptables: La herramienta para gestionar las reglas del firewall.
  • -A INPUT: Añade una regla a la cadena INPUT para el tráfico entrante.
  • -p tcp: Especifica el protocolo como TCP, comúnmente utilizado para servicios como HTTP.
  • --dport 80: Indica el puerto de destino (destination port) como 80, apuntando al tráfico hacia este puerto.
  • -j ACCEPT: Establece la acción de aceptar los paquetes que coincidan con esta regla.

No habrá una salida inmediata tras ejecutar este comando, lo que indica que la regla se ha añadido correctamente.

Para verificar que la regla está aplicada, ejecuta el siguiente comando para listar las reglas actuales de iptables y presiona Enter:

iptables -L -v -n

Salida Esperada (ejemplo, la salida real puede variar):

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 DROP       all  --  *      *       192.168.1.100        0.0.0.0/0
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:80

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Esta salida muestra la regla bajo la cadena INPUT para aceptar tráfico TCP en el puerto 80, junto con la regla anterior para descartar el tráfico de 192.168.1.100. Los contadores probablemente mostrarán 0 a menos que haya ocurrido tráfico que coincida con esta regla.

Al completar este paso, has aprendido cómo permitir el tráfico en un puerto específico, lo cual es esencial para habilitar el acceso a servicios como servidores web mientras se mantienen seguros otros puertos. En el siguiente paso, guardarás estas configuraciones para asegurar que puedan ser referenciadas o recargadas más tarde.

Guardado de la Configuración de iptables

En este paso final, aprenderás a guardar tu configuración de iptables dentro del contenedor Kali Linux. Guardar las reglas es importante porque, por defecto, se almacenan en la memoria y se perderían si el contenedor se reinicia. Este paso asegura que puedas preservar tus ajustes de firewall para futuras referencias o para volver a cargarlos.

Por defecto, las reglas de iptables existen solo en la memoria de ejecución del sistema. Guardarlas en un archivo te permite mantener un registro de tu configuración, lo cual puede ser útil para documentación o para restaurar las reglas más tarde usando iptables-restore. Para este ejercicio, guardarás las reglas en un archivo en el directorio /root dentro del contenedor.

Escribe el siguiente comando en la terminal del contenedor Kali Linux y presiona Enter para guardar las reglas actuales de iptables en un archivo llamado iptables-rules en el directorio /root:

iptables-save > /root/iptables-rules

Desglosemos este comando:

  • iptables-save: Exporta las reglas actuales de iptables desde la memoria a la salida estándar.
  • > /root/iptables-rules: Redirige la salida a un archivo llamado iptables-rules en el directorio /root, sobrescribiéndolo si ya existe.

No habrá una salida inmediata tras ejecutar este comando, lo que indica que las reglas se han guardado correctamente en el archivo especificado.

Para confirmar que las reglas se guardaron correctamente, visualiza el contenido del archivo escribiendo el siguiente comando y presionando Enter:

cat /root/iptables-rules

Salida Esperada (ejemplo, la salida real puede variar):

## Generated by iptables-save v1.x.x on ...
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -s 192.168.1.100/32 -j DROP
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
COMMIT
## Completed on ...

Esta salida muestra la configuración guardada, incluyendo las reglas para descartar el tráfico de 192.168.1.100 y aceptar el tráfico en el puerto 80. El formato es compatible con iptables-restore, que podría usarse para recargar estas reglas si fuera necesario.

Al completar este paso, has guardado con éxito tu configuración de iptables en un archivo. Esta práctica es esencial para preservar los ajustes del firewall en escenarios del mundo real, aunque el entorno del contenedor pueda no persistir los cambios tras los reinicios. Ahora has completado las habilidades principales para gestionar una configuración básica de firewall con iptables.

Resumen

En esta práctica de laboratorio, has aprendido los aspectos esenciales de la configuración de un firewall en Kali Linux utilizando iptables dentro de un entorno de contenedores. Comenzaste visualizando las reglas actuales de iptables para comprender el estado inicial del firewall. Luego, actualizaste la lista de paquetes e instalaste iptables para preparar tu sistema. A continuación, añadiste reglas para bloquear el tráfico de una dirección IP específica y permitir el tráfico en un puerto designado, mejorando el control sobre el acceso a la red. Finalmente, guardaste tu configuración en un archivo para futuras referencias. Estos pasos te han proporcionado habilidades fundamentales en la gestión de la seguridad de red mediante el filtrado de tráfico con iptables.