50 reglas de IPtables útiles y sencillas para el administrador de Linux

Una de las principales razones detrás de la inmensa popularidad que disfruta Linux es su gran destreza en las redes. Linux impulsa la mayoría de los servidores empresariales del mundo debido a sus sólidas capacidades de red. Permite a los administradores del sistema la capacidad de controlar su red de la forma que deseen. Linux iptables es una de esas utilidades que proporciona a los administradores de sistemas todo lo que necesitan para . Es un programa de espacio de usuario que permite a los usuarios configurar su tabla de firewall del kernel y administrar las cadenas y reglas que contiene usando reglas simples de iptables.

50 reglas de firewall productivas de IPtables

La gente a menudo piensa mucho en las reglas de firewall de iptables, pero en la práctica, son bastante sencillas una vez que se pone en marcha. El conocimiento fundamental de la utilidad iptables y su propósito facilitará el . Hemos seleccionado esta guía con cuidado y describimos el contenido de acuerdo con eso. Empiece a perfeccionar sus habilidades de networking practicando estas reglas de iptables para tener una mejor visión del tema.

Fundamento y estructura de las reglas de IPtables de Linux

El kernel de Linux contiene un marco llamado Netfilter para fines de red. Es simplemente una pila de rutinas del kernel que proporcionan las capacidades de red básica a nuestro sistema. El marco es de muy bajo nivel y, por lo tanto, no es factible para los usuarios cotidianos. Bang, aquí viene iptables.

página de manual de iptables

Es un programa de espacio de usuario, con una interfaz de línea de comandos ordenada que permite a los usuarios utilizar la potencia bruta de Netfilter de una manera concisa y bien organizada. Puede inspeccionar, modificar, redirigir o descartar paquetes, unidades de comunicaciones de red utilizadas por nuestros sistemas.

Iptables actúa como un cortafuegos al bloquear los paquetes de red entrantes de los sistemas hostiles. Sin embargo, puede hacer todo tipo de magia de red que desee. Ahora bien, ¿en qué consisten las iptables? Debajo del capó, solo contiene algunas tablas, cadenas y reglas.

Una mirada más profunda a los componentes de IPtables

Iptables consta de cinco tablas, cada una para trabajos de redes especializados. Contienen cadenas y reglas. La tabla predeterminada es filtro ; otros son raw , nat , mangle y security . Las cadenas son simples listas de reglas. El filtro tiene tres cadenas integradas; ENTRADA , SALIDA y AVANCE . La tabla nat tiene dos cadenas adicionales llamadas PREROUTING y POSTROUTING .

El filtrado del tráfico de la red se realiza a través de las reglas. Se pueden especificar para tener múltiples coincidencias y en objetivos específicos. Los objetivos se activan usando la opción j , abreviatura de –jump . Pueden ser una cadena definida por el usuario, un destino integrado o una extensión. Los objetivos integrados de Iptables son ACCEPT , DROP , QUEUE y RETURN .

La cadena de políticas dicta el comportamiento de la cadena predeterminada. Ellos determinan qué hacer con los paquetes que no coinciden con ninguna regla de iptables en sus tablas. Aprenderá su funcionamiento probando algunos de los comandos que le enseñamos. Así que prepárate y enciende tu terminal para una amenaza de redes.

Reglas básicas de IPtables para Linux

Comprender los comandos básicos de iptables le ayudará a dominar la herramienta a largo plazo. A continuación, discutimos algunos comandos muy fundamentales pero cruciales que mejorarán su productividad como administrador de sistemas Linux a un nivel completamente nuevo.

Reglas de iptables de Linux

1. Compruebe el comportamiento de la cadena de políticas predeterminada

$ sudo iptables -L | grep policy

El comando anterior imprimirá el comportamiento de la cadena de políticas predeterminada de su sistema. En mi sistema Ubuntu 19.08, la política predeterminada es aceptar paquetes para las tres cadenas integradas de la tabla de filtros. Debería ser el mismo para su sistema dado que no los había modificado antes.

2. Verifique las reglas actuales

$ sudo iptables -L

