Bienvenidos al Curso Gratis de Redes #20 – Configuración de Firewall. Ya anteriormente en el Curso Gratis de Redes – Capitulo 6 – Firewall vimos brevemente estos temas. Ahora que tienes un conocimiento más profundo de redes es momento de profundizar en este tema y verlos más a fondo.

Tabla de contenidos

Cuándo necesitas un Firewall

Se requiere un cortafuegos para cualquier máquina que se conecte a Internet. No sólo tu PC, sino también tu servidor web, teléfono, dispositivos de IoT, o cualquier cosa que se te ocurra que tenga la capacidad de usar Internet. Un dispositivo desprotegido es una fácil elección para las intrusiones e infecciones. Esto podría dar a los hackers la posibilidad de apoderarse de tus equipos, instalar lo que quieran, vigilar mientras introduces información sensible como credenciales bancarias, o incluso mirar a través de tu webcam/cámara y escuchar a través de tu micrófono. En el caso de un servidor web, si un hacker consigue pasar, podría desconfigurar tu sitio web, incrustar un malware que infecte a tus visitantes, cambiar tu contraseña de administrador de WordPress, o derribar tu sitio por completo.

Sin un cortafuegos, tu sitio web e incluso tus dispositivos personales son vulnerables a los ataques DDoS, un vector de ataque que envía miles o millones de paquetes falsos para sobrecargar tu servidor y hacer que tu sitio web o Internet se caiga.

El cortafuegos puede proteger tus equipos, servidores o tu sitio web frente a:

  • Intrusiones: Los cortafuegos impiden a los usuarios no autorizados acceder a tu equipo o servidor de forma remota y hacer lo que quieran.
  • Malware: Los atacantes que logran infiltrarse pueden enviar malware para infectarte a ti o a tu servidor. El malware puede robar información personal, propagarse a otros usuarios o dañar de alguna manera tu computadora.
  • Ataques de fuerza bruta: Intentos de los hackers de probar cientos de combinaciones de nombres de usuario y contraseñas para descubrir las credenciales de acceso de su administrador (o de otros usuarios).
  • Ataques DDoS: Los cortafuegos (especialmente los de aplicaciones web) pueden intentar detectar la afluencia de tráfico falso que se produce durante un ataque DDoS.

Tipos de Firewall

Hay muchos tipos diferentes de cortafuegos, cada uno está diseñado para una situación diferente. Algunos son mejores para equipos individuales, mientras que otros están hechos para filtrar toda la red. Todos funcionan de manera diferente y bloquean mejor diferentes tipos de tráfico. Si te preguntas qué deberías buscar, vamos a analizar todos los principales tipos  de cortafuegos. A menos que tengas tu propia pila de servidores (proporcionando un sitio web con tu propia Internet), el tipo de cortafuegos del que debes preocuparte principalmente son los cortafuegos personales, los cortafuegos de software y los cortafuegos de las aplicaciones web. Estos tres son los más importantes. Sin embargo, lee más sobre el resto si quieres entender mejor cómo funciona un cortafuegos y cómo han evolucionado a lo largo de los años.

Firewall personal

Los cortafuegos funcionan de forma muy diferente dependiendo de si son utilizados por dispositivos individuales, redes enteras (como dentro de una oficina comercial) o servidores web. Un cortafuegos personal está pensado para ser usado en un solo dispositivo. Este es el firewall que viene preinstalado en las máquinas de Windows y Mac o con tu software antivirus. Aunque funciona de manera similar a un cortafuegos de servidor – permitiendo o rechazando conexiones de otros dispositivos, aplicaciones e IPs basadas en un conjunto de reglas predefinidas – actúa de una manera un poco diferente.

Los cortafuegos personales pueden proteger los puertos que utilizas para conectarte a sitios web y aplicaciones en línea (ocultándolos para que los atacantes no puedan ver que están abiertos), defenderse contra los ataques que se deslizan por la red, evitar que las personas accedan y se apoderen de tu equipo y analizar todo el tráfico entrante y saliente. También actúan como aplicaciones de cortafuegos, monitoreando la actividad de las aplicaciones en tu dispositivo y negándose a permitir que se establezca una conexión con software inseguro o desconocido. Hoy en día, obtener un cortafuegos personal es bastante fácil. Si usas cualquier versión moderna de Windows, ya debería haber uno por defecto.

Windows Defender Firewall

Windows Defender Firewall

Aplicación de Firewall en macOS

Los dispositivos Mac también vienen con uno, aunque tienes que encenderlo tú mismo. Para ello, navega a Preferencias del Sistema, haz clic en Seguridad y Privacidad y luego en Firewall:

Aplicación de cortafuegos en macOS

El software antivirus a menudo viene con el suyo propio también. Un ejemplo es el antivirus Avast: su software de cortafuegos es compatible con Windows y sirve como una segunda capa de defensa. También existen cortafuegos personales de terceros, pero pueden causar un conflicto con la configuración predeterminada.

Firewall Hardware vs. Software

Los firewalls tienen dos formas distintas: cortafuegos de hardware y de software. Los cortafuegos de software son programas descargables para tu dispositivo, monitoreando todo desde un panel de control central. Los cortafuegos de hardware proporcionan una funcionalidad similar, pero están físicamente instalados en el edificio.

Puede que no lo sepas, pero probablemente tengas una forma de cortafuegos de hardware en tu casa: tu router, el dispositivo que te permite conectarte a Internet. Si bien no es exactamente lo mismo que un dispositivo de cortafuegos de hardware dedicado, proporciona funciones similares de monitoreo y de permitir o negar conexiones.

Tanto el software como el hardware de los cortafuegos se sitúan entre el dispositivo y el mundo exterior, analizando cuidadosamente cualquier conexión que intente colarse. Puedes tener uno o ambos funcionando en tu red. Sin embargo, los cortafuegos de hardware tienen algunas desventajas.

Son difíciles de instalar y requieren un mantenimiento continuo, por lo que no suelen ser adecuados para dispositivos individuales o empresas muy pequeñas sin un departamento de informática. Pueden causar problemas de rendimiento, especialmente cuando se aplican junto con un cortafuegos de software. Y no son adecuados para bloquear aplicaciones en un dispositivo, o restricciones basadas en el usuario.

Por otro lado, un cortafuegos de hardware protegerá toda su red de dispositivos fácilmente, mientras que la configuración del software para ello es una tarea más difícil. Y aunque un atacante puede deshabilitar el software si logra entrar, no puede manipular el dispositivo físico.

Los cortafuegos de software son, como su nombre indica, mejores para trabajar con programas en un dispositivo. Bloquear aplicaciones, administrar usuarios, generar registros y monitorear usuarios en tu red son su especialidad. No son tan fáciles de configurar en toda la red, pero cuando se instalan en múltiples dispositivos, permiten un control más fino.

Firewall de filtrado de paquetes

El cortafuegos de filtrado de paquetes es el tipo más simple de cortafuegos, y está entre los primeros desarrollados. Un paquete es la información que se intercambia entre tu dispositivo y un servidor. Cuando haces clic en un enlace, subes un archivo o envías un correo electrónico, envías un paquete al servidor. Y cuando cargas una página web, te envía paquetes a ti. Un cortafuegos con filtro de paquetes analiza estos paquetes y los bloquea basándose en un conjunto de reglas predefinidas. Por ejemplo, podría bloquear los paquetes que se originan en un determinado servidor o dirección IP, o los que intentan llegar a un determinado destino en tu servidor.

La desventaja: Estos tipos de cortafuegos son simples y fáciles de engañar. No hay forma de aplicar reglas avanzadas. Si permites que el tráfico fluya a través de un determinado puerto, el cortafuegos de filtrado de paquetes dejará pasar cualquier cosa, incluso el tráfico que los cortafuegos modernos obviamente no dejarían pasar. La única ventaja de estos es que son tan simples que casi no tienen impacto en el rendimiento. No inspeccionan el tráfico, no guardan registros ni ejecutan ninguna función avanzada. Hoy en día, los cortafuegos de filtrado de paquetes deberían evitarse o al menos usarse junto con algo más avanzado, ya que hay soluciones mucho mejores.

Firewall de estado (stateful)

Después de los «sin estado», los filtros de paquetes simples llegó la tecnología de los cortafuegos de estado. Esto fue revolucionario porque en lugar de analizar los paquetes a medida que pasan y rechazarlos basándose en parámetros simples, los cortafuegos de estado manejan información dinámica y continúan monitoreando los paquetes a medida que pasan por la red. Un simple cortafuegos de filtrado de paquetes solo puede bloquear basado en información estática como la dirección IP o el puerto. Los cortafuegos de estado son mejores para detectar y bloquear el tráfico ilegítimo porque reconocen patrones y otros conceptos avanzados.

