Ubuntu iptables cómo controlar el tráfico de red utilizando iptables?

Ubuntu iptables cómo controlar el tráfico de red utilizando iptables?
"… A Utilidad UNIX del espacio de usuario que brinda a los administradores del sistema la capacidad de configurar las reglas de filtrado de paquetes IP implementadas por el módulo de filtro neto del kernel." Los iptables actúan como un firewall utilizando reglas de filtrado de paquetes basadas en varios criterios, como la dirección IP, el puerto y los protocolos.

Esta guía discutirá cómo configurar y usar reglas iptables en un sistema Ubuntu para asegurar su red. Ya sea que sea un usuario novato de Linux o un administrador de sistemas experimentado, de esta guía y de una forma u otra, aprenderá algo útil sobre iptables.

Los iptables vienen preinstalados en Ubuntu y la mayoría de las distribuciones basadas en Debian. Ubuntu también empaqueta GUFW Firewall, una alternativa gráfica que puede usar para trabajar con iptables.

NOTA: Para usar y configurar iptables, necesitará privilegios de sudo en su sistema. Puede obtener más información sobre sudo del siguiente tutorial.

Ahora que sabes qué es iptables, vamos a sumergirnos en!

Cómo usar iptables para administrar el tráfico IPv4?

Para usar iptables para la red IPv4 y la gestión del tráfico, debe comprender lo siguiente:

El comando iptables

Iptables ofrece una selección de opciones que le permiten personalizar y ajustar sus reglas iptables. Discutamos algunos de estos parámetros y veamos qué hacen.

NOTA: Puede configurar un conjunto de reglas que administran un subconjunto específico, conocido como cadenas iptables.

Parámetros iptables

Antes de comenzar a crear y configurar las reglas iptables, primero comprendamos los conceptos básicos de los iptables, como la sintaxis general y los argumentos predeterminados.

Considere el comando a continuación:

sudo iptables -i entrada -s 192.168.0.24 -J caída

El comando anterior le dice a los iptables que creen una regla en la cadena. La regla deja caer todos los paquetes de la dirección IP 192.168.0.24.

Examinemos el comando, línea por línea, para comprenderlo mejor.

  • El primer comando iptables llama a la utilidad de línea de comandos iptables.
  • El siguiente es -i argumento utilizado para la inserción. El argumento de inserción agrega una regla al comienzo de la cadena iptable y, por lo tanto, se le asigna una prioridad más alta. Para agregar una regla a un número específico en la cadena, use el argumento -i seguido del número donde se debe asignar la regla.
  • El argumento -s ayuda a especificar la fuente. Por lo tanto, usamos el argumento -s seguido de la dirección IP.
  • El parámetro -j con iptables especifica el salto a un objetivo específico. Esta opción establece la acción que los iptables funcionarán una vez que haya un paquete a juego. Iptables ofrece cuatro objetivos principales de forma predeterminada, estos incluyen: aceptar, soltar, registrar y rechazar.

Iptables ofrece una selección de parámetros que puede usar para configurar varias reglas. Los diversos parámetros que puede usar para configurar las reglas iptables incluyen:

Parámetro de regla de iptables Descripción
-S -fuente Especifique la fuente, que puede ser una dirección, nombre de host o nombre de red.
-P -protocol Especifica el protocolo de conexión; Por ejemplo, TCP, UDP, etc.
-d -destinación Especifica el destino, que puede ser una dirección, nombre de red o nombre de host.
-J -JUMP Establece la acción que iptables se llevará a cabo después de encontrar un paquete.
-o -out -interfaz Establece la interfaz a través de la cual el iptable envía el paquete.
-I -en interfaz Establece la interfaz utilizada para establecer paquetes de red.
-contadores Permite al administrador establecer el byte y los contadores de paquetes para una regla especificada.
-G -Cadena G -Goto El parámetro especifica que el procesamiento debe continuar en la cadena del conjunto del usuario al devolver.
-F -Fragmento Le dice a iptables que aplique la regla solo al segundo y los siguientes fragmentos de los paquetes fragmentados.

Opciones de iptables

El comando iptables admite una amplia gama de opciones. Algunos comunes incluyen:

Opción Descripción
-Un -append Agrega una regla al final de una cadena específica
-D -delete Elimina una regla de la cadena especificada
-F -flush Elimina todas las reglas, una a la vez
-List list Muestra todas las reglas en la cadena especificada
-I -sert Inserta una regla en la cadena especificada (aprobada como un número, cuando no hay un número especificado; la regla se agrega en la parte superior)
-C -check Consultas para una regla coincidencia; requisito en una regla específica
-V -verboso Muestra más detalles cuando se usa con el parámetro -l
-N -New cadena Agrega una nueva cadena definida por el usuario
-X -cadena Elimina una cadena específica definida por el usuario

