iptables

Ubuntu Iptables Cómo controlar el tráfico de red usando iptables?

Ubuntu Iptables Cómo controlar el tráfico de red usando iptables?
"… A Utilidad Unix de espacio de usuario que brinda a los administradores del sistema la capacidad de configurar reglas de filtrado de paquetes IP implementadas por el módulo de filtro de red del Kernel." Iptables actúa como un cortafuegos 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 las reglas de iptables en un sistema Ubuntu para proteger 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.

Iptables viene preinstalado en Ubuntu y la mayoría de las distribuciones basadas en Debian. Ubuntu también incluye el cortafuegos GUFW, una alternativa gráfica que puede utilizar para trabajar con iptables.

NOTA: Para usar y configurar iptables, necesitará privilegios sudo en su sistema. Puede obtener más información sobre sudo en el 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 gestión de tráfico y red IPv4, debe comprender lo siguiente:

El comando Iptables

Iptables ofrece una selección de opciones que le permiten personalizar y ajustar sus reglas de iptables. Analicemos 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 de iptables.

Parámetros de iptables

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

Considere el siguiente comando:

sudo iptables -I ENTRADA -s 192.168.0.24 -j GOTA

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

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

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

Parámetro de regla iptables Descripción
-s -source Especifique la fuente, que puede ser una dirección, un nombre de host o un nombre de red.
-p -protocolo Especifica el protocolo de conexión; por ejemplo, TCP, UDP, etc.
-d-destino Especifica el destino, que puede ser una dirección, un nombre de red o un nombre de host.
-j-salto Establece la acción que llevará a cabo iptables después de encontrar un paquete.
-o -out-interfaz Establece la interfaz a través de la cual iptable envía el paquete.
-i -in-interfaz Establece la interfaz utilizada para establecer paquetes de red.
-c -set-counters Permite al administrador configurar los contadores de bytes y paquetes para una regla específica.
-g -goto cadena El parámetro especifica que el procesamiento debe continuar en la cadena establecida por el usuario al regresar.
-f -fragmento Le dice a iptables que aplique la regla solo al segundo y 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
-A -anexar Agrega una regla al final de una cadena especificada
-D-borrar Elimina una regla de la cadena especificada
-F-enjuague Elimina todas las reglas, una a la vez
-L-lista Muestra todas las reglas de la cadena especificada
-Yo -insertar Inserta una regla en la cadena especificada (se pasa como un número, cuando no hay ningún número especificado; la regla se agrega en la parte superior)
-C -comprobar Consultas para una coincidencia de reglas; requisito en una regla especificada
-v -verbose Muestra más detalles cuando se usa con el parámetro -L
-N-cadena nueva Agrega una nueva cadena definida por el usuario
-X -delete-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 Kernel y los módulos instalados.

Aquí están las tablas de iptables predeterminadas:

1: Las tablas de filtros

La tabla de filtros es una tabla predeterminada que contiene cadenas que se utilizan 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 sockets de la red local.
Producción Iptables usa la cadena de salida para paquetes generados localmente, yo.mi., paquetes que salen del sistema.
Hacia adelante Esta cadena es la que utilizan los Iptables para los paquetes enrutados o reenviados a través del sistema.

2: Las tablas NAT

La tabla de direcciones de red o NAT es un dispositivo de enrutamiento que se utiliza para modificar las direcciones IP de origen y 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 se desarrolló para admitir el enmascaramiento de direcciones IP reales, lo que permite que los rangos de direcciones IP privadas no lleguen a la red externa. Esto ayuda a proteger los detalles sobre las redes internas para que no se revelen en redes públicas.

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

Los iptables tienen una tabla predeterminada para el direccionamiento NAT. Esta tabla tiene tres cadenas principales:

Cadena Descripción
PREROUTING Permite la modificación de la información del paquete antes de que llegue a la cadena INPUT; se usa para los paquetes entrantes
PRODUCCIÓN Reservado para paquetes creados localmente, i.mi., antes de que ocurra el enrutamiento de la red
POSTROUTING 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.

Utilice el siguiente comando para ver sus tablas de enrutamiento NAT.

iptables -t nat -n -v -L

3: Las tablas de Mangle

La tabla mangle se utiliza principalmente para modificaciones especiales de paquetes. En términos simples, se utiliza para modificar los encabezados IP de un paquete de red. La modificación de paquetes puede incluir cambiar un valor TTL del paquete, cambiar los saltos de red válidos para un paquete, etc.

La tabla contiene las siguientes cadenas predeterminadas:

Cadena Descripción
PREROUTING Reservado para paquetes entrantes
POSTROUTING Utilizado para paquetes salientes
APORTE Se utiliza para paquetes que llegan directamente al servidor
PRODUCCIÓN Usado para paquetes locales
Hacia adelante Reservado para paquetes enrutados a través del sistema

4: Las tablas crudas

El propósito 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 tabla sin procesar establece una marca NOTRACK en los paquetes, lo que solicita a la función conntrack que ignore el paquete.

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

La mesa cruda tiene dos cadenas principales:

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

5: La mesa de seguridad

El uso principal de esta tabla es configurar el mecanismo de seguridad interno de Mejora de seguridad para Linux (SELinux) que marca los paquetes. La marca de seguridad se puede aplicar por conexión o paquete.

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

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

Habiendo examinado los Iptables predeterminados, vayamos un paso más allá y analicemos cómo trabajar con las reglas de iptables.

Cómo trabajar con reglas de iptables?

Las reglas de iptables se aplican en orden ascendente. Esto significa que la primera regla de un conjunto específico se aplica primero, seguida de la segunda, luego la tercera, y así sucesivamente, hasta la última.