Comparado con los cortafuegos sin estado, la desventaja es que son más intensivos debido a que almacenan paquetes de datos en la memoria y los analizan más rigurosamente, además de mantener registros de lo que se bloquea y lo que pasa a través de ellos. Pero son una solución mucho mejor.

Firewall de nueva generación

Por último, los cortafuegos de nueva generación (NGFW), son uno de los inventos más recientes de esta generación de tecnología de seguridad. Estas herramientas de grado empresarial son como todas las anteriores combinadas en una sola. El filtrado profundo de paquetes, la prevención de intrusos y el monitoreo de aplicaciones son solo algunas de sus enormes características de red. Los cortafuegos de última generación en la nube  existen como un servicio en línea, pero los WAF son mucho más comunes y proporcionan una funcionalidad similar. Pero si quieres la tecnología de cortafuegos más avanzada disponible, con un paquete completo de protección de seguridad en un programa, busca un NGFW.

Cómo conseguir un Firewall

Para protegerse a sí mismo y a tu sitio web, necesitas un cortafuegos de alta calidad que mantenga alejado a los intrusos. En lo que respecta a los cortafuegos personales, no suele ser necesario hacer un esfuerzo para conseguir uno. El cortafuegos incorporado de Windows funciona muy bien sin ninguna configuración. Y entre el cortafuegos de aplicaciones que suele venir con el software antivirus y el filtro de paquetes del router, el equipo suele estar más que protegido. Solo asegúrate de que tu cortafuegos esté activado, que tengas un buen antivirus instalado y que tu router esté configurado correctamente. Lo mismo puede decirse de los usuarios de MacOS.

Cómo configurar el Firewall de Windows para bloquear hackers y malware

La seguridad cibernética es una preocupación cada vez más importante en el mundo que nos rodea. Proteger nuestros dispositivos y datos contra hackers y malware es esencial para salvaguardar nuestra privacidad y evitar ser víctimas de ciberataques. Una de las herramientas clave para fortalecer nuestra seguridad en Internet es el Firewall de Windows, que actúa como una barrera entre nuestra red y posibles amenazas externas. En este artículo, te proporcionaremos información detallada y de utilidad sobre cómo configurar el Firewall de Windows para bloquear hackers y malware, garantizando una protección sólida para tu sistema.

¿Qué es el Firewall de Windows?

Este firewall es una función integrada en el sistema operativo Windows que actúa como una primera línea de defensa contra amenazas externas. Funciona controlando el tráfico de red que entra y sale de tu PC o red, permitiendo o bloqueando el acceso a determinadas aplicaciones y puertos según tus configuraciones.

Cómo configurar el Firewall de Windows

  • Accede a la configuración del Firewall: Para comenzar, ve al Panel de Control selecciona «Firewall de Windows Defender«, entra en configuración avanzada para realizar más ajustes
Cómo configurar el Firewall de Windows para bloquear hackers y malware
  • Habilita el Firewall de Windows: Asegúrate de que el Firewall de Windows esté activado. Si no lo está, selecciona la opción «Activar o desactivar el Firewall de Windows».
  • Configura las reglas de entrada y salida: Decide qué aplicaciones y servicios deben tener acceso a tu red. Puedes configurar reglas específicas para permitir o bloquear el acceso de ciertas aplicaciones o puertos.
  • Personaliza la configuración avanzada: Haz clic en «Configuración avanzada» para acceder a opciones más detalladas. Aquí, puedes establecer reglas más específicas para el tráfico de red entrante y saliente.
Cómo configurar el Firewall de Windows para bloquear hackers y malware
  • Restringe el acceso a la red pública: Si estás conectado a una red pública, considera establecer el perfil de red como «Pública«. Esto restringirá ciertas conexiones y ayudará a proteger tu dispositivo cuando estés en redes Wifi no seguras.
  • Actualiza regularmente: Mantén actualizado el Firewall de Windows y el sistema operativo para asegurarte de tener las últimas protecciones y parches de seguridad.

Si tienes algun antivirus instalado con firewall, este se antepondrá el Firewall de Windows.

¿Qué reglas puedo crear con el Firewall de Windows?

Con el Firewall de Windows, puedes crear diversas reglas para controlar el tráfico de red entrante y saliente. Algunas de las reglas que puedes configurar incluyen:

  • Reglas de entrada para aplicaciones: Puedes permitir o bloquear el acceso de aplicaciones específicas a tu red. Esto te permite controlar qué programas pueden recibir datos desde Internet.
  • Reglas de salida para aplicaciones: Similar a las reglas de entrada, puedes permitir o bloquear el acceso de aplicaciones a Internet. Esto controla qué programas pueden enviar datos hacia Internet.
  • Reglas de puerto: Puedes configurar reglas para permitir o bloquear el acceso a puertos específicos. Esto es útil para restringir ciertos servicios o conexiones a través de puertos específicos.
  • Reglas de dirección IP: Puedes permitir o bloquear el acceso de direcciones IP específicas. Esto te permite controlar qué direcciones IP pueden acceder a tu red.
  • Reglas de perfil de red: Puedes establecer reglas diferentes para perfiles de red específicos, como redes privadas o públicas. Esto te permite ajustar la seguridad según el tipo de red en la que te encuentres.
  • Reglas de seguridad personalizadas: El Firewall de Windows te permite crear reglas personalizadas basadas en diversos criterios, como protocolos, interfaces de red y usuarios.
Cómo configurar el Firewall de Windows para bloquear hackers y malware

Conclusion

Al configurar adecuadamente el Firewall de Windows y seguir buenas prácticas de seguridad en línea, puedes fortalecer significativamente tu defensa contra hackers y malware. Recuerda que la ciberseguridad es un esfuerzo constante y estar informado sobre las últimas amenazas y vulnerabilidades te ayudará a mantener tu sistema seguro y protegido.

¿Cómo configurar un firewall en servidores Linux?

Para una correcta y segura instalación de un servidor de Internet necesitamos disponer y configurar un firewall. El firewall se encarga de regular el tráfico de entrada y de salida con nuestra máquina, de modo que podamos comprobar que está relacionado con alguno de los servicios que el servidor ofrece, permitiendo o denegando las conexiones de manera selectiva.

Con nuestro firewall podremos decidir por ejemplo que se acepten conexiones para la consulta de una web por HTTP o para las conexiones por SSH, pero que deniegue todos los otros intentos de conexión a servicios distintos, que no se desean ofrecer. Generalmente, el tráfico que nos interesará controlar es el entrante, ya que será desde donde nos lleguen posibles ataques al servidor. El tráfico desde el servidor hacia afuera generalmente no nos debe de preocupar, por lo que generalmente no se suele limitar.

Firewall UFW

El firewall UFW (Uncomplicated Firewall) es uno de los más populares de los sistemas Linux, debido a su sencillez de configuración. Está disponible de manera predeterminada en muchas de las distribuciones de Linux. Si no fuera el caso, podríamos instalarlo por medio de los repositorios del sistema, con el comando típico para cada distribución. Por ejemplo en sistemas basados en Debian se haría con el comando siguiente:

sudo apt install ufw

Una vez instalado tenemos una suite de comandos para gestionar el propio firewall y las conexiones del servidor. UFW viene desactivado por defecto, para evitar posibles problemas de acceso al servidor antes de su configuración, por lo que el primer paso consistirá en definir qué tipos de conexión deseamos habilitar, para posteriormente activar el firewall. Podemos comprobar el estado del firewall con el comando «ufw status». En un principio deberíamos ver que está inactivo.

sudo ufw status

Firewall UFW

Es importante que, antes de activar el firewall, configuremos las conexiones permitidas, habilitando al menos el acceso por SSH, para que no perdamos el acceso al servidor. Para saber qué tipo de conexiones podemos activar o desactivar en el servidor, ejecutamos el comando.

sudo ufw app list

La salida de ese comando nos indicará qué aplicaciones localiza el firewall susceptibles de configurar en nuestro sistema.

Firewall UFW

Habilitar SSH

Para permitir el acceso al servidor por SSH debemos habilitar las conexiones con la aplicación «OpenSSH«. Esto lo conseguimos con el comando siguiente:

sudo ufw allow «OpenSSH»

De manera predeterminada se permiten conexiones tanto para IPV4 como para IPV6. Los puertos de conexión habilitados serán los predeterminados para estos tipos de conexión (en SSH el puerto 22).

Habilitar shs

Habilitar tráfico HTTP al servidor web