Puede verificar la configuración actual de iptables de su sistema llamando a iptables con la opción -L . Debería mostrar una lista bien formateada de sus reglas junto con información sobre su política, destino, origen y destino.

3. Enumere las reglas por especificación

$ sudo iptables -S

La opción -S agregada con el comando iptables mostrará una lista de todas sus reglas según su especificación. Mi shell me muestra que acepta todos los paquetes para las cadenas INPUT, OUTPUT y FORWARD.

4. Verifique su estado de Iptables

$ sudo iptables -L -v

El comando anterior le mostrará el estado actual de sus iptables. Enumerará cuántos paquetes ha aceptado y enviado su sistema hasta ahora. Debe prestar atención a la cadena FORWARD. Debería ser todo ceros a menos que haya cambiado la configuración de su firewall anteriormente.

5. Restablezca sus reglas de Iptables

$ sudo iptables -F

Puede llegar un momento en el que haya alterado la configuración de iptables y haya estropeado por completo la red de su sistema. Esto puede suceder cuando está probando nuevas reglas y no puede revertir algunos cambios. Sin embargo, puede relajarse ya que este comando vendrá a su rescate en tales situaciones.

6. Guardar Iptables modificados

$ sudo service iptables save

Los cambios en iptables son transitorios, lo que significa que se restablece automáticamente cada vez que se reinicia el demonio. Es posible que desee guardar sus iptables después de cambiar algunas reglas para uso futuro. El comando anterior hace esto y se asegura de que iptables se cargue con la nueva configuración la próxima vez que inicie.

7. Vaciar Iptables y persistir cambios

$ sudo iptables -F && sudo /sbin/iptables-save

Debe usar el comando anterior para vaciar sus iptables y hacer que los cambios sean permanentes. La última parte del comando (después de &&) hace el mismo trabajo que el comando número seis. Entonces, se pueden usar indistintamente.

Administración de IPtables de Linux

Iptables proporciona comandos de administración robustos que hacen que sea bastante fácil administrar esta utilidad de red. Sin embargo, estos comandos tienden a variar de un sistema a otro. Afortunadamente, los cambios son sutiles y fáciles de entender incluso para los nuevos usuarios de Linux.

8. Inicio del cortafuegos de Iptables

$ sudo systemctl start iptables

Puede usar el comando anterior para iniciar el servicio iptables en sistemas que usan systemd , incluidos Fedora, OpenSUSE y Ubuntu.

$ sudo /etc/init.d/iptables start

Los sistemas que usan sysvinit en su lugar requerirán la variación anterior para este trabajo. Las personas que usan MX Linux, Slackware o Puppy Linux necesitarán usar esta versión para iniciar iptables en su sistema.

9. Detención del firewall de Iptables

$ sudo systemctl stop iptables

Este comando detendrá la ejecución del demonio iptables en sistemas que usan systemd.

$ sudo /etc/init.d/iptables stop

Hará lo mismo para los sistemas que ejecutan sysvinit.

10. Reinicio del cortafuegos de Iptables

$ sudo systemctl restart iptables

Puede usar el comando anterior para reiniciar el servicio iptables en su máquina Ubuntu.

$ sudo /etc/init.d/iptables restart

Para los sistemas que usan sysvinit, pruebe el comando anterior en su lugar. Observe la similitud de patrones entre los tres comandos anteriores.

11. Verifique todas las reglas existentes

$ sudo iptables -L -n -v

Este comando de iptables imprimirá todas las reglas de firewall de iptables existentes que haya configurado hasta ese momento. Dado que este comando mostrará mucha información, sería una buena idea usar grep para encontrar reglas específicas.

12. Verifique las reglas existentes para tablas específicas

El comando anterior mostrará información sobre la tabla predeterminada, que es filtro. Si desea encontrar información sobre alguna otra tabla, diga la tabla NAT, use el siguiente comando en su lugar.

$ sudo iptables -t nat -L -v -n

Observe cómo se usa aquí la opción -t para especificar el nombre de la tabla en iptables.

13. Lista de reglas para cadenas TCP únicamente

$ sudo iptables -S TCP

Este comando mostrará información solo sobre la cadena TCP. Esto es útil cuando desea salidas solo para solicitudes TCP entrantes.

