Introducción
A firewall is a system that provides network security by filtering incoming and outgoing network traffic based on a set of user-defined rules. In general, the purpose of a firewall is to reduce or eliminate the occurrence of unwanted network communications while allowing all legitimate communication to flow freely. In most server infrastructures, firewalls provide an essential layer of security that, combined with other measures, prevent attackers from accessing your servers in malicious ways.
Esta guía discutirá cómo funcionan los firewalls, con un enfoque en los firewalls de software stateful, como iptables y FirewallD, en relación con los servidores en la nube. Comenzaremos con una breve explicación de los paquetes TCP y los diferentes tipos de firewalls. Luego discutiremos una variedad de temas relevantes para los firewalls stateful. Por último, proporcionaremos enlaces a otros tutoriales que lo ayudarán a configurar un firewall en su propio servidor.
Paquetes de Red TCP
Antes de discutir los diferentes tipos de firewalls, echemos un vistazo rápido a cómo se ve el tráfico de red del Protocolo de Control de Transmisión (TCP).
El tráfico de red TCP se mueve alrededor de una red en paquetes, que son contenedores que consisten en un encabezado de paquete (que contiene información de control como direcciones de origen y destino, e información de secuencia de paquetes) y los datos (también conocidos como carga útil). Mientras que la información de control en cada paquete ayuda a garantizar que sus datos asociados se entreguen correctamente, los elementos que contiene también proporcionan a los firewalls una variedad de formas de comparar los paquetes con las reglas del firewall.
Es importante tener en cuenta que para recibir correctamente los paquetes TCP entrantes, el receptor debe enviar paquetes de reconocimiento salientes de vuelta al remitente. La combinación de la información de control en los paquetes entrantes y salientes se puede utilizar para determinar el estado de la conexión (por ejemplo, nueva, establecida, relacionada) entre el remitente y el receptor.
Tipos de Firewalls
Discutamos rápidamente los tres tipos básicos de firewalls de red: filtrado de paquetes (sin estado), stateful y de capa de aplicación.
Los firewalls de filtrado de paquetes, o sin estado, funcionan inspeccionando paquetes individuales de forma aislada. Como tal, no son conscientes del estado de la conexión y solo pueden permitir o denegar paquetes basándose en los encabezados de los paquetes individuales.
Los firewalls stateful pueden determinar el estado de conexión de los paquetes, lo que los hace mucho más flexibles que los firewalls sin estado. Funcionan recopilando paquetes relacionados hasta que se pueda determinar el estado de la conexión antes de que se apliquen las reglas de firewall al tráfico.
Los firewalls de aplicación van un paso más allá al analizar los datos que se están transmitiendo, lo que permite que el tráfico de red se empareje con reglas de firewall que son específicas para servicios o aplicaciones individuales. También se les conoce como firewalls basados en proxy.
Además del software de firewall, que está disponible en todos los sistemas operativos modernos, la funcionalidad de firewall también puede ser proporcionada por dispositivos de hardware, como routers o dispositivos de seguridad de firewall. Nuestra discusión nuevamente se centrará en firewalls de software stateful que se ejecutan en los servidores que están destinados a proteger.
Reglas de Firewall
Como se mencionó anteriormente, el tráfico de red que atraviesa un firewall se corresponde con reglas para determinar si debe permitirse o no. Una forma fácil de explicar cómo se ven las reglas de firewall es mostrar algunos ejemplos, así que lo haremos ahora.
Supongamos que tienes un servidor con esta lista de reglas de firewall que se aplican al tráfico entrante:
- Aceptar tráfico entrante nuevo y establecido a la interfaz de red pública en los puertos 80 y 443 (tráfico web HTTP y HTTPS)
- Descartar tráfico entrante de las direcciones IP de los empleados no técnicos en tu oficina al puerto 22 (SSH)
- Aceptar tráfico entrante nuevo y establecido desde el rango de IP de tu oficina a la interfaz de red privada en el puerto 22 (SSH)
Tenga en cuenta que la primera palabra en cada uno de estos ejemplos es “aceptar”, “rechazar” o “descartar”. Esto especifica la acción que el firewall debe realizar en caso de que un tráfico de red coincida con una regla. Aceptar significa permitir el tráfico, rechazar significa bloquear el tráfico pero responder con un error “inaccesible”, y descartar significa bloquear el tráfico y no enviar ninguna respuesta. El resto de cada regla consiste en la condición contra la que se debe coincidir cada paquete.
Resulta que el tráfico de red se compara con una lista de reglas de firewall en una secuencia, o cadena, de principio a fin. Más específicamente, una vez que se cumple una regla, la acción asociada se aplica al tráfico de red en cuestión. En nuestro ejemplo, si un empleado de contabilidad intentara establecer una conexión SSH con el servidor, sería rechazado según la regla 2, antes de que se verifique la regla 3. Sin embargo, un administrador del sistema sería aceptado porque solo coincidiría con la regla 3.
Política Predeterminada
Es típico que una cadena de reglas de firewall no cubra explícitamente todas las posibles condiciones. Por esta razón, las cadenas de firewall siempre deben tener especificada una política predeterminada, que consiste solo en una acción (aceptar, rechazar o descartar).
Supongamos que la política predeterminada para la cadena de ejemplos anterior se estableció en drop. Si alguna computadora fuera de su oficina intentara establecer una conexión SSH con el servidor, el tráfico se bloquearía porque no coincide con las condiciones de ninguna regla.
Si la política predeterminada se estableciera en accept, cualquier persona, excepto sus propios empleados no técnicos, podría establecer una conexión con cualquier servicio abierto en su servidor. Esto sería un ejemplo de un firewall muy mal configurado porque solo mantiene fuera a un subconjunto de sus empleados.
Tráfico Entrante y Saliente
Como el tráfico de red, desde la perspectiva de un servidor, puede ser entrante o saliente, un firewall mantiene un conjunto de reglas distintas para cada caso. El tráfico que se origina en otro lugar, tráfico entrante, se trata de manera diferente al tráfico saliente que el servidor envía. Es típico que un servidor permita la mayoría del tráfico saliente porque el servidor suele considerarse a sí mismo confiable. Sin embargo, el conjunto de reglas salientes se puede utilizar para evitar comunicaciones no deseadas en caso de que un servidor sea comprometido por un atacante o un ejecutable malicioso.
Para maximizar los beneficios de seguridad de un firewall, debe identificar todas las formas en que desea que otros sistemas interactúen con su servidor, crear reglas que los permitan explícitamente y luego rechazar todo otro tráfico. Tenga en cuenta que las reglas salientes apropiadas deben estar en su lugar para que un servidor se permita enviar acuses de recibo salientes a cualquier conexión entrante apropiada. Además, como un servidor típicamente necesita iniciar su propio tráfico saliente por diversas razones, por ejemplo, descargar actualizaciones o conectarse a una base de datos, es importante incluir esos casos en su conjunto de reglas salientes.
Redacción de Reglas Salientes
Supongamos que nuestro firewall de ejemplo está configurado para rechazar el tráfico saliente de forma predeterminada. Esto significa que nuestras reglas de aceptación entrante serían inútiles sin reglas salientes complementarias.
Para complementar las reglas de firewall de ejemplo entrantes (1 y 3), de la sección de Reglas de Firewall, y permitir que ocurra una comunicación adecuada en esas direcciones y puertos, podríamos usar estas reglas de firewall salientes:
- Aceptar tráfico saliente establecido a la interfaz de red pública en los puertos 80 y 443 (HTTP y HTTPS)
- Aceptar tráfico saliente establecido a la interfaz de red privada en el puerto 22 (SSH)
Ten en cuenta que no necesitamos escribir explícitamente una regla para el tráfico entrante que se descarta (regla de entrada 2) porque el servidor no necesita establecer o reconocer esa conexión.
Software y herramientas de firewall
Ahora que hemos repasado cómo funcionan los firewalls, echemos un vistazo a paquetes de software comunes que pueden ayudarnos a configurar un firewall efectivo. Si bien hay muchos otros paquetes relacionados con el firewall, estos son efectivos y son los que encontrarás más frecuentemente.
Iptables
Iptables es un firewall estándar incluido en la mayoría de las distribuciones de Linux de forma predeterminada (una variante moderna llamada nftables comenzará a reemplazarlo). En realidad, es una interfaz frontal para los ganchos de netfilter a nivel de kernel que pueden manipular la pila de red de Linux. Funciona haciendo coincidir cada paquete que cruza la interfaz de red contra un conjunto de reglas para decidir qué hacer.
Para aprender cómo implementar un firewall con iptables, consulta estos enlaces:
- Cómo configurar un firewall utilizando IPTables en Ubuntu 14.04
- Cómo implementar una plantilla básica de firewall con Iptables en Ubuntu 14.04
- Cómo configurar un firewall de Iptables para proteger el tráfico entre tus servidores
UFW
UFW, que significa Firewall No Complicado, es una interfaz para iptables que está diseñada para simplificar el proceso de configuración de un firewall.
Para obtener más información sobre el uso de UFW, consulta este tutorial: Cómo configurar un firewall con UFW en un servidor en la nube Ubuntu y Debian.
FirewallD
FirewallD es una solución completa de firewall disponible de forma predeterminada en los servidores CentOS 7. Curiosamente, FirewallD utiliza iptables para configurar netfilter.
Para obtener más información sobre el uso de FirewallD, consulta este tutorial: Cómo configurar FirewallD para proteger tu servidor CentOS 7.
Si estás ejecutando CentOS 7 pero prefieres usar iptables, sigue este tutorial: Cómo Migrar de FirewallD a Iptables en CentOS 7.
Fail2ban
Fail2ban es un software de prevención de intrusiones que puede configurar automáticamente tu firewall para bloquear intentos de inicio de sesión por fuerza bruta y ataques de DDOS.
Para obtener más información sobre Fail2ban, consulta estos enlaces:
- Cómo Funciona Fail2ban para Proteger Servicios en un Servidor Linux
- Cómo Proteger SSH con Fail2Ban en Ubuntu 14.04
- Cómo Proteger un Servidor Nginx con Fail2Ban en Ubuntu 14.04
- Cómo Proteger un Servidor Apache con Fail2Ban en Ubuntu 14.04
Conclusión
Ahora que comprendes cómo funcionan los firewalls, deberías investigar la implementación de un firewall que mejore la seguridad de tu configuración de servidor utilizando los tutoriales anteriores.
Si deseas aprender más sobre cómo funcionan los firewalls, consulta estos enlaces:
Source:
https://www.digitalocean.com/community/tutorials/what-is-a-firewall-and-how-does-it-work