De manera similar, podemos habilitar el tráfico de HTTP para el acceso al servidor web instalado. En nuestro caso, que tenemos Apache en el servidor, realizaríamos la configuración habilitando la mencionada aplicación.

sudo ufw allow «Apache Full»

La aplicación «Apache Full» nos permite el acceso por HTTP por los puertos comunes de HTTP (80) y HTTPS (443).

Habilitar tráfico HTTP al servidor web

Activar el firewall

Una vez realizada la configuración, podemos activar ya el firewall, con el comando «ufw enable».

sudo ufw enable

Nos advertirá que las conexiones por SSH pueden ser interrumpidas, pero podemos estar tranquilos porque las acabamos de habilitar con los comandos anteriores. Por último, podemos comprobar la configuración de UFW con el comando «ufw status». Ahora deberíamos ver que el firewall se encuentra activo y además podremos obtener un listado de aplicaciones habilitadas.

sudo ufw status

Activar el firewall

Eso es todo. La configuración del firewall se ha realizado correctamente y ya se encuentra activo en nuestro servidor para incrementar la seguridad.

Configuración de pfSense en VMWare Workstation

pfSense es un firewall de código abierto y su distribución FreeBSD. Es más popular que otros firewalls y también podemos instalarlo como máquina virtual. pfSense también dispone de dispositivos físicos, y también podemos instalar pfSense en la nube (AWS y Azure).

Instalación

Primero, necesitaba tener un software de virtualización como VMWare o Virtual Box, y ahora estoy usando VMWare para instalar pfSense. En segundo lugar, debe tener una máquina virtual Linux o Windows para la configuración del servidor Ngnix; Estoy usando Ubuntu por ahora.

Abra su navegador favorito y busque » descarga de pfSense » o abra  https://www.pfsense.org/download/

Serás redirigido a la página de descarga de pfSense.

Después de la descarga, descomprima este archivo. Ahora abra VMWare, luego haga clic en Crear una nueva máquina virtual.

Ahora haga clic en típico, luego haga clic en Siguiente.

Seleccione la ubicación del archivo haciendo clic en Examinar . Aquí, VMWare detectó automáticamente que era FreeBSD. Luego haga clic en Siguiente .

Puede editar el nombre de la VM y elegir la ruta donde desea almacenar la VM o mantener todo por defecto. Luego, haga clic en Siguiente.

Proporcione el espacio máximo en disco que desea asignar para pfSense y haga clic en Siguiente .

Estás en el paso final, que es el paso clave que muchas personas enfrentan con este problema.

Haga clic en Adaptador de red y configure este adaptador para WAN para comunicarse con Internet. Luego haga clic en Agregar. Luego verás una pantalla como la de la imagen de abajo.

Elija Adaptador de red , haga clic en Finalizar .

Ahora utilice este adaptador para la comunicación LAN . Ahora Crate es una red de área local haciendo clic en el segmento LAN .

Haga clic en Agregar. y luego nombrarlo como desees.

Iniciemos la maquina virtual

Haga clic en Encender la máquina.  pfSense tardará un poco en iniciarse y luego aceptará sus términos y condiciones haciendo clic en Entrar. Verás tres opciones. Elija la primera opción, Instalar , luego presione Enter.

Vaya por defecto en este paso.

Haga clic en todo lo predeterminado, presione Enter.

Pulsa el espacio aquí.

Entonces elige

Entonces tomará un tiempo.

Hemos instalado pfSense con éxito.

Configuración de Ubuntu

Encienda la máquina virtual Ubuntu.

Luego el adaptador LAN que elijas en pfSense.

En pfSense también se utilizó el mismo adaptador de red.

Ahora encienda la máquina Ubuntu. Abra la terminal y actualice los repositorios escribiendo el comando sudo apt update. Instale el servidor Nginx mediante sudo apt install nginx .

Abra Firefox o su navegador favorito en Ubuntu y verifique el host local si el servidor se está ejecutando o no.

Configure el firewall de ubuntu. De forma predeterminada, el firewall ufw está instalado en ubuntu. Primero, verifique las aplicaciones escribiendo el comando sudo ufw app list y el comando restante para permitir y denegar las reglas que se muestran en la siguiente imagen.

Hemos agregado con éxito la regla de denegación en el firewall ufw de Ubuntu.

Configuración de pfSense

Después de iniciar pfSense, verá la pantalla de bienvenida.

De forma predeterminada, DHCP está habilitado y IPV6 también está habilitado para algunas personas, no te preocupes, lo solucionaremos. DHCP asignará automáticamente la dirección IP; Podemos configurarlo usando IP estática.

Necesita tener una IP estática para pfSense. En pfSense, seleccione la opción 2 , luego elija la opción 1 (WAN). Si desea continuar con DHCP, presione Y , pero enfrentará muchos problemas en el futuro. Dependiendo del rango de sus subredes, seleccione subred. Para fines domésticos, utilice una máscara de 24 subredes.

Ahora abra ubuntu, luego abra el navegador y escriba la dirección IP de LAN. En mi caso es 192.168.1.1. De forma predeterminada, el usuario y la contraseña son admin y pfsense, respectivamente.

Host y DNS

Si tiene un nombre de host y un servidor DNS, complete esos detalles. Aquí, voy todo por defecto.

Baje y desmarque, bloquee la red privada y la red sin ruta de Internet.

En este paso, cambie la contraseña de administrador. Si se está configurando el firewall en la oficina o en casa, no se recomienda utilizar una cuenta de administrador ni contraseñas seguras tanto para los usuarios como para el administrador. Aquí lo estoy usando solo para fines de laboratorio, por lo que mantengo todo por defecto.

NAT

También se realiza la configuración de pfSense. Necesitamos agregar una regla NAT al firewall. Abra la página de inicio de pfSense y haga clic en Firewall y luego haga clic en NAT .

Haga clic en Agregar . Esta es la primera regla, por lo que no debemos preocuparnos por esas flechas al agregar. Si tiene muchas reglas antes o en el futuro, desea agregar esa regla en la parte superior, luego haga clic en la flecha hacia arriba Agregar o agregue eso en la parte inferior y luego haga clic en la flecha inferior agregar .

Aquí, mantenga todos los valores predeterminados excepto la dirección IP de destino, la IP de origen y los puertos. En el destino, ingrese la dirección IP de pfSense seleccionando Host único o alias. En mi caso, es 192.168.0.100.

OK. Ahora en el rango de puerto de destino, ingrese el puerto al que desea redirigir el tráfico. En mi caso son 9000.

En la fuente, dirección IP, de donde proviene el tráfico, en nuestro caso, proviene de Ubuntu, así que ingrese la IP de Ubuntu (192.168.1.100).

Haga clic en guardar. Ahora haga clic en aplicar cambios.

Ahora en su máquina host, abra el navegador y busque pfSense IP y el puerto que ha configurado.

Eso es todo. Ha realizado correctamente el reenvío de puertos con pfSense.

Configura el firewall de Linux con IPtables y protege tu servidor

iptables es el firewall que se utiliza en sistemas operativos basados en Linux. Aunque en los últimos años tenemos instalado de forma predeterminada nftables, aún se puede utilizar la sintaxis de iptables para configurar el cortafuegos en nuestro sistema operativo, como Debian, Ubuntu e incluso el firewall del router si está basado en Linux. Conocer iptables es muy importante para mantener protegida nuestra red local de intrusiones, esto se debe a que iptables nos dará la posibilidad de permitir o denegar el tráfico que nosotros queramos. Vamos a explicar cómo funciona iptables, y ejemplos de utilización avanzada.

Principales características de iptables

iptables es un software que se encarga de actuar como un firewall o cortafuegos en nuestra red. Es una parte muy importante de los sistemas operativos, y es que está específicamente diseñado para permitir el acceso autorizado y bloquear el acceso no autorizado. Un firewall establece un punto de control, tanto de entrada como salida de los paquetes, además, es muy importante indicar que un cortafuegos protege del tráfico que atraviesan diferentes redes, pero no protege la red local de ataques que se produzcan dentro de una misma subred.

iptables es el cortafuegos incluido en sistemas Linux desde la versión 2.4, por lo tanto, está incorporado de forma predeterminada en sistemas como Debian, Ubuntu, Linux Mint y muchos otros, aunque actualmente de forma interna se utiliza nftables, porque iptables se considera antiguo, aunque hoy en día todavía se utiliza iptables ampliamente en el mundo de la administración de sistemas Linux y también en el mundo de la administración de redes.