14. Reglas de lista para cadenas UDP solamente

$ sudo iptables -S UDP

Las solicitudes UDP también representan una cantidad sustancial de tráfico en muchos sistemas. Si desea bloquear el tráfico UDP no deseado, este comando se puede utilizar para inspeccionar estas solicitudes.

Reglas de firewall de IPtables de Linux

Uno de los usos principales de iptables en Linux es configurar firewalls de red. Se puede usar para bloquear solicitudes entrantes no deseadas según muchos criterios diferentes, incluidas direcciones IP específicas, rangos de IP, direcciones MAC, etc. A continuación, enumeramos algunos ejemplos apropiados de dichos comandos.

15. Bloquear todas las solicitudes entrantes

El siguiente comando bloqueará todas las solicitudes entrantes para su sistema. Este comando tendrá prioridad sobre otras reglas en sus tablas, ya que será la primera regla verificada para cada solicitud.

$ sudo iptables INPUT -j DROP

16. Bloquear una dirección IP específica

A menudo, notará comportamientos de tráfico molestos de algunas direcciones IP específicas. El comando dado será útil en tales situaciones y permitirá a los administradores de sistemas bloquear esas direcciones IP por completo.

$ sudo iptables -A INPUT -s xxx.xxx.xxx.xxx -j DROP

Este comando bloqueará todas las solicitudes entrantes de la variable de dirección IP. En términos de iptables, esto se conoce como solicitudes “descartadas”. La opción -A se usa para agregar esta regla al final de su cadena INPUT, en lugar de al principio.

17. Bloquear todas las solicitudes TCP de una IP

El siguiente comando se puede utilizar para bloquear todas las solicitudes TCP entrantes desde una dirección IP determinada. No olvide reemplazar la variable de dirección IP con una existente.

$ sudo iptables -A INPUT -p tcp -s xxx.xxx.xxx.xxx -j DROP

El indicador -p se usa aquí para seleccionar solo solicitudes TCP. La opción -j se usa para ‘saltar’ a una acción específica.

18. Desbloquear una dirección IP

A veces, es posible que desee desbloquear una dirección IP que bloqueó anteriormente. El siguiente comando le permite hacer exactamente esto.

$ sudo iptables -D INPUT -s xxx.xxx.xxx.xxx -j DROP

Este comando simplemente elimina la regla que bloqueó la IP dada. También puede utilizar –delete en lugar de -D si lo desea.

19. Bloquear rangos de direcciones IP

Los administradores de sistemas a menudo bloquean rangos de IP específicos debido a su comportamiento sospechoso continuo. El siguiente comando le permite bloquear todas las solicitudes entrantes del rango de IP xxx.xxx.xxx.0 / 24.

$ sudo iptables -A INPUT -s xxx.xxx.xxx.0/24 -j DROP

20. Desbloquear rangos de direcciones IP

A veces, es posible que desee bloquear un rango de IP para alguna inspección. Cuando sea legítimo, debe volver a habilitar su acceso a su sistema. Utilice el siguiente comando para desbloquear un rango de direcciones IP determinado de su firewall iptables.

$ sudo iptables -D INPUT -s xxx.xxx.xxx.0/24 -j DROP

21. Bloquear todas las solicitudes de TCP para un rango de IP determinado

Los usuarios malintencionados suelen utilizar su amplia red de bots para inundar los servidores legítimos con solicitudes de TCP. Puede usar el siguiente comando para bloquear todas las solicitudes TCP de un rango de IP determinado, digamos xxx.xxx.xxx.0 / 24.

$ sudo iptables -A INPUT -p tcp -s xxx.xxx.xxx.0/24 -j DROP

22. Desbloquear todas las solicitudes de TCP para un rango de IP determinado

Puede utilizar el siguiente comando al desbloquear todos los tráficos TCP de un rango de IP determinado, digamos xxx.xxx.xxx.0 / 24. Esto será útil cuando bloquee todas las solicitudes TCP entrantes de algún rango de direcciones IP.

$ sudo iptables -D INPUT -p tcp -s xxx.xxx.xxx.0/24 -j DROP