Mesas iptables

El kernel de Linux tiene tablas predeterminadas que albergan un conjunto de reglas relacionadas. Estas tablas predeterminadas tienen un conjunto de cadenas predeterminadas, pero los usuarios pueden personalizar las reglas agregando reglas definidas por el usuario.

NOTA: Las tablas predeterminadas dependerán en gran medida de la configuración de su núcleo y los módulos instalados.

Aquí están las tablas IpTables predeterminadas:

1: las tablas de filtro

La tabla del filtro es una tabla predeterminada que contiene cadenas utilizadas para el filtrado de paquetes de red. Algunas de las cadenas predeterminadas en esta tabla incluyen:

Cadena Descripción
Aporte Iptables usa esta cadena para cualquier paquete entrante al sistema, yo.mi., paquetes que van a los enchufes de red locales.
Producción Iptables usa la cadena de salida para paquetes generados localmente, yo.mi., paquetes que salen del sistema.
Adelante Esta cadena es lo que usan los iptables para paquetes enrutados o reenviados a través del sistema.

2: las tablas Nat

La tabla de direcciones de NAT o de red es un dispositivo de enrutamiento utilizado para modificar las direcciones IP de origen y de destino en un paquete de red. El uso principal de la tabla NAT es conectar dos redes en un rango de direcciones privadas con la red pública.

NAT fue desarrollado para admitir enmascarar direcciones IP reales, permitiendo que los rangos de direcciones IP privadas lleguen a la red externa. Esto ayuda a proteger los detalles sobre las redes internas de ser reveladas en las redes públicas.

La tabla NAT se emplea cuando un paquete inicia una nueva conexión.

IPTables tienen una tabla predeterminada para la dirección NAT. Esta tabla tiene tres cadenas principales:

Cadena Descripción
Preliminar Permite la modificación de la información del paquete antes de llegar a la cadena de entrada utilizada para paquetes entrantes
PRODUCCIÓN Reservado para paquetes creados localmente, yo.mi., Antes de que ocurra el enrutamiento de la red
Postratería Permite la modificación de paquetes salientes: paquetes que salen de la cadena de salida

El siguiente diagrama muestra una descripción general de alto nivel de este proceso.

Use el comando a continuación para ver sus tablas de enrutamiento NAT.

iptables -t nat -n -v -l

3: las mesas de mangle

La tabla Mangle se usa principalmente para una modificación especial de paquetes. En términos simples, se utiliza para modificar los encabezados IP de un paquete de red. La modificación de los paquetes puede incluir cambiar un valor TTL del paquete, cambiar los lúpulos de red válidos para un paquete, etc.

La tabla contiene las siguientes cadenas predeterminadas:

Cadena Descripción
Preliminar Reservado para paquetes entrantes
Postratería Se utiliza para paquetes de salida
APORTE Utilizado para paquetes que entran directamente al servidor
PRODUCCIÓN Utilizado para paquetes locales
Adelante Reservado para paquetes enrutados a través del sistema

4: las mesas crudas

El objetivo principal de la tabla sin procesar es configurar excepciones para paquetes que no están destinados a ser manejados por el sistema de seguimiento. La mesa sin procesar establece una marca de no rack en los paquetes, lo que solicita a la función Conntrack para ignorar el paquete.

Conntrack es una función de red de netos de kernel de Linux que permite que el kernel de Linux rastree todas las conexiones de red, lo que permite que el núcleo identifique los paquetes que constituyen un flujo de red.

La mesa cruda tiene dos cadenas principales:

Cadena Descripción
Preliminar Reservado para paquetes recibidos por interfaces de red
PRODUCCIÓN Reservado para paquetes iniciados por procesos locales

5: La tabla de seguridad

El uso principal de esta tabla es establecer la mejora de la seguridad interna para el mecanismo de seguridad de Linux (Selinux) que marca los paquetes. La marca de seguridad puede aplicarse por conexión o paquete.

Se utiliza para reglas de control de acceso obligatorias y es la segunda tabla a la que se accede después de la tabla de filtro. Ofrece las siguientes cadenas predeterminadas:

Cadena Descripción
APORTE Reservado para paquetes entrantes al sistema
PRODUCCIÓN Utilizado para paquetes creados localmente
ADELANTE Utilizado para paquetes enrutados a través del sistema