Este cortafuegos dispone de varias tablas creadas de forma predeterminada, con el objetivo de facilitar enormemente la posibilidad de añadir diferentes cadenas y reglas. Un detalle muy importante, es que de forma predeterminada tenemos todo en «aceptar», es decir, todo el tráfico se permite, no hay ninguna regla para denegar el tráfico, por lo tanto, en un primer momento este firewall es permisivo, pero podemos cambiar la política predeterminada de forma muy fácil y rápida.

Mejoras de rendimiento

Como puedes ver, Iptables son una solución muy buena para realizar configuraciones y administración del firewall del sistema. Pero más allá de las configuraciones que podamos llevar a cabo, Iptables es capaz de mejorar el rendimiento de nuestro sistema de una forma que puede ser bastante significativa. Una de las formas en las cuales lo hace, es a través de la configuración de la tasa de paquetes. Si estos cuentan con actividad limitada de ancho de banda, se pueden establecer la cantidad de los mismos que se pueden enviar o recibir en un tiempo determinado. Esto evita las sobrecargas del sistema, y asegura que el tráfico tenga una distribución uniforme.

Otra de las formas en las cuales nos puede ayudar, es con las reglas de filtrado de paquetes. Si conocemos el tráfico que es innecesario, se pueden establecer reglas para poder bloquearlo antes de que llegue a entrar al sistema. Esto nos va a ayudar a reducir de forma considerable en algunos casos, reducir la cantidad de tráfico que circula por la red, mejorando el rendimiento de una forma generalizada. A esto le podemos sumar las reglas de enrutamiento, las cuales son tremendamente útiles en gran cantidad de casos diferentes.

Cuando disponemos de redes muy complejas, con múltiples segmentos de red o rutas diferentes, estas reglas de enrutamiento nos garantizan que los paquetes que circulan se envían por la ruta más eficiente y directa posible. Esto reduce los tiempos de latencia y de nuevo, mejora el rendimiento general de nuestra red. Por no hablar de todas las funciones avanzadas para los controles de calidad QoS. Esta cuando tienen la configuración adecuada, puede establecer prioridades para garantizar que se cumplen todos los requisitos de ancho de banda. Por lo cual todas las aplicaciones de verán directamente beneficiadas en su rendimiento.

¿Qué se puede hacer con iptables?

Uno de sus usos principales es analizar el tráfico para ver las características de los paquetes. Para esto se implementa un cortafuegos que controla el tráfico.Por otro lado, también permiten utilizar una tecnología tan importante como es la NAT, que se basa en la traducción de redes. Se puede configurar un dispositivo para NAT con iptables, independientemente del Firewall.

Otra función interesante es la de marcar los paquetes. Esto se suele hacer con el uso de iptables, para que esos paquetes pasen a otros programas, y estos en función de las etiquetas, hacen una cosa u otra. Esto se realiza mediante mangle que, con el marcado, prepara los paquetes para un procesamiento futuro.

Combinar con otros servicios

Las iptables resultan una herramienta muy potente y flexible, y nos ayudan mucho en cuanto al control del tráfico en sistemas basados en Linux. Lo cual es muy útil para proteger los servicios que dependen de estos servidores. Lo cuales podemos encontrar en una grandísima cantidad de servicios actualmente. Uno de los problemas que nos podemos encontrar, es que, para poder implementarlas con otros servicios, es necesario llegar a utilizar código para que todo salga a la perfección. Ante esto, debemos tener en cuenta que cualquier cambio que se realice de forma incorrecta en las reglas, puede hacer que todo el tráfico de la red se quede bloqueado. Por lo cual siempre es recomendable dar uso de copias de seguridad, para tener siempre una vía de recuperación.

Algunos de los ejemplos de uso más básicos son:

  • Servidores web HTTP/HTTPS.
  • Servidores SSH.
  • Servidores SMTP.

También es posible implementarlas para disponer de algunas políticas por defecto, como puede ser la denegación de todo. Es común que muchos lugares utilicen estas políticas predefinidas, en lugar de crear las suyas. En este caso, siempre tendremos una disponible que negará todo el tráfico, y luego abrir solo los puertos que sea explícitamente necesarios para lo que vamos a necesitar. En todo caso, estos ejemplos son los más básicos. Iptables puede ser implementado en muchos más sistemas y muy complejos. Como limitar la tasa de tráfico, bloquear direcciones IP, loguear tráfico y muchas más opciones. Siempre se debe recordar, que las reglas no persisten después de los reinicios. Por lo cual será necesario dar uso de scripts que programemos, y que se ejecuten al inicio de la sesión. De este modo estarán siempre disponibles. El problema de todo esto es que, para la programación, es necesario tener conocimientos sobre el código necesario para estas herramientas.

Calcular iptables

El cálculo de iptables, implica que se deben definir las reglas en una tabla, y que sean aplicadas a la entrada y salida del tráfico. Para ello se debe seguir un conjunto de cadenas predefinidas, las cuales con INPUT, OUTPUT y FORWARD. Estas son las encargadas de determinar el tráfico que se debe analizar. Pero para poder calcularlas, se deben conocer las reglas de las mismas.

  • Criterios de procedencia: Se deben establecer las condiciones para que los paquetes puedan aplicar las reglas. Esto incluye información como las direcciones IP de origen y destino, así como los puertos, protocolos y otras características que puede tener un paquete.
  • Acción: Se tiene que definir la acción que se va a tomar cuando se cumplan ciertos criterios de coincidencia. Estas pueden ser ACCEPT, DROP y REJECT. Donde se acepta el paquete, se rechaza o incluso se llega a descartar por completo.
  • Orden de las reglas: Debemos saber que las reglas se van a evaluar de forma secuencial. Esto hace que el orden en el cual se establecen, sea sumamente importante, ya que determinará la acción que se va a realizar primero. Lo más recomendable es buscar un orden lógico, y que sea coherente con todas las demás reglas que se establecen.

Pero eso no es todo, sino que para poder calcular las iptables, debemos tener en cuenta algunos factores que son muy importantes.

Factores a tener en cuenta

  • Seguridad: Al fin y al cabo, las iptables se utilizan para proteger a los sistemas de posibles amenazas externas. Por lo cual se debe pensar en la seguridad cuanto nos encontramos manipulando este tipo de parámetros.
  • Rendimiento: Se debe realizar un cálculo eficiente, el cual se encuentre totalmente optimizado. Esto minimizará la cantidad de reglas que vamos a necesitar, reduciendo también todas las posibles redundancias que se pueden generar. Lo cual puede producir una sobreocupación de reglas.
  • Flexibilidad: Las iptables son una característica muy flexible a la hora de definir lo que pueden hacer. Es por ello que se pueden establecer condiciones muy específicas para poder adaptarse a prácticamente cualquier necesidad que tenga el sistema que estamos manejando.

Una vez que ya conocemos las principales características, vamos a enseñar el funcionamiento y la arquitectura de este cortafuegos.

Funcionamiento y arquitectura

Este cortafuegos se basa en reglas que iremos introduciendo una tras otra, su funcionamiento se basa en aplicar reglas que el propio firewall se encargue de ejecutar. Aunque en un primer momento iptables pueda parecer sencillo de usar, si quieres hacerlo de forma avanzada, es más complicado. A continuación, podés ver un esquema resumido del funcionamiento de iptables.

La estructura de iptables se basa en tablas, muchas de ellas ya están creadas de forma predeterminada. Dentro de las tablas tenemos las cadenas, que también tenemos algunas creadas de forma predeterminada. Finalmente, dentro de las cadenas tenemos las diferentes reglas que podemos configurar. En la siguiente foto podés ver un pequeño esquema de cómo quedaría la arquitectura del firewall:

De forma predeterminada tenemos un total de cuatro tablas:

  • Tabla filter: es la tabla por defecto, si no definimos una tabla para añadir una regla, siempre se irá a la tabla filter. En esta tabla tenemos un total de tres cadenas por defecto, dependiendo de lo que nos interese, tendremos que usar una cadena u otra: INPUT (son los paquetes en sentido entrante, al propio firewall), OUTPUT (son los paquetes en sentido saliente, desde el servidor hacia fuera), y FORWARD (sirve para filtrar los paquetes que van de una interfaz de red a otra).
  • Tabla nat: esta tabla se encarga de hacer el NAT, transformar la IP privada en pública y al revés. Dentro de NAT tenemos tres cadenas: PREROUTING (altera los paquetes antes de enrutarlos, aquí se hace el DNAT o reenvío de puertos), POSTROUTING (altera los paquetes después de enrutarlos, aquí se hace el SNAT o MASQUERADE) y OUTPUT (paquetes generados por el firewall que atravesará el NAT configurado).
  • Tabla mangle: esta tabla se encarga de hacer la alteración de los paquetes, es donde se configura el QoS para la calidad del servicio, alterar cabeceras TCP etc. En esta tabla tenemos las cinco cadenas: PREROUTING, INPUT, FORWARD, OUTPUT, POSTROUTING.
  • Tabla raw: esta tabla no se suele usar porque los paquetes viajan sin estado de conexión. Tenemos la cadena PREROUTING y OUTPUT.