23. Bloquear conexiones TCP en puertos específicos

Las reglas de iptables se pueden usar para bloquear todas las conexiones TCP salientes en un puerto específico, digamos 111 en este caso.

$ sudo iptables -A OUTPUT -p tcp --dport 111 -j DROP

Puede reemplazar el nombre de la cadena por INPUT para bloquear las conexiones TCP en el mismo puerto, pero para las solicitudes entrantes.

$ sudo iptables -A INPUT -p tcp --dport xxx -j DROP

24. Permitir conexiones TCP en el puerto 80

El siguiente comando permitirá solicitudes TCP entrantes en el puerto 80 de su sistema. Los administradores de sistemas a menudo designan números de puerto específicos para diferentes conexiones por motivos de gestión.

$ sudo iptables -A INPUT -p tcp -s xxx.xxx.xxx.0/24 --dport 80 -j ACCEPT

25. Rechazar conexiones TCP en el puerto 80

El siguiente comando iptables rechazará cualquier conexión TCP que se intente en el puerto 80. Todo lo que necesita hacer es pasar DROP como argumento a -j .

$ sudo iptables -A INPUT -p tcp -s xxx.xxx.xxx.0/24 --dport 80 -j DROP

Lo mismo se aplica también a las conexiones UDP.

$ sudo iptables -A INPUT -p udp -s xxx.xxx.xxx.0/24 --dport 80 -j DROP

26. Permitir conexiones SSH entrantes en el puerto 22

El siguiente comando es útil cuando desea permitir todas las conexiones SSH entrantes en el puerto predeterminado. Necesita pasar ssh como argumento a la bandera –dport en sus reglas de iptables.

$ sudo iptables -A INPUT -p tcp -s xxx.xxx.xxx.0/24 --dport ssh -j ACCEPT

27. Bloquear conexiones SSH entrantes

Para bloquear cualquier intento ssh entrante, use el siguiente comando. Esto bloqueará cada intento de SSH entrante realizado desde el rango de IP xxx.xxx.xxx.0 / 24.

$ sudo iptables -A INPUT -p tcp -s xxx.xxx.xxx.0/24 --dport ssh -j DROP

28. Permitir conexiones SSH salientes

Debe tener SSH saliente habilitado si desea establecer una comunicación remota segura para su máquina Linux. El siguiente comando le permite hacer precisamente esto.

$ sudo iptables -A OUTPUT -p tcp --dport ssh -j ACCEPT

Permite todas las conexiones SSH salientes desde su sistema a través de la web.

29. Bloquear todas las conexiones SSH salientes

El siguiente comando bloqueará todos los intentos SSH salientes desde su sistema a cualquier red. Tenga cuidado al usar este comando de forma remota, ya que también puede dejarlo bloqueado desde el sistema.

$ sudo iptables -A INPUT -p tcp --dport ssh -j DROP

30. Establecer estados al permitir SSH entrante

Los administradores de sistemas a menudo usan estados SSH para determinar si las conexiones remotas pertenecen a la entidad correcta o no. Primero, asigne estados a las solicitudes SSH entrantes usando el siguiente comando. El indicador -i se utiliza para hacer referencia a la interfaz, que en este caso es eth0 .

$ sudo iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT

31. Establecer estados al permitir SSH entrante

Asigne estados a las solicitudes SSH salientes de la misma manera que lo hizo con las solicitudes entrantes. El indicador -o se utiliza aquí para hacer referencia a la interfaz, que también es eth0 en este caso.

$ sudo iptables -A OUTPUT -o eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT

32. Permitir varios puertos para solicitudes entrantes

iptables del permiten a los administradores habilitar más de un puerto a la vez utilizando la opción multipuerto de iptables. El siguiente comando establece una regla para aceptar todas las solicitudes entrantes en los puertos 22, 80 y 110.

$ sudo iptables -A INPUT -p tcp -m multiport --dports 22,80,110 -j ACCEPT

33. Permitir varios puertos para solicitudes salientes

La configuración de varios puertos para conexiones salientes es casi idéntica al comando anterior. Aquí, todo lo que necesita hacer es usar la opción SALIDA.