Habiendo visto los iptables predeterminados, vamos un paso más allá y discutamos cómo trabajar con las reglas de iptables.

Cómo trabajar con las reglas iptables?

Las reglas iptables se aplican en orden ascendente. Esto significa que la primera regla en un conjunto específico se aplica primero, seguido por el segundo, luego tercero, y así sucesivamente, hasta el último.

Debido a esta función, los iptables le impiden agregar reglas en un conjunto utilizando el parámetro -a; Debe usar el -i, seguido del número o vaciándolo para agregar a la parte superior de la lista.

Mostrando iptables

Para ver sus iptables, use el comando iptable -l -v para ipv4 e ip6tables -l -v para ipv6.

Insertar reglas

Para insertar reglas en un conjunto, debe colocarlas en el orden exacto, respetando las reglas utilizadas por la misma cadena. Puede ver la lista de sus reglas iptables con el comando como se discutió anteriormente:

sudo iptables -l -v

Por ejemplo, para insertar una regla que permita conexiones entrantes al puerto 9001 sobre TCP, necesitamos especificar el número de regla en la cadena de entrada que adhiere a las reglas de tráfico para la web.

sudo iptables -i entrada 1 -p tcp --dport 9001 -m state - -state new -j aceptar

Una vez que vea los iptables actuales, debería ver la nueva regla en el conjunto.

sudo iptables -l -v

Reemplazo de reglas

La funcionalidad de reemplazo funciona de manera similar a insertar, sin embargo, utiliza el comando iptables -r. Por ejemplo, para modificar la regla anterior y establecer el puerto 9001 para negar, nosotros:

sudo iptables -r entrada 1 -p tcp --dport 9001 -m state - -state new -j rechazar

Eliminar una regla

Para eliminar una regla, pasamos el número de regla. Por ejemplo, para eliminar la regla anterior, podemos especificar como:

sudo iptables -d entrada 1

En la mayoría de las distribuciones de Linux, los iptables están vacíos para IPv4 e IPv6. Por lo tanto, si no ha agregado ninguna regla nueva, obtendrá una salida similar a la que se muestra a continuación. Eso es arriesgado porque significa que el sistema está permitiendo todo el tráfico entrante, saliente y enrutado.

Vamos a meter en cómo configurar iptables:

Cómo configurar iptables?

Existen numerosas formas de configurar las reglas iptables. Esta sección utiliza ejemplos para mostrarle cómo establecer reglas utilizando direcciones IP y puertos.

Bloqueando y permitiendo el tráfico por puertos

Puede usar un puerto específico para bloquear o permitir todo el tráfico en una interfaz de red. Considere los siguientes ejemplos:

sudo iptables -a entrada -j Aceptación -p TCP - -Destination -Port 1001 -I Wlan0

Los comandos anteriores permiten el tráfico en el puerto 1001 TCP en la interfaz WLAN0.

sudo iptables -a entrada -j drop -p tcp --destination -port 1001 -i wlan0

Este comando hace lo opuesto al comando anterior, ya que bloquea todo el tráfico en el puerto 1001 en wlan0.

Aquí hay una inspección cercana del comando:

  • El primer argumento (-a) agrega una nueva regla al final de la cadena de la tabla.
  • El argumento de entrada agrega la regla especificada a la tabla.
  • El argumento de caída establece la acción que se realizará como aceptación y caída, respectivamente. Esto significa que una vez que se combina un paquete, se deja caer.
  • -P especifica el protocolo como TCP y permite que pase el tráfico en otros protocolos.
  • -El puerto de destino establece la regla para aceptar o soltar todo el tráfico destinado al puerto 1001.
  • -Le digo a iptables que aplique la regla al tráfico que llega a la interfaz WLAN0.

NOTA: Los iptables no entienden los alias de interfaz de red. Por lo tanto, en un sistema con más de una interfaz virtual, deberá definir la dirección de destino de manera manual y explícita.

Por ejemplo:

sudo iptables -a entrada -j drop -p tcp --destination -port 1001 -i wlan0 -d 192.168.0.24

Direcciones IP de lista blanca y lista negra

Puedes crear reglas de firewall usando iptables. Un ejemplo es detener todo el tráfico y permitir el tráfico de red de las direcciones IP explícitas solo.

Ejemplo:

iptables -A input -m State -Estado establecido, relacionado -j Aceptar
iptable -a entrada -i lo -m comentario -comment "permitir conexiones de bucleback" -j aceptar
iptables -a entrada -p icmp -m comentario -comment "Permitir que el ping funcione como se esperaba" -J

ACEPTAR