Para hacer todo esto, utiliza algunas reglas de filtrado que nos indicarán que paquetes serán aceptados y cuales rechazados o directamente, omitidos.

Estas cadenas de datos la forman:

  • INPUT: Se refiere a los paquetes que llegan al sistema.
  • OUTPUT: Filtra los paquetes que salen de nuestra red.
  • FORWARD: No indica el tráfico del router que es enviado a otros equipos.

En la siguiente imagen podes ver un pequeño resumen de las cadenas que tenemos en las diferentes tablas:

El funcionamiento a la hora de añadir una regla es el siguiente:

  • Las reglas que incorporamos a las cadenas siempre tienen un objetivo (-j en la regla).
  • Cuando el firewall recibe un paquete, comprueba si el paquete concuerda con una regla que hayamos dado de alta. Si concuerda, se ejecuta el orden objetivo, si no, pasa a la siguiente regla hasta el final de la cadena.
  • Las reglas se verifican en un orden secuencial, desde la primera regla hasta la última. Es muy importante el orden, si bloqueamos todo primero y luego permitimos algo más específico, bloquearemos todo el tráfico y la regla más específica no se comprobará.
  • En el caso de que ninguna regla satisfaga el paquete, entonces se utilizará la política de la cadena que tengamos (regla global).

Los objetivos que tienen las diferentes reglas son las siguientes:

  • ACCEPT: acepta el paquete y lo pasa al siguiente nivel, un servidor web, SSH, FTP etc.
  • DROP: bloquea el paquete y no lo pasa al siguiente nivel.
  • QUEUE: es un objetivo especial, que pasa al paquete en una cola destinada al procesamiento en espacio de usuario. Esto se puede usar para utilizar otros programas externos.
  • RETURN: tiene el mismo efecto que si hubiésemos llegado al final de la cadena. Si la regla estaba en una cadena de las que hay por defecto, entonces se ejecuta la política de la cadena. Para una regla que esté en una cadena definida por el usuario, se sale de ella, y se continúa atravesando la cadena anterior al salto, justo después de la regla con la que se saltó.

Como hemos mencionado y con respecto a las tablas mangle, iptables puede dar uso de la NAT, que contará con sus propias tablas, mediante la que se indica las reglas para realizar el enmascaramiento del paquete, redirigir puertos o cambiar alguna dirección de origen y destino. Nos podemos encontrar:

  • PREROUTING: Mediante esta, indicaremos a la máquina que realice determinadas acciones sobre los paquetes antes de que sean enrutados.
  • POSTROUTING: Nos permite realizar determinadas acciones antes de que el paquete salga del cortafuegos.
  • OUTPUT: Nos da la opción de modificar los paquetes generados en el cortafuegos antes de ser enrutados.

Una vez que ya conocemos el funcionamiento y su arquitectura, vamos a ver diferentes comandos para realizar diferentes acciones.

Comandos imprescindibles para usar iptables

Lo primero que debemos tener en cuenta a la hora de configurar este firewall, es que necesitamos permisos de superusuario para realizar las diferentes órdenes. Es totalmente necesario para que se ejecuten, de lo contrario no funcionará. Las siguientes órdenes no llevan «sudo» porque suponemos que ya estás con el superusuario (sudo su).

En las últimas versiones de Linux no es posible parar el servicio de iptables, para poder permitir todo el tráfico de red y dejar el firewall con los parámetros por defecto, tenemos que ejecutar las siguientes órdenes:

  • sudo iptables -F
  • sudo iptables -X
  • sudo iptables -t nat -F
  • sudo iptables -t nat -X
  • sudo iptables -t mangle -F
  • sudo iptables -t mangle -X
  • sudo iptables -P INPUT ACCEPT
  • sudo iptables -P FORWARD ACCEPT
  • sudo iptables -P OUTPUT ACCEPT

Una vez que hayamos hecho esto, ya tendremos el firewall «reseteado» y con el permitir todo. Ahora que ya sabemos cómo resetearlo, vamos a ver las diferentes órdenes.

Visualizar las tablas actuales

Si quieres ver el contenido de las diferentes cadenas y reglas que tenemos en una determinada tabla, a continuación, puedes ver cómo se verían:

  • iptables -t filter –list
  • iptables -t mangle –list
  • iptables -t nat –list
  • iptables -t raw –list

Argumentos principales y para qué sirven

  • -t, –table table Selecciona la tabla que queramos
  • -A, –append chain rule-specification Añadimos una nueva regla en una determinada cadena
  • -C, –check chain rule-specification Comprobamos que existe una determinada regla en una determinada cadena
  • -D, –delete chain rule-specification Borramos la regla que pongamos en una determinada cadena
  • -D, –delete chain rulenum Borramos la regla número X en una determinada cadena
  • -I, –insert chain [rulenum] rule-specification Insertamos una nueva cadena con un número en una determinada tabla
  • -R, –replace chain rulenum rule-specification Reemplaza una determinada cadena en una tabla, sirve para moverla de número.
  • -L, –list [chain] Muestra el listado de reglas de una cadena
  • -F, –flush [chain] Elimina todas las reglas de una determinada cadena.
  • -Z, –zero [chain [rulenum]] Pone los contadores de una determinada regla a 0.
  • -N, –new-chain chain Creamos una nueva cadena en una determinada tabla
  • -X, –delete-chain [chain] Borramos una determinada cadena (vacía) en una determinada tabla
  • -P, –policy chain target Aplicamos la política por defecto, se cumple cuando ninguna regla de las cadenas se cumple.
  • -E, –rename-chain old-chain new-chain Renombra una cadena añadida anteriormente
  • -h, muestra la ayuda
  • -v, –verbose Salida que se usa en conjunto con –L, sirve para mostrar más información que lo que proporciona el comando –L.
  • -n, –numeric Las direcciones IP y los números de puertos aparecerán con números. Por ejemplo, si filtramos el puerto 80, con el –L típico aparecerá www, y no 80.
  • -x, –exact Muestra el valor exacto del contador de paquetes y bytes, en lugar de usar K, M o G para los valores.
  • –line-numbers Al mostrar el listado de reglas, mostrará el número exacto de la regla. Ideal para usar –D y el número (eliminar) o –I para introducir delante o detrás de dicha regla.

Condiciones principales

  • -p, –protocol protocol. Filtra el paquete por protocolo, el protocolo especificado puede ser: tcp, udp, Idplite, icmp, esp, ah, sctp.
  • -s, –source address[/mask][,…] Dirección IP de origen del paquete. Podemos tener una IP o una subred (indicando la máscara en formato CIDR). También podemos poner nombres de host (dominios, webs etc), pero es una mala idea porque no es eficiente. Se pueden especificar varias direcciones de origen, (192.168.1.1,192.168.1.2) pero creará diferentes reglas para satisfacerlas.
  • -d, –destination address[/mask][,…] Dirección IP de destino del paquete. Se comporta exactamente igual que -s.
  • -m, –match match. Especifica si queremos llamar a los módulos extendidos de iptables, para realizar determinadas acciones como:
    • Poner múltiples puertos de origen y destino (módulo multiport).
    • Controlar conexiones (módulo conntrack).
    • Evitar fuerza bruta (módulo recent, ideal para SSH).
    • Limitar el número de conexiones (módulo limit y connlimit).
    • Rango de direcciones IP (iprange).
  • -j, –jump target. Especifica el objetivo de la regla, si queremos aceptar, denegar e incluso reenviar el paquete a otra cadena para su posterior tratamiento. Siempre en cualquier regla vamos a tener un –j para decirle qué queremos hacer. Si no incorporamos un –j se añadirá la regla y contará los paquetes, pero no hará nada. Si utilizamos –j para reenviar a otra cadena, una vez que en la otra cadena haya terminado, volverá a la original.
  • -g, –goto chain. Sirve para reenviar el tráfico a otra cadena, pero a diferencia de jump, no volverá a la cadena original por donde entró.
  • -i, –in-interface name. Nombre de la interfaz por donde un paquete se recibe. Solo vale para las cadenas de entrada como INPUT, FORWARD y PREROUTING. Si ponemos ‘!’ Significa todas menos esa interfaz. Si ponemos un + al final del nombre, cualquier interfaz con el inicio del nombre la cogerá para comprobarla. Imaginemos eth0, eth1 y eth2. Si queremos poner las tres simplemente con poner eth+ es suficiente.
  • -o, –out-interface name. Nombre de la interfaz por donde un paquete sale. Solo vale para las cadenas de salida como OUTPUT, FORWARD y POSTROUTING.

