Firewall frente a WAF: qué ve y qué detiene cada uno
Un firewall con estado lee direcciones, puertos y estado de conexión; un WAF lee la propia petición HTTP, y un formulario de login necesita los dos, en serie.
En este artículo 5 secciones
- Un firewall con estado decide sobre el sobre: origen, destino, puerto y estado de la conexión. Un bot que adivina contraseñas en un formulario de login envía peticiones bien formadas a un puerto que tiene que estar abierto, así que el firewall las deja pasar.
- Un WAF, o un proxy inverso haciendo el trabajo de un WAF, decide sobre el contenido: ruta, método, cuerpo, código de respuesta y tasa por cliente. Los logins fallidos, los intentos de inyección y los scrapers solo son visibles ahí.
- Los dos encajan en serie. El firewall reduce lo que puede llegar al proxy; el proxy detecta el abuso en el flujo de peticiones y puede devolver una dirección al filtro de paquetes, con una caducidad y una lista de permitidos para el operador.
Qué decide un firewall con estado
Un firewall de capa 3/4 sigue las conexiones y juzga cada una nueva por sus direcciones, su puerto y el estado del flujo al que pertenece. Cisco Firepower, OPNsense y netfilter lo hacen bien: un puerto que ninguna regla abre está cerrado, una respuesta se permite solo para una conexión que inició el interior, y los puertos de gestión responden solo a los rangos que están en la lista de permitidos. Su visión termina en la capa de transporte. Con TLS en la ruta no puede ver dentro de la carga útil en absoluto a menos que termine la sesión, e incluso en claro no tiene concepto de URL, de cabecera, de código de estado de respuesta ni de login.
Qué añade un WAF
Un firewall de aplicaciones web lee la transacción HTTP después de la terminación TLS, lo que en la práctica significa que vive en el proxy inverso o junto a él. Añade tres clases de control que el firewall no puede expresar. Las reglas de firma, como ModSecurity con el OWASP Core Rule Set, detectan inyección, traversal y payloads de exploits conocidos en la petición. Las reglas de comportamiento cuentan por cliente y por ruta: peticiones por minuto en la ruta de login, respuestas de login fallido por dirección, señales de bot en cabeceras y tiempos. Las reglas positivas declaran qué acepta una ruta, como qué métodos, qué tipos de contenido y qué tamaño de cuerpo, y rechazan el resto.
Un WAF no sustituye al firewall. Solo ve el tráfico que llega hasta él, y no sabe nada de SSH, de los puertos de base de datos ni del plano de gestión.
Dónde se hace visible el abuso de login
Un login fallido es un hecho en la respuesta. La aplicación responde a un POST a la ruta de login con un estado o una redirección que distingue el fallo del éxito, y el proxy lo escribe en su registro de acceso en cada intento. Contar fallos por cliente y por minuto es una línea de awk sobre ese registro, y es la señal que un filtro de paquetes no tiene forma de ver.
El control tiene que estar indexado por cliente, no por cuenta. El bloqueo de cuenta por sí solo detiene los intentos contra un nombre de usuario y deja fuera a su propietario, mientras el bot pasa al siguiente nombre de su lista. Un límite de tasa por cliente en la ruta de login hace lo que el bloqueo no puede:
# nginx: at most 5 login attempts a minute per client, small burst allowed
limit_req_zone $binary_remote_addr zone=login:10m rate=5r/m;
location = /login {
limit_req zone=login burst=5 nodelay;
proxy_pass http://app;
}HAProxy expresa la misma idea con una stick table indexada por dirección de origen, y un conjunto de reglas de WAF puede contar directamente el código de respuesta de login fallido.
Cómo encajan los dos
El orden es firewall, después terminación TLS y el proxy con sus reglas de WAF, después la aplicación. La detección pertenece a la capa 7, porque ahí están las pruebas. La aplicación de la medida puede estar en cualquiera de las dos capas. El proxy puede responder al cliente infractor con un 429 o un 403 en su siguiente petición, lo que basta para la mayor parte del abuso. Para un cliente que insiste, el proxy puede empujar la dirección a la tabla dinámica del filtro de paquetes durante un periodo fijado, lo que además corta las otras conexiones de ese cliente y no le cuesta nada al firewall por paquete.
Dos puntos de diseño van antes de armar ese bucle de realimentación. Los rangos de gestión y de monitorización del operador entran primero en la lista de permitidos, para que una prueba o una errata no pueda dejar fuera a las personas que operan la plataforma. Y las direcciones compartidas son reales: un NAT de oficina o un NAT de operador pone a muchas personas detrás de una dirección, así que los bloqueos llevan una caducidad corta y una forma documentada de levantarlos. Toda la cadena se prueba después desde un host fuera de la red, como la encontraría un atacante, antes de que nadie confíe en ella.
Qué no ve ninguno de los dos
Una contraseña correcta. El credential stuffing con una contraseña filtrada y válida parece un login correcto para todas las capas. Esa brecha se cierra con autenticación multifactor en la cuenta y con la lista de permitidos para las rutas administrativas en el firewall, de modo que una credencial válida sea inútil desde una dirección que no es la suya.
Respuestas directas
¿Cuál es la diferencia entre un firewall y un WAF?+
Un firewall con estado trabaja en la capa 3/4 y decide sobre direcciones, puertos y estado de conexión. Un WAF trabaja en la capa 7 y decide sobre el contenido de la petición y la respuesta HTTP. Un intento de login es un evento de capa 7, así que solo el WAF o el proxy pueden saber si falló.
¿Puede un firewall detener el credential stuffing en un formulario de login?+
Por sí solo, no. Los intentos son peticiones bien formadas a un puerto abierto, que es lo que el firewall está hecho para permitir. El fallo está en la respuesta, una capa más arriba. Cuéntelo en el proxy y deje que el proxy decida, o alimente el firewall con esa decisión.
¿Necesito un appliance WAF si ya uso nginx o HAProxy?+
A menudo no. ModSecurity funciona como módulo en nginx y Apache, HAProxy tiene stick tables para seguimiento de tasa y de abuso, y ambos registran los códigos de respuesta que revelan el abuso de login. El proxy que ya tiene ve todo lo que vería un WAF; la pregunta es si alguien ha escrito las reglas.
¿Los bloqueos deben hacerse en el proxy o en el firewall?+
Detecte en el proxy, porque ahí están las pruebas. Aplique en el proxy en la mayoría de los casos, y escale al filtro de paquetes para los orígenes persistentes, con una caducidad, una lista de permitidos del operador y una vía de liberación para las direcciones compartidas.
El abuso de login es un problema de capa 7.
Hable con un ingeniero sobre dónde se vigila el suyo.
Hable con un ingenieroHa llegado al final.
Ponga la lectura a trabajar
¿Qué está ejecutando?
Cuéntenos la carga de trabajo, el tráfico y los requisitos de recuperación. Empiece por el configurador de servidores o repase los detalles con un ingeniero.
Escrito por los ingenieros que construyen y operan la infraestructura que describe.Hable con un ingeniero