iptables -A entrada -s 192.168.0.1/24 -J aceptar
iptables -A entrada -s 192.168.0.0 -J aceptar
iptables -p entrada de entrada
iptables -p delantero

La primera línea establece una regla para permitir todas las direcciones IP de origen en el 192.168.0.Subred 1/24. También puede usar CIDR o direcciones IP individuales. En el siguiente comando, establecemos la regla para permitir todo el tráfico conectado a las conexiones existentes. En los comandos finales, establecemos una política de entrada y reenvío para soltar todo.

Usando iptables en IPv6

El comando iptables solo funciona en IPv4. Para usar iptables en IPv6, debe usar el comando ip6tables. IP6Tables utiliza tablas de raw, filtro, seguridad y mangle. La sintaxis general para IP6Table es similar a iptables, y también admite opciones de iptables coincidentes como append, eliminación, etc.

Considere usar las páginas del manual IP6Table para obtener más información.

Ejemplo de conjuntos de reglas iptables para la seguridad de la red

La creación de reglas de firewall adecuadas dependerá principalmente del servicio que se ejecute en un sistema y los puertos en uso. Sin embargo, aquí hay algunas reglas básicas de configuración de red que puede usar para asegurar su sistema:

1: Permitir el tráfico de la interfaz de bucle invertido y rechazar todo lowback que proviene de otras interfaces

iptables -a entrada -i lo -j acepta (también puede usar IP6Table)
iptables -Un entrada ! -i lo -s 127.0.0.0 -J Rechazado (IP6Table también aplicable)

2: Denga todas las solicitudes de ping

iptables -a input -p icmp -m state - -state new --icmp -type 8 -j rechazado

3: Permitir conexiones SSH

iptables -a entrada -p tcp --dport 22 -m state - -state new -j aceptar

Estos son comandos de ejemplo que puede usar para asegurar su sistema. Sin embargo, la configuración dependerá en gran medida de qué o a quién desee acceder a varios servicios.

PRECAUCIÓN: Si prefiere deshabilitar IPv6 por completo, asegúrese de desencadenar la línea, ya que esto ralentizará el proceso de actualización:

Precedencia :: FFFF: 0: 0/96 100 encontrado en/etc/gai.confusión .

Eso se debe a que el Administrador de paquetes APT resuelve el dominio Mirror en IPv6 debido a la actualización de apt-get.

Cómo implementar reglas iptables?

Para implementar sus iptables en Ubuntu u otros sistemas basados ​​en Debian, comience creando dos archivos, IP4 e IP6, para sus respectivas direcciones IP.

En cualquier archivo, agregue las reglas que desea hacer cumplir en sus reglas de archivos-IPV4 correspondientes a el archivo IP4 y las reglas IPv6 al archivo IP6.

A continuación, necesitamos importar las reglas utilizando el comando:

sudo iptables-restaur < /tmp/ip4 (replace filename for IPv6)

Luego, puede verificar si las reglas se han aplicado usando el comando:

sudo iptables -l -v

Una guía rápida iptable-persegra

Ubuntu, y las distribuciones comunes basadas en Debian, vienen con un paquete ippersistente ippersistente que le permite aplicar sus reglas de firewall fácilmente al reiniciar. El paquete proporciona archivos que puede usar para establecer reglas para IPv4 o IPv6 y se puede aplicar automáticamente al arranque.

También puede usar reglas de firewall usando UFW o GUFW. Considere el siguiente tutorial para aprender a usar UFW.

Cómo instalar iTable-Persistent?

Asegúrese de tener IpTable-Persistent instalado en su sistema. Use DPKG para verificar si tiene el paquete instalado.

Si no, usa el siguiente comando:

sudo apt-get install iPtables-Persistent

Se le solicitará dos veces para guardar sus reglas actuales de IPv4 e IPv6. Haga clic en Sí para guardar ambas reglas.

Haga clic en Sí para guardar IPv6.

Una vez que se complete la instalación, verifique que tenga el subdirectorio iptable, como se muestra en la imagen a continuación.

Ahora puedes usar las reglas.V4 y reglas.V6 para agregar reglas iptables, y se aplicarán automáticamente por ippersistente. Los archivos son archivos de texto simples que puede editar fácilmente utilizando cualquier editor de texto de su elección.

Conclusión

En este tutorial, hemos cubierto los conceptos básicos de iptables. Comenzando con el trabajo con iptables, comandos básicos, tablas iptables predeterminadas y parámetros.

Por lo que ha aprendido, debe estar en condiciones de usar iptables para crear reglas de firewall que ayuden a asegurar su sistema.