GNU/Linux >> Tutoriales Linux >  >> Linux

Los 25 ejemplos de reglas de IPTables de Linux más utilizados

A primera vista, las reglas de IPTables pueden parecer crípticas.

En este artículo, proporcioné 25 reglas prácticas de IPTables que puede copiar/pegar y usar según sus necesidades.

Estos ejemplos actuarán como plantillas básicas para que modifique estas reglas para satisfacer sus requisitos específicos.

Para una fácil referencia, todas estas 25 reglas de iptables están en formato de script de shell:iptables-rules

1. Eliminar reglas existentes

Antes de comenzar a crear un nuevo conjunto de reglas, es posible que desee limpiar todas las reglas predeterminadas y las reglas existentes. Use el comando iptables flush como se muestra a continuación para hacer esto.

iptables -F
(or)
iptables --flush

2. Establecer políticas de cadena predeterminadas

La política de cadena predeterminada es ACEPTAR. Cambie esto a DROP para todas las cadenas INPUT, FORWARD y OUTPUT como se muestra a continuación.

iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP

Cuando establece la política predeterminada de la cadena de ENTRADA y SALIDA como DROP, para cada requisito de regla de firewall que tenga, debe definir dos reglas. es decir, uno para entrantes y otro para salientes.

En todos nuestros ejemplos a continuación, tenemos dos reglas para cada escenario, ya que hemos establecido DROP como política predeterminada para la cadena de ENTRADA y SALIDA.

Si confía en sus usuarios internos, puede omitir la última línea anterior. es decir, no DROP todos los paquetes salientes de forma predeterminada. En ese caso, para cada requisito de regla de firewall que tenga, solo tiene que definir una sola regla. es decir, defina la regla solo para los paquetes entrantes, ya que los salientes son ACEPTAR para todos los paquetes.

Nota: Si no sabe lo que significa una cadena, primero debe familiarizarse con los fundamentos de IPTables.

3. Bloquear una dirección IP específica

Antes de continuar con otros ejemplos, si desea bloquear una dirección IP específica, debe hacerlo primero como se muestra a continuación. Cambie "x.x.x.x" en el siguiente ejemplo a la dirección IP específica que desea bloquear.

BLOCK_THIS_IP="x.x.x.x"
iptables -A INPUT -s "$BLOCK_THIS_IP" -j DROP

Esto es útil cuando encuentra algunas actividades extrañas de una dirección IP específica en sus archivos de registro y desea bloquear temporalmente esa dirección IP mientras investiga más.

También puede usar una de las siguientes variaciones, que bloquea solo el tráfico TCP en la conexión eth0 para esta dirección IP.

iptables -A INPUT -i eth0 -s "$BLOCK_THIS_IP" -j DROP
iptables -A INPUT -i eth0 -p tcp -s "$BLOCK_THIS_IP" -j DROP

4. Permitir TODO SSH entrante

Las siguientes reglas permiten TODAS las conexiones ssh entrantes en la interfaz eth0.

iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT

Nota :Si quieres entender exactamente qué significan todos y cada uno de los argumentos, deberías leer Cómo agregar reglas de firewall de IPTables

5. Permitir SSH entrante solo desde una red específica

Las siguientes reglas permiten conexiones ssh entrantes solo desde la red 192.168.100.X.

iptables -A INPUT -i eth0 -p tcp -s 192.168.100.0/24 --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT

En el ejemplo anterior, en lugar de /24, también puede usar la máscara de subred completa. es decir, "192.168.100.0/255.255.255.0".

6. Permitir HTTP y HTTPS entrantes

Las siguientes reglas permiten todo el tráfico web entrante. es decir, tráfico HTTP al puerto 80.

iptables -A INPUT -i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT

Las siguientes reglas permiten todo el tráfico web seguro entrante. es decir, tráfico HTTPS al puerto 443.

iptables -A INPUT -i eth0 -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 443 -m state --state ESTABLISHED -j ACCEPT

7. Combine varias reglas juntas usando MultiPorts

Cuando permite conexiones entrantes desde el mundo exterior a múltiples puertos, en lugar de escribir reglas individuales para cada puerto, puede combinarlas usando la extensión multipuerto como se muestra a continuación.

El siguiente ejemplo permite todo el tráfico SSH, HTTP y HTTPS entrante.

iptables -A INPUT -i eth0 -p tcp -m multiport --dports 22,80,443 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp -m multiport --sports 22,80,443 -m state --state ESTABLISHED -j ACCEPT

8. Permitir SSH saliente

Las siguientes reglas permiten la conexión ssh saliente. es decir, cuando hace ssh desde adentro a un servidor externo.

iptables -A OUTPUT -o eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT

Tenga en cuenta que esto es ligeramente diferente a la regla entrante. es decir, permitimos el estado NUEVO y ESTABLECIDO en la cadena de SALIDA, y solo el estado ESTABLECIDO en la cadena de ENTRADA. Para la regla entrante, es viceversa.

