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 WAF (Web Application Firewall) sono un livello critico nella sicurezza web moderna, fornendo 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 mitigazioni più rapide di quanto le organizzazioni non siano in grado di applicare patch al software vulnerabile. Questa funzionalità deve essere implementata in modo sensibile alle prestazioni per una CDN globale, fornendo tempi di risposta nell’ordine di millisecondi. Quando abbiamo introdotto un motore WAF per Verizon Digital Media Services, ora Edgio, stack tre anni fa, abbiamo scelto il ModSecurity Rules Engine, che abbiamo trovato di prim’ordine per i singoli casi di utilizzo WAF. Inoltre, il supporto di ModSecurity del CRS (Core Rule Set) OWASP, del potente linguaggio delle regole e dell’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 denso set di regole di ModSecurity propagato in ogni istanza del cliente ha aumentato l’utilizzo della memoria e della CPU in tutta la nostra rete, aumentando i costi operativi. Testare e distribuire nuove regole era anche difficile 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 licenza Apache 2,0.

Per Edgio, waflz rappresenta un miglioramento significativo rispetto a 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.

Progettare waflz

Waflz è progettato da zero per offrire prestazioni elevate e multitenancy. Quando necessario, il progetto ha compromesso 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 all’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 i buffer del protocollo Google internamente per rappresentare sia i formati di configurazione (incluse le regole) che di avviso. La scelta dei buffer di protocollo consente l’interoperabilità con gli ingressi e le uscite JSON e l’aggiunta di schemi rigorosamente tipizzati per entrambi.

Alcune delle principali sfide di progettazione di una CDN riguardano l’elevata concorrenza e la multitenancy che derivano dal servizio a migliaia di clienti: Tutti i nostri edge server globali devono essere in grado di elaborare una richiesta per uno qualsiasi dei nostri clienti il più rapidamente possibile. Inoltre, le applicazioni edge server devono fornire patch ed elaborazione in tempo reale per qualsiasi configurazione del cliente.

Il caricamento di molti set di regole WAF nella memoria del processo server di applicazioni HTTP in esecuzione all’edge di tutti i nostri clienti ha rappresentato una sfida di scalabilità. Waflz risolve questo problema creando i set di regole WAF una sola 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 delle regole ModSecurity una tantum, eliminando la necessità di un test harness autonomo complesso.

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 il nuovo 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 oltre 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.