Home Artículos técnicos Ejecutando un WAF Multi-Tenant en el Edge
Applications

Ejecutando un WAF Multi-Tenant en el Edge

About The Author

Outline

Los firewalls de aplicaciones web (WAFs) son una capa crítica en la seguridad web moderna, proporcionando la primera línea de defensa de un sitio web contra vulnerabilidades. WAFS se puede utilizar para defenderse y notificar de intentos de exploits, permitiendo mitigaciones más rápidas de lo que las organizaciones pueden parchear software vulnerable. Esta funcionalidad debe implementarse de manera sensible al rendimiento para una CDN global, proporcionando tiempos de respuesta del orden de milisegundos. Cuando introdujimos un motor WAF a los Servicios de Medios Digitales de Verizon, ahora Edgio, apilado hace tres años, seleccionamos el ModSecurity Rules Engine, que encontramos que es de primera clase para casos de uso individuales de WAF. Además, el soporte de ModSecurity del conjunto de reglas básicas (CRS) de OWASP, el potente lenguaje de reglas y el acceso API al flujo de tráfico HTTP en tiempo real ofrecían una flexibilidad significativa.

Ingrese waflz

Sin embargo, a medida que aumentó el número de clientes que utilizan el WAF, experimentamos cuellos de botella de rendimiento y recursos. El denso conjunto de reglas de ModSecurity propagado en cada instancia de cliente impulsó el uso de memoria y CPU en toda nuestra red, lo que aumentó los costos operativos. Probar e implementar nuevas reglas también era difícil porque el lenguaje de las reglas era a menudo difícil de manejar y difícil de escribir y analizar. Estos problemas, junto con la complejidad del desarrollo con la biblioteca ModSecurity existente, llevaron al desarrollo de waflz, un motor WAF de código abierto publicado bajo la licencia Apache 2,0.

Para Edgio, waflz es una mejora significativa en ModSecurity porque:

  • Consume menos memoria.
  • Ofrece un mejor rendimiento.
  • Está impulsado por API.

Waflz soporta un subconjunto de capacidades de ModSecurity, los conjuntos de reglas OWASP Core 2. x y 3. x, y varios reglamentarios de terceros.

Diseñando waflz

Waflz está diseñado desde cero para ofrecer alto rendimiento y multitenencia. Cuando es necesario, el diseño negoció el rendimiento sobre la flexibilidad. En última instancia, waflz admite un subconjunto restringido de capacidades de ModSecurity. Por ejemplo, por razones de seguridad y rendimiento, algunas directivas de ModSecurity como SecRemoteRules e inspectFile se consideraron inadecuadas para ejecutarse en el borde.

El motor se puede configurar con reglas en formato ModSecurity o JSON. Todo el producto WAF fue diseñado para ser “API-First”. Con este fin, waflz proporciona soporte JSON de primera clase como entradas y salidas. Waflz utiliza búferes de protocolo de Google internamente para representar tanto la configuración (incluidas las reglas) como los formatos de alerta. La elección de búferes de protocolo permite la interoperabilidad con las entradas y salidas JSON y la adición de esquemas estrictamente escritos para ambos.

Algunos de los principales desafíos de ingeniería en una CDN son lidiar con la alta concurrencia y multitenencia que proviene de servir a miles de clientes: Cada uno de nuestros servidores perimetrales globales debe ser capaz de procesar una solicitud para cualquiera de nuestros clientes lo más rápido posible. Además, las aplicaciones de servidor Edge deben proporcionar parches y procesamiento en tiempo real para cualquier configuración del cliente.

Tener muchos conjuntos de reglas WAF cargados en la memoria del proceso de servidor de aplicaciones HTTP en ejecución en el borde de todos nuestros clientes presentó un desafío de escalabilidad. Waflz supera este problema creando los conjuntos de reglas WAF solo una vez en la memoria y compartiendo referencias de solo lectura entre las configuraciones del cliente y las personalizaciones de reglas. Además, se identificaron varias optimizaciones potenciales de rendimiento, lo que mejoró los tiempos de procesamiento de solicitudes, incluido el ahorro de espacio y tiempo en algunas estructuras de datos internas críticas.

Waflz también tiene características integradas que facilitan la validación del comportamiento del motor y la prueba de reglas únicas de ModSecurity, eliminando la necesidad de un complejo arnés de pruebas independiente.

Conclusión

Waflz forma parte de nuestra pila de tecnología CDN y puede operar a gran escala mientras permite realizar pruebas y personalización eficientes de reglas granulares. A pesar de los desafíos para las aplicaciones CDN, ModSecurity y la nueva libmodsecurity son bibliotecas fantásticas y flexibles ideales para muchos casos de uso. De hecho, en el desarrollo de waflz, hemos contribuido de nuevo al desarrollo de ModSecurity. El nuevo motor WAF ha estado funcionando en producción a nivel mundial durante más de un año, apoyando y protegiendo simultáneamente miles de configuraciones de clientes diferentes sin ninguna pérdida de rendimiento.

Visite github para ver más ejemplos de la funcionalidad de waflz.