9. Permitir SSH saliente solo a una red específica

Las siguientes reglas permiten la conexión ssh saliente solo a una red específica. es decir, solo tiene un ssh para la red 192.168.100.0/24 desde el interior.

iptables -A OUTPUT -o eth0 -p tcp -d 192.168.100.0/24 --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT

10. Permitir HTTPS salientes

Las siguientes reglas permiten el tráfico web seguro saliente. Esto es útil cuando desea permitir el tráfico de Internet para sus usuarios. En los servidores, estas reglas también son útiles cuando desea usar wget para descargar algunos archivos desde el exterior.

iptables -A OUTPUT -o eth0 -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --sport 443 -m state --state ESTABLISHED -j ACCEPT

Nota:Para el tráfico web HTTP saliente, agregue dos reglas adicionales como las anteriores y cambie 443 a 80.

11. Equilibrar la carga del tráfico web entrante

También puede equilibrar la carga de su tráfico web entrante utilizando las reglas de firewall de iptables.

Esto usa la n-ésima extensión de iptables. El siguiente ejemplo equilibra la carga del tráfico HTTPS a tres direcciones IP diferentes. Por cada tercer paquete, se equilibra la carga al servidor apropiado (usando el contador 0).

iptables -A PREROUTING -i eth0 -p tcp --dport 443 -m state --state NEW -m nth --counter 0 --every 3 --packet 0 -j DNAT --to-destination 192.168.1.101:443
iptables -A PREROUTING -i eth0 -p tcp --dport 443 -m state --state NEW -m nth --counter 0 --every 3 --packet 1 -j DNAT --to-destination 192.168.1.102:443
iptables -A PREROUTING -i eth0 -p tcp --dport 443 -m state --state NEW -m nth --counter 0 --every 3 --packet 2 -j DNAT --to-destination 192.168.1.103:443

12. Permitir ping desde el exterior hacia el interior

Las siguientes reglas permiten que los usuarios externos puedan hacer ping a sus servidores.

iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
iptables -A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT

13. Permitir ping desde adentro hacia afuera

Las siguientes reglas le permiten hacer ping desde adentro a cualquiera de los servidores externos.

iptables -A OUTPUT -p icmp --icmp-type echo-request -j ACCEPT
iptables -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT

14. Permitir acceso de bucle invertido

Debe permitir el acceso de bucle invertido completo en sus servidores. es decir, acceda usando 127.0.0.1

iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

15. Permitir red interna a red externa.

En el servidor de firewall donde una tarjeta ethernet está conectada a la externa y otra tarjeta ethernet conectada a los servidores internos, use las siguientes reglas para permitir que la red interna se comunique con la red externa.

En este ejemplo, eth1 está conectado a una red externa (internet) y eth0 está conectado a una red interna (por ejemplo:192.168.1.x).

iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT

16. Permitir DNS saliente

Las siguientes reglas permiten conexiones DNS salientes.

iptables -A OUTPUT -p udp -o eth0 --dport 53 -j ACCEPT
iptables -A INPUT -p udp -i eth0 --sport 53 -j ACCEPT

17. Permitir conexiones NIS

Si está ejecutando NIS para administrar sus cuentas de usuario, debe permitir las conexiones NIS. Incluso cuando se permite la conexión SSH, si no permite las conexiones ypbind relacionadas con NIS, los usuarios no podrán iniciar sesión.

Los puertos NIS son dinámicos. es decir, cuando se inicia ypbind, asigna los puertos.

Primero haga un rpcinfo -p como se muestra a continuación y obtenga los números de puerto. En este ejemplo, estaba usando los puertos 853 y 850.

rpcinfo -p | grep ypbind

Ahora permita la conexión entrante al puerto 111 y los puertos que utilizó ypbind.

iptables -A INPUT -p tcp --dport 111 -j ACCEPT
iptables -A INPUT -p udp --dport 111 -j ACCEPT
iptables -A INPUT -p tcp --dport 853 -j ACCEPT
iptables -A INPUT -p udp --dport 853 -j ACCEPT
iptables -A INPUT -p tcp --dport 850 -j ACCEPT
iptables -A INPUT -p udp --dport 850 -j ACCEPT

Lo anterior no funcionará cuando reinicie ypbind, ya que tendrá números de puerto diferentes en ese momento.

Hay dos soluciones para esto:1) Use una dirección IP estática para su NIS, o 2) Use algunas técnicas inteligentes de secuencias de comandos de shell para obtener automáticamente el número de puerto dinámico de la salida del comando "rpcinfo -p", y use las de arriba reglas de iptables.

18. Permitir Rsync desde una red específica

Las siguientes reglas permiten rsync solo desde una red específica.

iptables -A INPUT -i eth0 -p tcp -s 192.168.101.0/24 --dport 873 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 873 -m state --state ESTABLISHED -j ACCEPT

19. Permitir la conexión MySQL solo desde una red específica

