Home Articoli tecnici Esecuzione di un WAF multi-tenant alla periferia della rete
Applications

Esecuzione di un WAF multi-tenant alla periferia della rete

About The Author

Outline

I Web Application Firewall (WAF) sono un livello critico per la moderna sicurezza web e forniscono la prima linea di difesa di un sito web contro le vulnerabilità. I WAF possono essere utilizzati per difendersi e notificare i tentativi di exploit, consentendo di mitigare più rapidamente di quanto le organizzazioni non siano in grado di applicare patch ai software vulnerabili. Questa funzionalità deve essere implementata in modo sensibile alle prestazioni di una CDN globale, fornendo tempi di risposta dell’ordine di millisecondi. Quando abbiamo introdotto un motore WAF nello stack Verizon Digital Media Services, ora Edgio, tre anni fa, abbiamo scelto ModSecurity Rules Engine, che abbiamo trovato di prim’ordine per i singoli casi di utilizzo WAF. Inoltre, il supporto di ModSecurity al Core Rule Set (CRS) OWASP, al potente linguaggio delle regole e all’accesso API al flusso di traffico HTTP in tempo reale ha offerto una notevole flessibilità.

Immettere waflz

Tuttavia, con l’aumento del numero di clienti che utilizzano il WAF, abbiamo riscontrato colli di bottiglia nelle prestazioni e nelle risorse. Il fitto set di regole di ModSecurity, diffuso in tutte le istanze dei clienti, ha fatto aumentare l’utilizzo della memoria e della CPU nella nostra rete, aumentando i costi operativi. Anche il test e l’implementazione di nuove regole erano difficili perché il linguaggio delle regole era spesso ingombrante e difficile da scrivere e analizzare. Questi problemi, insieme alla complessità dello sviluppo con la libreria ModSecurity esistente, portarono allo sviluppo di waflz, un motore WAF open source pubblicato sotto la licenza Apache 2,0.

Per Edgio, waflz rappresenta un miglioramento significativo di ModSecurity perché:

  • Consuma meno memoria.
  • Offre prestazioni migliori.
  • È basato su API.

Waflz supporta un sottoinsieme di funzionalità ModSecurity, i set di regole OWASP Core 2. x e. 3. x e diversi set di regole di terze parti.

Progettazione di waflz

Waflz è progettato da zero per offrire prestazioni elevate e multitasking. Quando necessario, il progetto ha scambiato le prestazioni rispetto alla flessibilità. In definitiva, waflz supporta un sottoinsieme limitato di funzionalità ModSecurity. Ad esempio, per motivi di sicurezza e prestazioni, alcune direttive ModSecurity, come SecRemoteRules e inspectFile, sono state ritenute inadatte per l’esecuzione sull’edge.

Il motore può essere configurato con regole in formato ModSecurity o JSON. “L’intero prodotto WAF è stato progettato per essere “API-first”.” A tal fine, waflz fornisce un supporto JSON di prima classe come ingressi e uscite. Waflz utilizza internamente i buffer di protocollo Google per rappresentare sia la configurazione (incluse le regole) che i formati di avviso. La scelta dei buffer di protocollo consente l’interoperabilità con gli ingressi e le uscite JSON e l’aggiunta di schemi tipizzati rigorosamente per entrambi.

Alcune delle principali sfide ingegneristiche di una CDN riguardano l’elevata concorrenza e multitenancy che derivano dal servire migliaia di clienti: Ogni nostro edge server globale deve essere in grado di elaborare una richiesta per qualsiasi cliente il più rapidamente possibile. Inoltre, le applicazioni edge server devono fornire patch ed elaborazione in tempo reale per qualsiasi configurazione del cliente.

Avere molti set di regole WAF caricati nella memoria del processo HTTP Application Server in esecuzione sulla periferia di tutti i nostri clienti ha rappresentato una sfida di scalabilità. Waflz risolve questo problema creando i set di regole WAF solo una volta in memoria e condividendo i riferimenti di sola lettura tra le configurazioni del cliente e le personalizzazioni delle regole. Inoltre, sono state identificate diverse potenziali ottimizzazioni delle prestazioni, che hanno migliorato i tempi di elaborazione delle richieste, incluso il risparmio di spazio e tempo per alcune strutture di dati interne critiche.

Waflz dispone inoltre di funzionalità integrate che semplificano la convalida del comportamento del motore e il test di regole ModSecurity una tantum, eliminando la necessità di un complesso cablaggio di test autonomo.

Conclusione

Waflz fa parte del nostro stack tecnologico CDN e può operare su vasta scala, consentendo al contempo test e personalizzazione efficienti delle regole granulari. Nonostante le sfide per le applicazioni CDN, ModSecurity e la nuova libmodsecurity sono librerie fantastiche e flessibili, ideali per molti casi di utilizzo. In effetti, nello sviluppo di waflz, abbiamo contribuito di nuovo allo sviluppo di ModSecurity. Il nuovo motore WAF è in produzione a livello globale da più di un anno, supportando e proteggendo contemporaneamente migliaia di configurazioni client diverse senza alcuna perdita di prestazioni.

Visita github per visualizzare altri esempi di funzionalità waflz.