Home Artigos técnicos Executando um WAF multitenant no Edge
Applications

Executando um WAF multitenant no Edge

About The Author

Outline

Os firewalls de aplicativos da Web (WAFS) são uma camada crítica na segurança da Web moderna, fornecendo a primeira linha de defesa de um site contra vulnerabilidades. O WAFS pode ser usado para se defender e notificar de tentativas de exploits, permitindo mitigações mais rapidamente do que as organizações podem corrigir software vulnerável. Essa funcionalidade deve ser implementada de forma sensível ao desempenho de uma CDN global, fornecendo tempos de resposta na ordem de milissegundos. Quando introduzimos um mecanismo WAF ao Verizon Digital Media Services, agora Edgio, stack há três anos, selecionamos o ModSecurity Rules Engine, que achamos ser de primeira qualidade para casos individuais de uso do WAF. Além disso, o suporte do ModSecurity ao conjunto de regras principais (CRS) do OWASP, linguagem de regras poderosa e acesso à API ao fluxo de tráfego HTTP em tempo real ofereceu flexibilidade significativa.

Introduza waflz

No entanto, à medida que o número de clientes que usam o WAF aumentou, tivemos gargalos de desempenho e recursos. O conjunto de regras denso do ModSecurity propagado em todas as instâncias do cliente impulsionou a utilização da memória e da CPU em toda a nossa rede, aumentando os custos operacionais. Testar e implantar novas regras também foi difícil porque a linguagem da regra era muitas vezes difícil e difícil de escrever e analisar. Esses problemas, juntamente com a complexidade do desenvolvimento com a biblioteca existente do ModSecurity, levaram ao desenvolvimento do Waflz, um mecanismo WAF de código aberto publicado sob a licença Apache 2,0.

Para Edgio, waflz é uma melhoria significativa no ModSecurity porque:

  • Consome menos memória.
  • Oferece melhor desempenho.
  • É orientado por API.

O Waflz suporta um subconjunto de recursos ModSecurity, os conjuntos de regras OWASP Core 2. x e. 3. x, e vários conjuntos de regras de terceiros.

Projetando waflz

A Waflz foi projetada desde o início para oferecer alto desempenho e multilocação. Quando necessário, o design trocou o desempenho em detrimento da flexibilidade. Em última análise, o waflz suporta um subconjunto restrito de recursos do ModSecurity. Por exemplo, por razões de segurança e desempenho, algumas diretivas ModSecurity, como SecRemoteRules e inspectFile, foram consideradas inadequadas para serem executadas na borda.

O mecanismo pode ser configurado com regras no formato ModSecurity ou JSON. Todo o produto WAF foi projetado para ser “API-first”. Para este fim, waflz fornece suporte JSON de primeira classe como entradas e saídas. O Waflz usa os buffers do Google Protocol internamente para representar formatos de configuração (incluindo regras) e de alerta. Escolher os buffers de protocolo permite a interoperabilidade com entradas e saídas JSON e adicionar esquemas estritamente digitados para ambos.

Alguns dos principais desafios de engenharia em uma CDN estão lidando com a alta concorrência e multilocação que vem de servir milhares de clientes: Cada um de nossos servidores de borda global deve ser capaz de processar uma solicitação para qualquer um de nossos clientes o mais rápido possível. Além disso, os aplicativos de servidor de borda devem fornecer patches e processamento em tempo real para qualquer configuração do cliente.

Ter muitos conjuntos de regras WAF carregados na memória do processo de servidor de aplicativos HTTP em execução na borda em todos os nossos clientes apresentou um desafio de escalabilidade. O Waflz supera esse problema criando os conjuntos de regras do WAF apenas uma vez na memória e compartilhando referências somente de leitura entre as configurações do cliente e as personalizações de regras. Além disso, várias otimizações potenciais de desempenho foram identificadas, o que melhorou os tempos de processamento de solicitações, incluindo economia de espaço e tempo para algumas estruturas de dados internas críticas.

O Waflz também possui recursos integrados que facilitam a validação do comportamento do motor e o teste de regras ModSecurity unificadas, eliminando a necessidade de um chicote de teste autônomo complexo.

Conclusão

O Waflz faz parte da nossa pilha de tecnologia CDN e pode operar em grande escala, permitindo testes e personalização eficientes de regras granulares. Apesar dos desafios para aplicativos CDN, o ModSecurity e a nova libmodsecurity são bibliotecas fantásticas e flexíveis, ideais para muitos casos de uso. Na verdade, ao desenvolver o waflz, contribuímos de volta para o desenvolvimento do ModSecurity. O novo motor WAF está funcionando em produção globalmente há mais de um ano, suportando e protegendo simultaneamente milhares de configurações de clientes diferentes sem perda de desempenho.

Visite github para ver mais exemplos de funcionalidade waflz.