Iptables es un firewall de línea de comandos que filtra los paquetes de acuerdo con las reglas definidas. Con iptables, los usuarios pueden aceptar, rechazar o las conexiones hacia adelante; Es increíblemente versátil y ampliamente utilizado a pesar de ser reemplazado por Nftables.
Después de leer este tutorial, comprenderá las políticas de iptables y definirá las reglas iptables para proteger su red doméstica.
Nota: se agregó el comando sudo para los lectores que necesitan copiar las reglas mencionadas en este tutorial de iptables.
Glosario de iptables:
OBJETIVO: Cuando se usa iptables, un objetivo es una acción que desea que se apliquen iptables cuando un paquete coincide con una regla.
CADENA: Una cadena es una lista de reglas; Las cadenas incorporadas disponibles son: Entrada, salida, avance, previa y postratrización.
MESA: Las tablas son características iptables para cada propósito. Por ejemplo, hay una tabla para tareas de enrutamiento y otra tabla para tareas de filtrado; Cada tabla contiene cadenas de reglas.
Las tablas disponibles son filtro, nat, bruto, seguridad y mangle. Cada tabla contiene cadenas incorporadas (regla). La siguiente lista muestra qué cadenas incluyen cada tabla:
FILTRAR | APORTE | PRODUCCIÓN | ADELANTE | ||
---|---|---|---|---|---|
Nat | Preliminar | Postratería | PRODUCCIÓN | ||
CRUDO | Preliminar | PRODUCCIÓN | |||
MUTILAR | Preliminar | Postratería | PRODUCCIÓN | APORTE | ADELANTE |
SEGURIDAD | APORTE | PRODUCCIÓN | ADELANTE |
Dependiendo de la acción que desee que haga iptables, debe especificar una tabla usando la opción -t seguida del nombre de la tabla. En este tutorial, la opción -t no se usa. Este tutorial se centra en fines de filtrado utilizando la tabla de filtro aplicada de forma predeterminada cuando la opción no se pasa. Mientras lee este tutorial, aprenderá algunos de los conceptos mencionados anteriormente.
Cómo instalar:
Para instalar iPtables en Debian y sus distribuciones Linux basadas en ejecución:
sudo apt instalación iptable -y
Antes de instalar iptables en distribuciones de Linux basadas en Redhat, debe deshabilitar Firewalld ejecutando:
sudo systemctl stop firewalld
sudo systemctl deshabilitar firewalld
SUDO SYSTEMCTL MASK --NOW Firewalld
Luego instale iptables ejecutando:
sudo yum instalación iptables-services
sudo systemctl iniciar iptables
SUDO SystemCTL Start IP6Table
sudo systemctl habilita iptables
sudo SystemCTL Habilitar IP6Table
SUDO SystemCTL Start IP6Table
Comenzando con iptables:
Antes de comenzar, verifique las reglas anteriores instruyendo a IPTables para enumerar las políticas y reglas existentes utilizando el parámetro -l (-list).
sudo iptables -l
La salida anterior muestra 3 filas: Entrada de cadena, cadena hacia adelante y salida de cadena. Dónde APORTE se refiere a políticas con respecto al tráfico entrante, PRODUCCIÓN se refiere a las políticas aplicadas al tráfico saliente, y ADELANTE se refiere a las políticas de enrutamiento.
La salida también muestra que no hay reglas definidas, y todas las políticas definidas son aceptadas.
Hay 3 tipos de políticas: Aceptar, rechazar y soltar.
La política ACEPTAR permite conexiones; La política RECHAZAR Rechaza las conexiones que devuelven un error; La política GOTA Rechaza las conexiones sin producir errores.
Cuando usas GOTA, UDP Los paquetes se dejan caer y el comportamiento será el mismo que conectarse a un puerto sin servicio. TCP Los paquetes devolverán un ACK/RST, cuál es la misma respuesta que un puerto abierto sin servicio responderá con. Cuando usas RECHAZAR, Un paquete ICMP devuelve el destino de destino al host de origen.
Cuando tratas con iptables, primero debes definir las tres políticas para cada cadena; Después de eso, puede agregar excepciones y especificaciones. Agregar políticas se ve así:
sudo iptables -p entrada
SUDO IPTables -P Salida
sudo iptables -p adelante
Iptables Políticas permisivas y restrictivas:
Puede aplicar iptables con una política permisiva aceptando todas las conexiones entrantes, excepto por estas que elimine o rechazó específicamente. En este caso, cada conexión está permitida a menos que defina una regla para rechazarla específicamente.
Por el contrario, las políticas restrictivas rechazan todas las conexiones, excepto por estas que acepta específicamente. En este caso, cada conexión se rechaza a menos que defina una regla para aceptarla.
Aplicar una política restrictiva con iptables:
El siguiente ejemplo muestra cómo aplicar una política restrictiva con iptables eliminando todo el tráfico entrante, excepto el permitido.
Bloqueando el tráfico entrante.
IMPORTANTE: Aplicar las siguientes 3 reglas puede dejarlo sin conexión a Internet. Usando las reglas mencionadas en "Iptables Añadir reglas y estados iptables", agrega las excepciones necesarias para restaurar su acceso a Internet. Puede ejecutar constantemente sudo iptables -f para descargar reglas.
Puede bloquear todo el tráfico entrante, permitiendo solo el tráfico saliente para navegar por la web y para las aplicaciones que necesita.
sudo iptables -p entrada de entrada
sudo iptables -p salida aceptar
sudo iptables -p delantero
Dónde:
-P = Política
sudo iptables -p entrada de entrada: instruir a iptables que rechace todo el tráfico entrante sin responder a la fuente.
sudo iptables -p salida aceptar: define una política de aceptación para el tráfico saliente.
sudo iptables -p delantero: instruye a iptables que no ejecute tareas de enrutamiento que dejen caer todos los paquetes destinados a un host diferente (tratando de pasar a través del dispositivo de firewalled) sin respuesta.
El ejemplo anterior permite navegar por la web y las conexiones iniciadas por el dispositivo local (-P Útil aceptado) pero evitará que las conexiones iniciadas por otro host (-P caída de entrada) Al igual que SSH intenta acceder a su dispositivo, no devuelva los mensajes de error.
Cuando habilita iptables con una política restrictiva como en el ejemplo anterior, debe agregar reglas para ajustar su configuración. Por ejemplo, si mantiene la configuración mencionada anteriormente sin agregar una excepción razonable para la interfaz Loopback (LO), algunas aplicaciones pueden no funcionar correctamente. También deberá permitir que el tráfico entrante perteneciente o relacionado con una conexión iniciada por su dispositivo.
Iptables Añadir reglas y estados de iptables
Es esencial entender que iptables aplica reglas por orden. Cuando define una regla después de una regla anterior, la segunda regla reescribirá la última si un paquete coincide con la misma regla.
Me gusta el ejemplo anterior; Bloqueó todo el tráfico entrante, debe agregar excepciones para la interfaz de loopback; Esto se puede lograr agregando el parámetro -a (append).
sudo iptable -a entrada -m conntrack -ctstate establecido, relacionado -j aceptar
sudo iptables -a salida -m conntrack -ctstate establecido -j aceptar
El módulo (-m) conntrack -ctstate Establecido, relacionado instruye a iptables para confirmar si el estado de conexión es Establecido o relacionado a una conexión existente antes de aplicar la política de regla definida.
Hay 4 posibles estados que los Iptables pueden verificar:
Iptables state nuevo: El paquete o el tráfico que permite o bloquea los intentos de iniciar una nueva conexión.
Estado de iptables establecido: El paquete o el tráfico que permite o bloquea es parte de una conexión establecida.
Itable State Related: El paquete o el tráfico inician una nueva conexión, pero está relacionado con una conexión existente.
ITable State Inválido: El paquete o el tráfico es desconocido sin el estado.
La primera línea del ejemplo anterior instruye a iptables que acepte paquetes entrantes del tráfico que viene o se relacionan con las conexiones iniciadas por su dispositivo. La segunda línea indica que iptables acepta solo el tráfico saliente de las conexiones ya establecidas.
IPTable Añadir para aceptar el tráfico de bucle y la definición de interfaces:
La interfaz de loopback es utilizada por programas que necesitan interactuar con el localhost. Si no permite el tráfico de loopback, algunas aplicaciones pueden no funcionar.
El siguiente comando permite conexiones de bucle de bucle:
sudo iptables -A entrada -i lo -j aceptar
sudo iptables -a salida -o lo -j aceptar
Donde -i y -o se utilizan para especificar el dispositivo de red para el tráfico entrante (-i) y el tráfico saliente (-o).
Aplicar una política permisiva con iptables:
También puede definir una política permisiva que permita todo el tráfico, excepto el especificado caído o rechazado. Puede habilitar todo excepto un rango de IP o IP específico, o puede rechazar paquetes en función de sus encabezados, entre más posibilidades.
El siguiente ejemplo muestra cómo aplicar una política permisiva que permite todo el tráfico, excepto para un rango de IP bloqueado para el servicio SSH.
sudo iptables -p entrada de entrada aceptado
sudo iptables -p salida aceptar
sudo iptables -p delantero
sudo iptables -a entrada -p tcp --dport 22 -m ipprange - -src -range 192.168.1.100-192.168.1.110 -J rechazado
El ejemplo anterior aplica una política permisiva, pero bloquea el acceso SSH a todos los IP que pertenecen al rango de 192.168.1.100 y 192.168.1.110.
Donde -p especifica el protocolo, -dport (o -destination -puerto) El puerto de destino (22, SSH) y el módulo iPrange con el argumento -src -range (rango de fuente) permite definir el rango de IP. La opción -j (-jump) instruye a iptables qué hacer con el paquete; En este caso, representamos rechazo.
Bloqueo de puertos con iptables
El siguiente ejemplo muestra cómo bloquear un puerto específico para todas las conexiones, el puerto SSH.
sudo iptables -a entrada -p TCP - -Destination -Port 22 -J Drop
Guardar cambios iptables
Las reglas de iptables no son persistentes; Después de reiniciar, las reglas no serán restauradas. Para que sus reglas sean persistentes, ejecute los siguientes comandos donde la primera línea guarde las reglas en el archivo /etc /iptables.arriba.reglas, y la segunda línea es crear el archivo para que los iptables se inicien después de reiniciar.
sudo iptables-save> /etc /iptables.arriba.normas
nano/etc/network/if-prep-up.d/iptables
Agregue lo siguiente al archivo y cierre los cambios de guardado (CTRL+X).
#!/bin/sh
/sbin/iptables-restaur < /etc/iptables.up.rules
Finalmente, proporcione los permisos de ejecución del archivo ejecutando:
chmod +x/etc/network/if-prep-up.d/iptables
Flushing o eliminación de reglas iptables:
Puede eliminar todas sus reglas iptables ejecutando el siguiente comando:
sudo iptables -f
Para eliminar una cadena específica como la entrada, puede ejecutar:
sudo iptables -f
Conclusión:
Los iptables se encuentran entre los firewalls más sofisticados y flexibles del mercado. A pesar de ser reemplazado, sigue siendo uno de los software defensivo y de enrutamiento más extendido.
Los nuevos usuarios de Linux pueden aprender rápidamente su implementación con conocimientos básicos de TCP/IP. Una vez que los usuarios entienden la sintaxis, la definición de las reglas se convierte en una tarea fácil.
Hay muchos más módulos y opciones adicionales que no fueron cubiertas por este tutorial introductivo. Puedes ver más ejemplos iptables en iptables para principiantes.
Espero que este tutorial de iptables haya sido útil. Siga siguiendo la pista de Linux para obtener más consejos y tutoriales de Linux.