Si está ejecutando MySQL, normalmente no desea permitir la conexión directa desde el exterior. En la mayoría de los casos, es posible que tenga un servidor web ejecutándose en el mismo servidor donde se ejecuta la base de datos MySQL.

Sin embargo, es posible que los DBA y los desarrolladores deban iniciar sesión directamente en MySQL desde su computadora portátil y de escritorio utilizando el cliente MySQL. En ese caso, es posible que desee permitir que su red interna se comunique con MySQL directamente como se muestra a continuación.

iptables -A INPUT -i eth0 -p tcp -s 192.168.100.0/24 --dport 3306 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 3306 -m state --state ESTABLISHED -j ACCEPT

20. Permitir el tráfico de Sendmail o Postfix

Las siguientes reglas permiten el tráfico de correo. Puede ser sendmail o postfix.

iptables -A INPUT -i eth0 -p tcp --dport 25 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 25 -m state --state ESTABLISHED -j ACCEPT

21. Permitir IMAP e IMAPS

Las siguientes reglas permiten el tráfico IMAP/IMAP2.

iptables -A INPUT -i eth0 -p tcp --dport 143 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 143 -m state --state ESTABLISHED -j ACCEPT

Las siguientes reglas permiten el tráfico IMAPS.

iptables -A INPUT -i eth0 -p tcp --dport 993 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 993 -m state --state ESTABLISHED -j ACCEPT

22. Permitir POP3 y POP3S

Las siguientes reglas permiten el acceso a POP3.

iptables -A INPUT -i eth0 -p tcp --dport 110 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 110 -m state --state ESTABLISHED -j ACCEPT

Las siguientes reglas permiten el acceso a POP3S.

iptables -A INPUT -i eth0 -p tcp --dport 995 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 995 -m state --state ESTABLISHED -j ACCEPT

23. Prevenir ataques DoS

La siguiente regla de iptables lo ayudará a prevenir el ataque de denegación de servicio (DoS) en su servidor web.

iptables -A INPUT -p tcp --dport 80 -m limit --limit 25/minute --limit-burst 100 -j ACCEPT

En el ejemplo anterior:

  • -m limit:Esto usa la extensión limit iptables
  • –límite 25/minuto:Esto limita solo un máximo de 25 conexiones por minuto. Cambie este valor según sus requisitos específicos
  • –limit-burst 100:este valor indica que el límite/minuto se aplicará solo después de que el número total de conexiones haya alcanzado el nivel de límite de ráfaga.

24. Reenvío de puertos

El siguiente ejemplo enruta todo el tráfico que llega al puerto 442 al 22. Esto significa que la conexión ssh entrante puede provenir tanto del puerto 22 como del 422.

iptables -t nat -A PREROUTING -p tcp -d 192.168.102.37 --dport 422 -j DNAT --to 192.168.102.37:22

Si hace lo anterior, también debe permitir explícitamente la conexión entrante en el puerto 422.

iptables -A INPUT -i eth0 -p tcp --dport 422 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 422 -m state --state ESTABLISHED -j ACCEPT

25. Registrar paquetes descartados

También es posible que desee registrar todos los paquetes descartados. Estas reglas deben estar en la parte inferior.

Primero, cree una nueva cadena llamada REGISTRO.

iptables -N LOGGING

Luego, asegúrese de que todas las conexiones entrantes restantes salten a la cadena de REGISTRO como se muestra a continuación.

iptables -A INPUT -j LOGGING

A continuación, registre estos paquetes especificando un "prefijo de registro" personalizado.

iptables -A LOGGING -m limit --limit 2/min -j LOG --log-prefix "IPTables Packet Dropped: " --log-level 7

Finalmente, suelta estos paquetes.

iptables -A LOGGING -j DROP

Todas las 25 reglas de iptables anteriores están en formato de script de shell:iptables-rules

Artículos anteriores de la serie iptables:

  • Tutorial de cortafuegos de Linux:tablas IPTables, cadenas, fundamentos de reglas
  • IPTables Flush:eliminar/eliminar todas las reglas en RedHat y CentOS Linux
  • IPTables de Linux:cómo agregar reglas de firewall (con el ejemplo Permitir SSH)
  • IPTables de Linux:ejemplos de reglas entrantes y salientes (SSH y HTTP)

Linux
  1. 40 comandos básicos de Linux utilizados con frecuencia

  2. Los 7 espacios de nombres de Linux más utilizados

  3. [Linux]:15 comandos YUM más utilizados con ejemplos

  4. Los comandos de Linux más simples con 10 ejemplos

  5. 7 ejemplos de comandos Linux df

Comandos de Linux utilizados con frecuencia por los administradores de sistemas de Linux - Parte 4

Comandos de Linux utilizados con frecuencia por los administradores de sistemas de Linux - Parte 3

Comandos de Linux utilizados con frecuencia por los administradores de sistemas de Linux - Parte 2

Comandos de Linux utilizados con frecuencia por los administradores de sistemas de Linux - Parte 1

Linux du Command Ejemplos más útiles

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