$ sudo iptables -A OUTPUT -p tcp -m multiport --sports 22,80,110 -j ACCEPT

34. Permitir rangos de IP en un puerto específico

A veces, puede recibir solicitudes de red solo de un rango de IP específico, es decir, redes empresariales privadas. El siguiente comando permite todas las solicitudes SSH salientes del rango xxx.xxx.xxx.0 / 24 en el puerto SSH predeterminado.

$ sudo iptables -A OUTPUT -p tcp -d xxx.xxx.xxx.0/24 --dport 22 -j ACCEPT

35. Bloquear rangos de IP en puertos específicos

A menudo encontrará solicitudes de red continuas de usuarios de bots malintencionados. Por lo general, forman parte de un rango de IP específico. Es fácil bloquear estos tráficos con el siguiente comando.

$ sudo iptables -A INPUT -p tcp -s xxx.xxx.0.0/24 --dport 22 -j DROP

36. Bloquear Facebook en las reglas de Iptables

A menudo, muchas empresas bloquean los sitios de redes sociales como Facebook durante el horario de oficina. Los siguientes comandos se pueden utilizar para este propósito. Primero, averigüe el rango de red utilizado por Facebook en su ubicación geográfica.

$ sudo host facebook.come

Esto debería devolver un resultado consistente en la IP específica utilizada por Facebook, digamos 157.240.7.35 en este caso. Ahora ejecute el siguiente comando.

$ sudo whois 66.220.156.68 | grep CIDR

Proporcionará el rango de IP que Facebook utiliza para su ubicación, digamos 157.240.0.0/16 en este caso. Ahora simplemente podemos bloquear todas las conexiones salientes a esta red.

$ sudo iptables -A OUTPUT -p tcp -d 157.240.0.0/16 -j DROP

37. Inundación de la red de bloques

Los usuarios malintencionados a menudo recurren a la inundación de la red para comprometer los servidores de la empresa. Puede limitar las solicitudes entrantes por unidad de tiempo para salvar su sistema de tales ataques.

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

Este comando limita el tráfico entrante al puerto 80 a un máximo de 50 conexiones por minuto y establece una ráfaga límite de 100.

38. Bloquear solicitudes de ping entrantes

Las solicitudes de ping se utilizan para determinar si un servidor está activo o no. También puede proporcionar información valiosa para posibles piratas informáticos. Puede bloquear estas solicitudes agregando el siguiente comando a las iptables de su firewall de Linux.

$ sudo iptables -A INPUT -pr icmp -i eth0 -j DROP

39. Registrar paquetes de red descartados

Es posible que desee almacenar los paquetes de red descartados por las reglas de firewall de iptables para una inspección posterior. Esto se puede lograr con el siguiente comando.

buscando reglas de iptables

$ sudo iptables -A INPUT -i eth0 -j LOG --log-prefix "IPtables dropped packets:"

Puede sustituir la cadena después de –log-prefix por algo de su elección. Utilice grep para averiguar los paquetes caídos.

