GNU/Linux >> Tutoriales Linux >  >> Ubuntu

Tutorial de Iptables:la guía definitiva para el firewall de Linux

Introducción

Todos los sistemas operativos modernos vienen equipados con un firewall, una aplicación de software que regula el tráfico de red hacia una computadora. Los cortafuegos crean una barrera entre una red confiable (como la red de una oficina) y una que no es confiable (como Internet). Los cortafuegos funcionan definiendo reglas que rigen qué tráfico está permitido y cuál está bloqueado. La utilidad cortafuegos desarrollada para sistemas Linux es iptables .

En este tutorial, aprenda a instalar, configurar y usar iptables en Linux.

Requisitos previos

  • Una cuenta de usuario con sudo privilegios
  • Acceso a una ventana de terminal/línea de comando (Ctrl-Alt-T, Ctrl-Alt-F2)

Cómo funcionan las iptables

El tráfico de red se compone de paquetes. Los datos se dividen en partes más pequeñas (llamadas paquetes), se envían a través de una red y luego se vuelven a unir. Iptables identifica los paquetes recibidos y luego usa un conjunto de reglas para decidir qué hacer con ellos.

Iptables filtra paquetes basados ​​en:

  • Tablas: Las tablas son archivos que unen acciones similares. Una tabla consta de varias cadenas .
  • Cadenas: Una cadena es una cadena de reglas . Cuando se recibe un paquete, iptables encuentra la tabla adecuada y luego la ejecuta a través de la cadena de reglas. hasta que encuentre una coincidencia.
  • Reglas: Una regla es una declaración que le dice al sistema qué hacer con un paquete. Las reglas pueden bloquear un tipo de paquete o reenviar otro tipo de paquete. El resultado, donde se envía un paquete, se denomina objetivo .
  • Objetivos: Un destino es una decisión de qué hacer con un paquete. Por lo general, esto es para aceptarlo, descartarlo o rechazarlo (lo que devuelve un error al remitente).

Tablas y Cadenas

Linux firewall iptables tiene cuatro tablas predeterminadas. Enumeraremos los cuatro junto con las cadenas que contiene cada tabla.

1. Filtrar

El Filtro table es la más utilizada. Actúa como un gorila, decidiendo quién entra y quién sale de su red. Tiene las siguientes cadenas predeterminadas:

  • Entrada – las reglas de esta cadena controlan los paquetes recibidos por el servidor.
  • Salida – esta cadena controla los paquetes para el tráfico saliente.
  • Adelante – este conjunto de reglas controla los paquetes que se enrutan a través del servidor.

2. Traducción de direcciones de red (NAT)

Esta tabla contiene reglas NAT (traducción de direcciones de red) para enrutar paquetes a redes a las que no se puede acceder directamente. Cuando es necesario modificar el destino o el origen del paquete, se utiliza la tabla NAT. Incluye las siguientes cadenas:

  • Enrutamiento previo: esta cadena asigna paquetes tan pronto como el servidor los recibe.
  • Salida: funciona igual que la cadena de salida que describimos en el filtro mesa.
  • Enrutamiento posterior: las reglas de esta cadena permiten realizar cambios en los paquetes después de que abandonan la cadena de salida.

3. Destrozar

El Mangle La tabla ajusta las propiedades del encabezado IP de los paquetes. La tabla tiene todas las siguientes cadenas que describimos anteriormente:

  • Enrutamiento previo
  • Enrutamiento posterior
  • Salida
  • Entrada
  • Adelante

4. Crudo

El Crudo La tabla se utiliza para eximir a los paquetes del seguimiento de la conexión. La tabla raw tiene dos de las cadenas que mencionamos anteriormente:

  • Enrutamiento previo
  • Salida

5. Seguridad (Opcional)

Algunas versiones de Linux también usan un Seguridad tabla para gestionar reglas especiales de acceso. Esta tabla incluye entrada, salida, y adelante cadenas, al igual que la tabla de filtros.

Objetivos