Condiciones solamente si usas TCP o UDP

Si utilizas el protocolo TCP o UDP, es posible que quieras filtrar por número de puerto origen y/o destino, a continuación, los dos argumentos que puedes usar:

  • –sport –source-port. Selecciona puertos de origen para permitir o denegar. Si usamos ! excluye.
  • –dport –destination-port. Selecciona puertos de destino para permitir o denegar. Si usamos ! excluye.

Existen muchas más condiciones para una configuración avanzada del firewall, pero las elementales ya las tenemos listadas.

Configurar la política por defecto

Las políticas sirven para que cuando no se encuentra una regla dentro de la cadena, se ejecute la política por defecto. La política por defecto de todas las cadenas es ACCEPT, pero hay dos opciones: ACCEPT o DROP

-P, –policy chain target

Ejemplos:

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

Con esto nos quedaremos sin internet, por lo que a continuación debemos empezar a crear reglas permisivas.

A continuación, podés ver todas las políticas que tenemos en las diferentes tablas:

  • iptables -t filter -P (INPUT | OUTPUT | FORWARD) (ACCEPT | DROP)
  • iptables -P (INPUT | OUTPUT | FORWARD) (ACCEPT | DROP)
  • iptables -t mangle -P (INPUT | OUTPUT | FORWARD | PREROUTING | POSTROUTING) (ACCEPT | DROP)

Ver el estado del firewall

El parámetro -L muestra las reglas que tenemos configuradas. V permite recibir más información sobre las conexiones y N nos devuelve las direcciones IP y sus correspondientes puertos sin pasar por un servidor DNS.

  • iptables -L -n -v

Este es uno de los comandos más importantes para ver el estado del cortafuegos.

Módulos (-m match) de iptables

Multiport

Es una extensión de iptables que nos da la posibilidad de agrupar reglas similares con diferentes puertos TCP y UDP en una sola. Multiport permite poner varios puertos salteados, y también varios puertos seguidos, el máximo es de 15 argumentos de puertos. Ejemplo:

  • iptables –A INPUT –p tcp –m multiport –dports 80,81,1000:1200 –j ACCEPT

Gracias a este módulo, tenemos la posibilidad de usar varios puertos en la misma regla.

Iprange

iprange nos permite poner varias direcciones IP de origen o destino de una vez, sin necesidad de poner decenas de reglas. También permite poner tanto IP de origen como de destino, la sintaxis es la siguiente:

  • [!]–src-range ip-ip
  • [!]–dst-range ip-ip

El funcionamiento de esta regla es bastante sencillo, simplemente ponemos IP inicio e IP final.

Connlimit

El módulo connlimit se encarga de restringir el número de conexiones simultáneas realizadas por una dirección IP, es ideal para limitar el número de conexiones para evitar DoS.

  • –connlimit-upto n . Marcamos si el número de conexiones es igual o menor que N (luego podemos permitir o denegar).
  • –connlimit-above n . Marcamos si el número de conexiones es mayor que N (luego podemos permitir o denegar).
  • –connlimit-mask prefix_length . Marcamos por rango de subred (es igual que un host haga 2 conexiones, que dos host de la misma subred hagan 1 conexión cada uno).
  • –connlimit-saddr . Aplicar la limitación al grupo de origen, es la de por defecto si no se especifica nada.
  • –connlimit-daddr . Aplica la limitación al grupo de destino.

Por ejemplo, imaginemos que queremos permitir dos conexiones SSH por cliente únicamente:

  • iptables -A INPUT -p tcp –dport 22 -m connlimit –connlimit-above 2 -j DROP

No obstante, podemos hacer la regla complementaria, poniendo un accept hasta 2 conexiones.

Conntrack

Este módulo sirve para realizar un tracking de las conexiones, sirve para gestionar la entrada y salida de paquetes antes y después del establecimiento de la conexión. Dentro de este módulo hay varias opciones, pero la más importante es -ctstate que nos permite aceptar o denegar diferentes tipos de paquetes. Dentro de ctstate tenemos varios estados, destacan los siguientes:

  • INVALID: El paquete recibido es inválido y no pertenece a ninguna conexión.
  • NEW: Conexiones nuevas que se realizan, o que está asociado a una conexión que aún no es bidireccional.
  • ESTABLISHED: Conexiones establecidas, pasan primero por NEW ya que han tenido respuesta
  • RELATED: Paquete que está relacionado a una conexión existente, pero que no es parte de ella, como FTP pasivo.

Imaginemos que queremos acceder a cualquier sitio, sin embargo, no queremos que absolutamente nadie acceda a nosotros.

  • iptables –P INPUT DROP
  • iptables -A INPUT -m conntrack –ctstate ESTABLISHED,RELATED -j ACCEPT

Limit

El módulo limit nos permite limitar, tanto tráfico, como número de logs a escribir en el syslog como intentos de conexión. Tiene dos argumentos principalmente:

  • –limit N . Este argumento especifica el número máximo de coincidencias de media por segundo (N/s), minuto (N/m), hora (N/h) o día (N/d) a permitir. N especifica el número
  • –limit-burst N . Indica la ráfaga más larga que se puede producir antes de comprobar el límite –limit.

El valor por defecto si no se especifica nada es 3 coincidencias por hora, a ráfagas de 5. Imaginemos la siguiente regla: «iptables -A INPUT -m limit -j LOG», el funcionamiento es el siguiente:

  • La primera vez que se alcanza esta regla, se registran los primeros cinco paquetes.
  • Después, pasarán veinte minutos antes de que vuelva a registrarse un paquete con esta regla (3 coincidencias entre 60 minutos igual a 20 minutos, ya que es MEDIA).
  • Además, cada veinte minutos que pasen sin que un paquete alcance la regla, la ráfaga recuperará un paquete.
  • Si no sucede nada durante 100 minutos, la ráfaga quedará completamente recargada; de vuelta entonces a la situación inicial.

Recent

El módulo recent sirve para limitar el número de conexiones por segundo a nivel de IP, esto es ideal para protegernos de ataques al puerto SSH porque un atacante probará múltiples contraseñas. Por ejemplo, si queremos proteger nuestro SSH, podríamos ejecutar la siguiente regla:

  • iptables -A INPUT -p tcp –dport 22 -m conntrack –ctstate NEW -m recent –set –name ssh –rsource
  • iptables -A INPUT -p tcp –dport 22 -m state –state NEW -m recent –rcheck –seconds 60 –hitcount 4 –name ssh –rsource -j DROP

Esta regla permite solamente hacer cuatro intentos de conexión al cabo de 60 segundos, es una ventana «deslizante».

NAT

Este firewall también se encarga de hacer NAT de nuestra conexión. Para hacer el NAT de nuestra IP pública (o interfaz que tenga esta IP pública), debemos poner:

  • SNAT Estático: iptables -t nat -A POSTROUTING -s 192.168.1.0/24 –o eth1 -j SNAT –to IP_eth1
  • SNAT Dinámico: iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth1 -j MASQUERADE

Lo normal es usar MASQUERADE para hacer NAT independientemente de la dirección IP que tenga la interfaz física o lógica.

Para abrir puertos tenemos que añadir una regla en la cadena PREROUTING de la tabla NAT.

  • iptables -t nat -A PREROUTING -i eth1 -p tcp –dport 22 -j DNAT –to-destination 192.168.1.1

La tabla PREROUTING también nos permite modificar los puertos al vuelo, de tal forma que, si recibimos paquetes en el puerto 2121, lo podemos transformar al 21.

  • iptables -t nat -A PREROUTING -i eth1 -p tcp –dport 2121 -j DNAT –to-destination 192.168.1.1:21

Una vez que ya conocemos en detalle este cortafuegos, vamos a ver los ejemplos básicos de utilización y también los más avanzados.

Ejemplos básicos de utilización

Este firewall es muy completo y tenemos cientos de comandos:

Bloquear la dirección IP 192.168.1.10 para que no realice ninguna comunicación a nuestro servidor:

  • iptables -A INPUT –s 192.168.1.10 –j DROP

Si quieres bloquear las direcciones IP 192.168.1.20, 192.168.1.30, 192.168.1.40, 192.168.1.50 para que no realicen ninguna comunicación a nuestro servidor:

  • iptables -A INPUT –s 192.168.1.20,192.168.1.30,192.168.1.40,192.168.1.50 –j DROP

