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.
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:
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.