$ sudo grep "IPtables dropped packets:" /var/log/*.log

40. Bloquear solicitudes de conexión en la interfaz de red

Si tiene más de una interfaz de red, es posible que desee bloquear las conexiones en una de ellas. Utilice el siguiente comando para bloquear todas las solicitudes del rango de IP xxx.xxx.xxx.0 / 24 en la primera interfaz ethernet, eth0 .

$ sudo iptables -A INPUT -i eth0 -s xxx.xxx.xxx.0/24 -j DROP

Varias reglas de firewall de IPtables

Dado que las reglas de iptables de Linux pueden ser bastante diversas, vamos a enumerar que tienen un impacto considerable en la administración del sistema. A menudo pueden conducir a la solución de problemas específicos y también se pueden utilizar para solucionar problemas del firewall de iptables.

41. Permitir el reenvío de puertos en Iptables

A veces, es posible que desee reenviar el tráfico de un servicio a algún puerto diferente. El siguiente comando demuestra un ejemplo tan simple.

$ sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 25 -j REDIRECT --to-port 3535

El comando anterior reenvía todo el tráfico entrante en la interfaz de red eth0 desde el puerto 25 al 3535.

42. Permitir el acceso de bucle invertido

El acceso de bucle invertido es importante para solucionar problemas de su red y para varios propósitos de prueba. Puede permitir esto usando los siguientes comandos.

Para conexiones entrantes,

$ sudo iptables -A INPUT -i lo -j ACCEPT

Para conexiones salientes,

$ sudo iptables -A OUTPUT -o lo -j ACCEPT

43. Bloquear el acceso a direcciones MAC específicas

Si desea evitar que otras personas accedan a su sistema desde alguna dirección MAC en particular, puede usar el siguiente comando para hacer esto. Cambie la MAC siguiente con la dirección que desea bloquear.

$ sudo iptables -A INPUT -m mac --mac-source 00:00:00:00:00:00 -j DROP

44. Limitar las conexiones simultáneas por IP

En ocasiones, los administradores de sistemas quieren limitar el número de conexiones simultáneas establecidas desde una única dirección IP en un puerto determinado. El siguiente comando nos muestra cómo hacer esto con iptables.

$ sudo iptables -A INPUT -p tcp --syn --dport 22 -m connlimit --connlimit-above 3 -j REJECT

Puede cambiar el número de puerto y el límite de conexión como desee.

45. Reglas de búsqueda de Iptables

Una vez que su firewall de iptables esté configurado y funcionando, es posible que deba inspeccionar algunas reglas más adelante. Esto se puede hacer usando la siguiente sintaxis de comandos.

$ sudo iptables -L $table -v -n | grep $string

No olvide reemplazar $ table con el nombre de su tabla y $ string con su término de búsqueda.

46. Guarde las reglas de Iptables en un archivo

Puede guardar su nuevo firewall de iptables fácilmente en un archivo. El siguiente comando muestra cómo guardar una iptables recién configurada en un archivo llamado iptables.rules. Puede cambiar el nombre del archivo por el que desee.

$ sudo iptables-save > ~/iptables.rules

47. Restaurar Iptables desde un archivo

El siguiente comando demuestra cómo restaurar las reglas de firewall de iptables desde archivos. En este ejemplo, asumimos que las reglas se guardan en el archivo creado en el ejemplo anterior.

$ sudo iptables-restore < ~/iptables.rules

48. Deshabilitar los correos salientes

Si está seguro de que su sistema no necesita enviar correos electrónicos salientes, puede deshabilitarlos completamente usando iptables. El siguiente comando bloquea todas las conexiones salientes en los puertos SMTP. Utilice DROP en lugar de REJECT si no desea enviar un acuse de recibo.

$ sudo iptables -A OUTPUT -p tcp --dports 25,465,587 -j REJECT

49. Restablecer recuentos y tamaño de paquetes

Puede usar el siguiente comando para restablecer los recuentos de paquetes de iptables y el tamaño agregado. Esto es útil cuando desea determinar cuánto tráfico nuevo está manejando su servidor durante una conexión ya establecida.

$ sudo iptables -Z

50. Permite conexión interna a externa

Suponga que su interfaz de red interna en eth1 y la interfaz externa es eth0 . El siguiente comando permitirá que el adaptador eth1 acceda al tráfico del adaptador externo.

$ sudo iptables -A FORWARD l-i eth1 -o eth0 -j ACCEPT

Pensamientos finales

Las reglas de iptables de Linux ofrecen un medio flexible para controlar el tráfico de la red y permiten a los administradores administrar su sistema de manera conveniente. La gente suele pensar que iptables está fuera de su alcance debido a la abundancia de reglas de firewall de iptables. Sin embargo, son bastante simples una vez que los entiendes.

Además, un conocimiento profundo de iptables es obligatorio si desea seguir una carrera en los campos de las redes. Hemos descrito los 50 comandos iptables más útiles para que pueda aprenderlos rápidamente. Empiece a practicarlos de inmediato y siga experimentando hasta que aprenda algo nuevo. Déjenos sus pensamientos sobre esta guía y quédese con nosotros para obtener más guías interesantes sobre varios .

Leave a Comment

Your email address will not be published.