Un objetivo es lo que sucede después de que un paquete coincide con un criterio de regla. Sin rescisión los objetivos siguen haciendo coincidir los paquetes con las reglas de una cadena incluso cuando el paquete coincide con una regla.

Con terminación objetivos, un paquete se evalúa inmediatamente y no se compara con otra cadena. Los destinos finales en iptables de Linux son:

  • Aceptar – esta regla acepta que los paquetes pasen por el cortafuegos de iptables.
  • Soltar – el paquete descartado no se compara con ninguna otra cadena. Cuando las iptables de Linux eliminan una conexión entrante a su servidor, la persona que intenta conectarse no recibe un error. Parece como si estuvieran intentando conectarse a una máquina que no existe.
  • Volver – esta regla devuelve el paquete a la cadena de origen para que pueda compararlo con otras reglas.
  • Rechazar – el cortafuegos de iptables rechaza un paquete y envía un error al dispositivo conectado.

Cómo instalar y configurar las iptables del cortafuegos de Linux

Instalación de Iptables Ubuntu

Las iptables se instalan por defecto en la mayoría de los sistemas Linux. Para confirmar que iptables está instalado, use el siguiente comando:

sudo apt-get install iptables

El resultado del ejemplo en Ubuntu confirma que la última versión de iptables ya está presente:

Si desea mantener las reglas del firewall de iptables cuando reinicie el sistema, instale el paquete persistente:

sudo apt-get install iptables-persistent

Instalación de Iptables CentOS

En CentOS 7 , iptables fue reemplazado por firewalld .

Para instalar iptables, primero debe detener firewalld. Introduzca los siguientes comandos:

sudo systemctl stop firewalld
sudo systemctl disable firewalld
sudo systemctl mask firewalld

Los comandos detienen y evitan que firewalld se inicie en el arranque, y no permiten que otros servicios inicien firewalld.

A continuación, instale y habilite iptables. Primero, instale el paquete de servicios de iptables con el siguiente comando:

sudo yum -y install iptables-services

Este paquete conserva sus reglas después de reiniciar el sistema. La información que se muestra a continuación confirma que la instalación está completa:

Ingrese los siguientes comandos para habilitar e iniciar iptables en CentOS 7:

sudo systemctl enable iptables
sudo systemctl start iptables

El comando de estado confirma el estado de la aplicación:

sudo systemctl status iptables

Sintaxis básica para comandos y opciones de iptables

En general, un comando de iptables tiene el siguiente aspecto:

sudo iptables [option] CHAIN_rule [-j target]

Aquí hay una lista de algunas opciones comunes de iptables:

  • -A --append – Agregar una regla a una cadena (al final).
  • -C --check – Busque una regla que coincida con los requisitos de la cadena.
  • -D --delete – Eliminar reglas específicas de una cadena.
  • -F --flush – Eliminar todas las reglas.
  • -I --insert – Agregar una regla a una cadena en una posición dada.
  • -L --list – Mostrar todas las reglas en una cadena.
  • -N -new-chain – Crear una nueva cadena.
  • -v --verbose – Mostrar más información al usar una opción de lista.
  • -X --delete-chain – Eliminar la cadena proporcionada.

Iptables distingue entre mayúsculas y minúsculas, así que asegúrese de estar usando las opciones correctas.

Configurar iptables en Linux

Por defecto, estos comandos afectan a los filtros mesa. Si necesita especificar una tabla diferente, use el –t opción, seguida del nombre de la tabla.

Verifique el estado actual de iptables

Para ver el conjunto actual de reglas en su servidor, ingrese lo siguiente en la ventana de la terminal:

sudo iptables -L

El sistema muestra el estado de sus cadenas. La salida listará tres cadenas:

Chain INPUT (policy ACCEPT)
Chain FORWARD (policy ACCEPT)
Chain OUTPUT (policy ACCEPT)

Habilitar tráfico de bucle invertido

Es seguro permitir el tráfico desde su propio sistema (el host local). Agregue la entrada cadena ingresando lo siguiente:

sudo iptables -A INPUT -i lo -j ACCEPT