Bloquear toda la subred 192.168.2.0/24 para que no realicen ninguna comunicación a nuestro servidor, excepto la dirección IP 192.168.2.20 que sí se permitiría:

  • iptables –A INPUT –s 192.168.2.20 –j ACCEPT
  • iptables –A INPUT –s 192.168.2.0/24 –j DROP

Bloquear la dirección IP de 192.168.4.50 para que no puedas hacer ninguna comunicación:

  • iptables –A OUTPUT –d 192.168.4.50 –j DROP

Si queremos bloquear las direcciones IP 192.168.4.51 y 192.168.4.52 para que nosotros no podamos hacer ninguna comunicación:

  • iptables –A OUTPUT –d 192.168.4.51,192.168.4.52 –j DROP

Bloquear el acceso a www.google.es desde iptables:

Bloquear el acceso a nuestro servidor de la MAC 00:01:02:03:04:05, y el resto permitir todo:

  • iptables -A INPUT -m mac –mac-source 00:01:02:03:04:05 -j DROP

Permitir el acceso a nuestro servidor a la dirección MAC MAC 00:01:02:03:04:06, y el resto denegar todo:

  • iptables -A INPUT -m mac –mac-source 00:01:02:03:04:05 -j ACCEPT
    iptables -A INPUT -j DROP

Bloquear la dirección IP 192.168.1.10 para realizar ping desde nuestro nuestro servidor:

  • iptables -A INPUT -s 192.168.1.10 -p icmp -j DROP

Bloquear las direcciones IP 192.168.1.20, 192.168.1.30, 192.168.1.40, 192.168.1.50 para que no realicen PING a nuestro servidor (en una sola regla):

  • iptables -A INPUT -s 192.168.1.20,192.168.1.30,192.168.1.40,192.168.1.50 -p icmp -j DROP

Para bloquear toda la subred 192.168.2.0/24 para que no realicen PING a nuestro servidor, excepto la dirección IP 192.168.2.20 que sí se permitiría:

  • iptables -A INPUT -s 192.168.2.20 -p icmp -j ACCEPT
    iptables -A INPUT -s 192.168.2.0/24 -p icmp -j DROP

Más ejemplos:

También para bloquear la dirección IP de 192.168.4.50 para que nosotros no podamos hacer ping.

  • iptables -A OUTPUT -d 192.168.4.50 -p icmp -j DROP

Y bloquear las direcciones IP 192.168.4.51 y 192.168.4.52 para que nosotros no podamos hacer ping.

  • iptables -A OUTPUT -d 192.168.4.51,192.168.4.52 -p icmp -j DROP

Bloquear el acceso a www.google.es desde iptables.

Tal y como podes ver, el funcionamiento es bastante sencillo con las reglas basadas en IP con origen y destino. También podríamos usar el módulo iprange para configurar un rango de IPs:

Bloquear un rango de direcciones IP que van desde 192.168.5.1 hasta la dirección 192.168.5.50 para que no puedan hacer ping desde nuestro servidor.

  • iptables -A OUTPUT -m iprange –dst-range 192.168.5.1-192.168.5.50 -p icmp -j DROP

También podemos filtrar de forma más avanzada el protocolo ICMP. Imaginemos que tenemos un usuario que quiere poder hacer ping a cualquier host, pero, sin embargo, no quiere que NADIE le pueda hacer ping a él. ¿Cómo lo podemos hacer con iptables si el propio PING tiene comunicación bidireccional?

  • iptables -A INPUT -s IP -p icmp –icmp-type echo-request -j DROP

Bloquear cualquier acceso entrante por la interfaz eth0 (únicamente), por lo tanto, permitir el acceso eth1.

  • iptables -A INPUT -i eth0 -j DROP
  • iptables -A INPUT -i eth1 -j ACCEPT

Bloquear el tráfico saliente por la interfaz eth0 (únicamente), por lo tanto, permitir el acceso eth1.

  • iptables -A OUTPUT -o eth0 -j DROP
  • iptables -A OUTPUT -o eth1 -j ACCEPT

Permitir cualquier tipo de tráfico entrante y saliente por eth0, y denegar cualquier tráfico entrante o saliente por eth1.

  • iptables -A INPUT -i eth0 -j ACCEPT
  • iptables -A OUTPUT -o eth0 -j ACCEPT
  • iptables -A INPUT -i eth1 -j DROP
  • iptables -A OUTPUT -o eth1 -j DROP

Si quieres empezar a ver cómo funciona el protocolo TCP y UDP:

Bloquear el acceso web a www.google.es y permitir todo lo demás (ping) por ejemplo.

Por otro lado, para bloquear el acceso FTP a cualquier IP o dominio, y permitir todo lo demás.

  • iptables -A OUTPUT -p tcp –dport 21 -j DROP

Si lo que buscas es bloquear el acceso SSH a la IP 192.168.1.50, y permitir todo lo demás.

  • iptables -A OUTPUT -d 192.168.1.50 -p tcp –dport 22 -j DROP

Para bloquear el acceso Telnet a la subred 192.168.2.0, y permitir todo lo demás.

  • iptables -A OUTPUT -d 192.168.2.0/24 -p tcp –dport 23 -j DROP

Más ejemplos:

Bloquear el acceso de 192.168.1.50 a nuestro servidor web.

  • iptables -A INPUT -s 192.168.1.50 -p tcp –dport 80 -j DROP

Bloquear el acceso de 192.168.1.150 y 192.168.1.151 a nuestro servidor SSH.

  • iptables -A INPUT -s 192.168.1.150,192.168.1.151 -p tcp –dport 22 -j DROP

Si quieres bloquear el acceso de toda la subred 192.168.2.0/24 a nuestro servicio telnet

  • iptables -A INPUT -s 192.168.2.0/24 -p tcp –dport 23 -j DROP

Bloquear el acceso de todo el mundo al servidor OpenVPN, excepto la dirección IP 77.77.77.77 que sí se permite.

  • iptables -A INPUT -s 77.77.77.77 -p tcp –dport 1194 -j ACCEPT
  • iptables -A INPUT -p tcp –dport 1194 -j DROP

En cambio, para bloquear el acceso DNS a 8.8.8.8 y permitir todo lo demás (ping) por ejemplo.

  • iptables -A OUTPUT -d 8.8.8.8 -p tcp –dport 53 -j DROP
  • iptables -A OUTPUT -d 8.8.8.8 -p udp –dport 53 -j DROP

Para bloquear el acceso al puerto 1194 a cualquier IP o dominio, y permitir todo lo demás.

  • iptables -A INPUT -p udp –dport 1194 -j DROP

Tenemos un servidor DNS en nuestro servidor. Queremos que solo los equipos de la subred 192.168.1.0/24 se puedan comunicar con él, y bloquear todos los demás accesos.

  • iptables -A INPUT -s 192.168.1.0/24 -p tcp –dport 53 -j ACCEPT
  • iptables -A INPUT -s 192.168.1.0/24 -p udp –dport 53 -j ACCEPT
  • iptables -A INPUT -p tcp –dport 53 -j DROP
  • iptables -A INPUT -p udp –dport 53 -j DROP

Bloquear el acceso a nuestro servidor web, del rango de IP 192.168.100.0/24, que proviene de la interfaz eth0.

  • iptables -A INPUT -s 192.168.100.0/24 -i eth0 -p tcp –dport 80 -j DROP

Bloquear el acceso a nuestro servidor ssh, del rango de IP 192.168.100.0/24, que proviene de la interfaz eth1.

  • iptables -A INPUT -s 192.168.100.0/24 -i eth1 -p tcp –dport 22 -j DROP

Ejemplos avanzados de uso

Si quieres aprender más sobre iptables, a continuación, algunos ejemplos donde hacemos uso del módulo connlimit.

Permitir únicamente 10 conexiones Telnet por cliente.

  • iptables -A INPUT -p tcp –dport 23 -m connlimit –connlimit-above 10 –connlimit-mask 32 -j DROP

Denegar hasta la conexión número 5 en web que realice un cliente (no tiene mucho sentido, pero es un ejemplo).

  • iptables -A INPUT -p tcp –dport 80 -m connlimit –connlimit-upto 5 –connlimit-mask 32 -j DROP

Si quieres permitir únicamente 10 conexiones Telnet por cliente (hacerlo de otra manera al anterior).

  • iptables -A INPUT -p tcp –dport 23 -m connlimit –connlimit-upto 10 –connlimit-mask 32 -j ACCEPT
  • iptables -A INPUT -p tcp –dport 23 -j DROP

Permitir únicamente 10 conexiones web en el rango de IP 10.0.0.0/8, y denegar si supera este número.

  • iptables -A INPUT -s 10.0.0.0/8 -p tcp –dport 80 -m connlimit –connlimit-above 10 –connlimit-mask 8 -j DROP