Debido a esta función, iptables le impide agregar reglas en un conjunto usando el parámetro -A; debe usar el -I, seguido del número o vaciarlo para agregarlo a la parte superior de la lista.

Visualización de Iptables

Para ver sus iptables, use el comando iptables -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 de 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 a través de TCP, necesitamos especificar el número de regla en la cadena INPUT que se adhiere a las reglas de tráfico para la web.

sudo iptables -I INPUT 1 -p TCP --dport 9001 -m state --state NEW -j ACCEPT

Una vez que vea las 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 la inserción, sin embargo, usa el comando iptables -R. Por ejemplo, para modificar la regla anterior y configurar el puerto 9001 para denegar, nosotros:

sudo iptables -R INPUT 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, las iptables están vacías para IPv4 e IPv6. Por lo tanto, si no ha agregado ninguna regla nueva, obtendrá un resultado similar al que se muestra a continuación. Eso es arriesgado porque significa que el sistema está permitiendo todo el tráfico entrante, saliente y enrutado.

Veamos cómo configurar iptables:

Cómo configurar iptables?

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

Bloquear y permitir 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 INPUT -j ACCEPT -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 INPUT -j DROP -p TCP --destination-port 1001 -i wlan0

Este comando hace lo contrario del comando anterior ya que bloquea todo el tráfico en el puerto 1001 en wlan0.

Aquí hay una inspección detallada del comando:

NOTA: Iptables no entiende 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 forma manual y explícita.

Por ejemplo:

sudo iptables -A INPUT -j DROP -p TCP --destination-port 1001 -i wlan0 -d 192.168.0.24

Incluir direcciones IP en listas blancas y negras

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

Ejemplo:

iptables -A ENTRADA -m estado --estado ESTABLECIDO, RELACIONADO -j ACEPTAR
iptables -A INPUT -i lo -m comentario --comentario "Permitir conexiones de bucle invertido" -j ACEPTAR
iptables -A INPUT -p icmp -m comentario - comentario "Permitir que 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 CAIDA DE ENTRADA
iptables -P DROP ADELANTE

La primera línea establece una regla para permitir todas las direcciones IP de origen en el 192.168.0.1/24 subred. También puede utilizar CIDR o direcciones IP individuales. En el siguiente comando, configuramos la regla para permitir todo el tráfico conectado a las conexiones existentes. En los comandos finales, establecemos una política para INPUT y FORWARD para eliminar todos.

Usando iptables en IPv6

El comando iptables solo funciona en IPv4. Para usar iptables en IPv6, debe usar el comando ip6tables. Ip6tables usa tablas raw, filter, security y mangle. La sintaxis general de ip6tables es similar a la de iptables, y también admite opciones de iptables coincidentes como agregar, eliminar, etc.

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

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

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

1: Permita el tráfico de la interfaz Loopback y rechace todos los loopback provenientes de otras interfaces

iptables -A INPUT -i lo -j ACCEPT (También puede usar ip6tables)
iptables -A ENTRADA ! -yo lo -s 127.0.0.0 -j REJECT (ip6tables también aplicable)

2: rechazar todas las solicitudes de ping

iptables -A ENTRADA -p icmp -m estado --state NUEVO --icmp-type 8 -j RECHAZO

3: Permitir conexiones SSH

iptables -A ENTRADA -p tcp --dport 22 -m estado --state NUEVO -j ACEPTAR

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

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

precedence :: ffff: 0: 0/96 100 encontrado en / etc / gai.conf .

Eso es porque el administrador de paquetes APT resuelve el dominio espejo en IPv6 debido a apt-get update.

Cómo implementar reglas de 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 cualquiera de los archivos, agregue las reglas que desea aplicar en sus archivos correspondientes: reglas IPv4 al archivo ip4 y reglas IPv6 al archivo ip6.

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

sudo iptables-restore < /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 persistente de iptables

Ubuntu, y las distribuciones comunes basadas en Debian, vienen con un paquete persistente de iptables 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 pueden aplicar automáticamente al arrancar.

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

Cómo instalar iptables-persistent?

Asegúrese de tener iptables-persistent instalado en su sistema. Use dpkg para verificar si tiene el paquete instalado.

Si no es así, use el siguiente comando:

sudo apt-get install iptables-persistent

Se le pedirá dos veces que guarde 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 tiene el subdirectorio iptables, como se muestra en la imagen a continuación.

Ahora puedes usar las reglas.v4 y reglas.v6 para agregar reglas de iptables, y serán aplicadas automáticamente por iptables-persistent. Los archivos son archivos de texto simples que puede editar fácilmente con cualquier editor de texto de su elección.

Conclusión

En este tutorial, hemos cubierto los conceptos básicos de iptables. Empezando por trabajar con iptables, comandos básicos, tablas de iptables predeterminadas y parámetros.

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

5 mejores juegos de arcade para Linux
Hoy en día, las computadoras son máquinas serias que se usan para jugar. Si no puede obtener la nueva puntuación más alta, sabrá a qué me refiero. En ...
Batalla por Wesnoth 1.13.6 Desarrollo liberado
Batalla por Wesnoth 1.13.6 lanzado el mes pasado, es el sexto lanzamiento de desarrollo en el 1.13.x y ofrece una serie de mejoras, sobre todo en la i...
Cómo instalar League Of Legends en Ubuntu 14.04
Si eres fanático de League of Legends, esta es una oportunidad para que pruebes League of Legends. Tenga en cuenta que LOL es compatible con PlayOnLin...