Este comando configura el firewall para aceptar tráfico para el host local (lo ) interfaz (-i ). Ahora todo lo que se origine en su sistema pasará a través de su firewall. Debe configurar esta regla para permitir que las aplicaciones se comuniquen con la interfaz localhost.

Permitir tráfico en puertos específicos

Estas reglas permiten el tráfico en diferentes puertos especifique utilizando los comandos que se enumeran a continuación. Un puerto es un punto final de comunicación especificado para un tipo específico de datos.

Para permitir el tráfico web HTTP, ingrese el siguiente comando:

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

Para permitir solo el tráfico SSH (Secure Shell) entrante, ingrese lo siguiente:

sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT

Para permitir el tráfico de Internet HTTPS, ingrese el siguiente comando:

sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT

Las opciones funcionan de la siguiente manera:

  • -p – Comprobar el protocolo especificado (tcp ).
  • --dport – Especifique el puerto de destino.
  • -j jump – Realice la acción especificada.

Controlar el tráfico por dirección IP

Use el siguiente comando para ACEPTAR el tráfico de una dirección IP específica.

sudo iptables -A INPUT -s 192.168.0.27 -j ACCEPT

Reemplace la dirección IP en el comando con la dirección IP que desea permitir.

También puede DROP tráfico desde una dirección IP:

sudo iptables -A INPUT -s 192.168.0.27 -j DROP

Puede RECHAZAR el tráfico de un rango de direcciones IP, pero el comando es más complejo:

sudo iptables -A INPUT -m iprange --src-range 192.168.0.1-192.168.0.255 -j REJECT

Las opciones de iptables que usamos en los ejemplos funcionan de la siguiente manera:

  • -m – Coincide con la opción especificada.
  • -iprange – Dígale al sistema que espere un rango de direcciones IP en lugar de una sola.
  • --src-range – Identifica el rango de direcciones IP.

Descartar el tráfico no deseado

Si define dport reglas de firewall de iptables, debe evitar el acceso no autorizado descartando cualquier tráfico que venga a través de otros puertos:

sudo iptables -A INPUT -j DROP

El -A La opción agrega una nueva regla a la cadena. Si alguna conexión llega a través de puertos distintos a los que definió, se interrumpirá.

Eliminar una regla

Puedes usar el -F opción para borrar todas las reglas de firewall de iptables. Un método más preciso es eliminar el número de línea de una regla.

Primero, enumere todas las reglas ingresando lo siguiente:

sudo iptables -L --line-numbers

Localice la línea de la regla de firewall que desea eliminar y ejecute este comando:

sudo iptables -D INPUT <Number>

Reemplazar <Número> con el número de línea de regla real que desea eliminar.

Guarde sus cambios

Iptables no mantiene las reglas que creó cuando se reinicia el sistema. Siempre que configure iptables en Linux, todos los cambios que realice se aplicarán solo hasta el primer reinicio.

Para guardar las reglas en sistemas basados ​​en Debian, ingrese:

sudo /sbin/iptables–save

Para guardar las reglas en los sistemas basados ​​en Red-Hat, ingrese:

sudo /sbin/service iptables save

La próxima vez que se inicie su sistema, iptables volverá a cargar automáticamente las reglas del cortafuegos.


Ubuntu
  1. Cortafuegos Linux

  2. Linux – ¿Enrutamiento a través de Iptables?

  3. IPTables de Linux:cómo agregar reglas de firewall (con el ejemplo Permitir SSH)

  4. Cómo registrar paquetes descartados de IPTables Firewall de Linux en un archivo de registro

  5. Servicio del sistema operativo Linux 'iptables'

La guía definitiva del subsistema de Windows para Linux (Windows WSL)

Cómo proteger un firewall de Linux con reglas de IPTables

La guía definitiva para crear usuarios en Linux/Unix

Los 5 mejores cortafuegos de Linux

Tutorial de firewall de Linux:tablas, cadenas y fundamentos de reglas de IPTables

Cómo configurar un cortafuegos en su servidor Linux