Pero, si buscas permitir únicamente 20 conexiones HTTP por cada cliente, en cuanto se supere mandamos un TCP Reset.

  • iptables -A INPUT -p tcp –dport 80 -m connlimit –connlimit-above 20 –connlimit-mask 32 -j REJECT –reject-with tcp-reset

O esta forma:

  • iptables -A INPUT -p tcp –syn –dport 80 -m connlimit –connlimit-above 20 –connlimit-mask 32 -j REJECT –reject-with tcp-reset

Tal y como podes ver, este firewall es realmente completo y podremos hacer una gran cantidad de configuración muy avanzadas, para controlar en detalle todas las conexiones entrantes y salientes.

También cabe recordar que los cambios que podamos realizar en la configuración de iptables, son efímeros, por lo cual debemos guardarlos para que estos persistan tras posibles reinicios que se puedan producir en el servidor.

¿Qué es el firewall Ferm y para qué sirve?

Ferm (For Easy Rule Making) es un frontend de iptables, esto significa que, por debajo, realmente está utilizando iptables para permitir o denegar el tráfico, pero nos permite configurar de forma muy avanzada el firewall sin necesidad de aprendernos la sintaxis de iptables ni realizar diferentes scripts haciendo uso de iptables, sino que lo haremos directamente con Ferm. Esta herramienta es capaz de leer las reglas de un archivo de configuración que nosotros vamos a definir, y posteriormente «llamará» a iptables para ir añadiendo las diferentes reglas una a una, insertándose en tiempo real en el kernel.

El objetivo de Ferm es proporcionar a los administradores de sistemas y redes una forma fácil de leer y escribir todas las reglas del cortafuegos, reduciendo la tarea de tener que escribir una regla tras otra, por lo que podremos dedicar más tiempo al desarrollo y optimización de las reglas, para que sean lo más eficientes posible. Ferm utiliza un lenguaje de configuración muy simple pero bastante avanzado, podremos utilizar variables, funciones, arrays e incluso bloques. Otras opciones muy interesantes de Ferm es que nos permitirá incluir otros archivos de configuración en un directorio, y se encargará de importar y aplicar todas esas reglas de forma automática.

Ferm no deja de ser un frontend de iptables, por tanto, cuando utilicemos esta herramienta, siempre vamos a poder editar y configurar directamente el firewall haciendo uso de los comandos de iptables. De hecho, Ferm es capaz de importar las reglas actuales de iptables y ponerlas automáticamente en el archivo de configuración, para posteriormente editarlas o ampliarlas.

Alternativas a iptables

El mercado de firewalls está lleno de opciones, las cuales varían mucho en características. Por lo cual, si no te acaba de convencer, o necesitas algo que este no te ofrece, vamos a ver algunas alternativas.

pfSense

Es una aplicación de firewall de código abierto y basada en el sistema operativo FreeBSD. Se utiliza para crear reglas de firewall dedicadas, siendo muy fiable y ofreciendo diferentes características que hacen de él uno de los más famosos y comerciales. Entre sus principales características podemos destacar:

  • Es altamente configurable y se puede actualizar desde la interfaz web.
  • Se puede utilizar como firewall perimetral, enrutador, servidor DHCP y DNS.
  • Cuenta con balanceo de carga entrante y saliente.
  • Se puede utilizar como punto de acceso y punto final de VPN.

IPCop Firewall

Se trata de una distribución de Linux, y está muy enfocado a sistemas domésticos y pequeñas empresas u oficinas. Es muy sencillo de utilizar por lo cual es accesible, y se puede utilizar como una VPN, por lo cual se pueden reducir costes en este sentido. Entre sus características más destacadas podemos ver:

  • La interfaz gráfica es sencilla.
  • Se pueden visualizar y rotar los registros automáticamente.
  • Da soporte a muchos idiomas.
  • Es sencillo de implementar, y se encuentra con actualizaciones constantes.

Shorewall

Se trata de una herramienta donde poder configurar un firewall o un Gateway para Linux. Es una herramienta de alto nivel, por lo cual se necesitan ciertos conocimientos para poder configurar filtros de red y establecer los requisitos del firewall. Este puede realizar lecturas de archivos de configuración gracias a la ayuda de iptables. Entre sus principales características se pueden destacar:

  • Permite configurar Netfliter para que coincida con los requisitos establecidos.
  • Se puede utilizar en sistemas de firewall dedicado.
  • Puede hacer la función de enrutador.
  • Puede instalarse como servidor multi-función.

Lee Nuestra Guía Completa:

No te detengas, sigue avanzando….

Aquí tienes un propósito para este 2024 que debes considerar seriamente: si has querido mejorar tus habilidades en redes, hacking y seguridad cibernética pero nunca lo has logrado, ahora es definitivamente el momento de dar el siguiente paso. Nuestros cursos. ¡Desarrolla tus habilidades aprovechando nuestros cursos a un precio increíble! Aprende Redes y Hacking y avanza en tu carrera.

CCNA 200-301: Introducción a las Redes

Cisco es una empresa que existe desde 1984. Su reconocimiento y popularidad en las empresas es conocida por su excelencia en el producto y servicio.

A raíz de tener tantos años en el mercado, muchas empresas hoy tienen sus redes conformadas por Cisco, lo cual hace que necesiten de personas con conocimientos en sus tecnologías para que puedan administrar sus redes.

Por esa razón, saber de redes y entender como funciona la tecnología Cisco, es clave. Y no solo eso, además de enseñarte todo lo que debes de conocer sobre esta marca y sus redes, te prepararemos para que si quieres, puedas certificarte en Cisco.

Te enseñaremos:

  • Una base sólida en los principales temas que se cubren a lo largo de la certificación
  • Entender cómo funciona internamente una red en lo que a protocolos se refiere
  • un primer acercamiento a los fundamentos de la seguridad de la red
  • posibles amenazas, ataques, mitigación de los mismos y automatización en redes con cisco
  • armar su primera red funcional dentro del simulador, sería una red pequeña, pero con eso ya quedarían las bases sentadas para seguir en CCNA 2

Contaras con nuestra supervisión, experiencia y respuesta a todas tus preguntas que tengas sobre el contenido.

Así también sobre las actualizaciones que hagamos sobre el curso, el cual será tuyo de por vida y recibirás dichas actualizaciones sin tener que volver a pagar.

Yo soy Álvaro Chirou, tengo más de 20 Años de experiencia trabajando en Tecnología, eh dado disertaciones en eventos internacionales como OWASP, tengo más de 500.000 estudiantes en Udemy y 100 formaciones profesionales impartidas en la misma.

Y junto a mi compañero Andrés Muro, formado en CCNA y CyberOps, hemos creado esta formación profesional para que te puedas preparar para rendir una de las certificaciones más demandadas del mercado.

Empieza a aprender ya mismo!

Lo que aprenderás

  • Planear, crear y desplegar una red desde 0
  • Entender cómo solucionar los distintos problemas que se puedan llegar a presentar
  • Comprender las posibles amenazas que podrían comprometer, tanto a un único host, como a toda la red
  • Crear redes a medida, según los requisitos del cliente
  • Tendrán una base sólida en redes, tanto para certificarse como CCNA, como para introducirse en otras áreas, como lo es la ciberseguridad

Introducción de Camino a la Certificación del CCA, donde vas a tener tu primer acercamiento al mundo de las redes.

¿Te gustaría enterarte de cuando lanzamos descuentos y nuevos cursos?

Sobre los autores

Álvaro Chirou

Yo soy Álvaro Chirou, tengo más de 20 Años de experiencia trabajando en Tecnología, eh dado disertaciones en eventos internacionales como OWASP, tengo más de 1.800.000 estudiantes en Udemy y 100 formaciones profesionales impartidas en la misma. Puedes serguirme en mis redes:

Laprovittera Carlos

Soy Laprovittera Carlos. Con más de 20 años de experiencia en IT brindo Educación y Consultoría en Seguridad de la Información para profesionales, bancos y empresas. Puedes saber más de mi y de mis servicios en mi sitio web: laprovittera.com y seguirme en mis redes:

¿Quieres iniciarte en hacking y ciberseguridad pero no sabes por dónde empezar? Inicia leyendo nuestra guia gratuita: https://achirou.com/como-iniciarse-en-ciberseguridad-y-hacking-en-2024/ que te lleva de 0 a 100. Desde los fundamentos más básicos, pasando por cursos, recursos y certificaciones hasta cómo obtener tu primer empleo.

Cómo Iniciarse en Hacking y Ciberseguridad en 2024

Continúa leyendo: