Envie eventos do WAF para um SIEM
Crie um stream que envia ao seu SIEM as requisições que o WAF analisou, no Azion Console ou com a Azion API, e confirme a entrega.
Você pode enviar os eventos do Web Application Firewall (WAF) para uma plataforma de security information and event management (SIEM) pelo Azion Console ou com a Azion API. Para enviar as requisições das suas aplicações sem dados do WAF, consulte Endpoints e o guia do seu endpoint.
Um stream do Data Stream lê a fonte de dados WAF Events e formata cada evento com o template WAF Event Collector. Cada linha de log traz a pontuação que a requisição recebeu, as regras do WAF que ela acionou, a família do ataque e a ação que o WAF tomou. Para cada variável, consulte WAF Events.
O exemplo envia os eventos para um tópico do Apache Kafka que o seu SIEM lê. No formulário do stream, o endpoint é definido no campo Connector.
Selecione a interface uma vez. Os pré-requisitos e todas as tarefas abaixo mostram apenas esse caminho.
Pré-requisitos
- Uma conta Azion com a permissão Edit Data Stream. Para as permissões, consulte Configurações do stream.
- Firewall com WAF na conta, protegendo um workload que recebe requisições. Para configurar o WAF, consulte Primeiros passos com WAF.
- Um endpoint que o seu SIEM lê. Este guia usa um cluster do Apache Kafka, com o host e a porta dos servidores para a conexão inicial e o nome de um tópico. Para os outros endpoints para os quais um stream pode enviar, consulte Endpoints.
- Acesso ao Azion Console. Para entrar, consulte Como acessar o Azion Console.
Crie o stream
O stream coleta os eventos do WAF do workload que você escolher, por meio de um filtro de workloads. Diferente do sampling, um filtro de workloads mantém os seus outros streams ativos.
Para criar o stream com a API, envie uma requisição POST para https://api.azion.com/v4/workspace/stream/streams. Substitua [TOKEN VALUE] pelo seu personal token, <workload-id> pelo ID do seu workload e os valores do cluster pelos seus:
A fonte de dados waf é WAF Events no Console, e o template 4 é o WAF Event Collector. A API exige kafka_topic e use_tls: envie true para criptografar os eventos com TLS, ou false para enviá-los sem criptografia. Uma resposta 201 traz o stream armazenado em data. Guarde o id dele: ele identifica o stream em todas as requisições seguintes, como /v4/workspace/stream/streams/<stream-id>. Para cada chave do corpo, consulte Configurações do stream.
Salvar o stream verifica o formato de cada campo e não contata o cluster. Um endereço de servidor ou um tópico errado só aparece quando o stream envia. Uma ativação entra em vigor depois de um a dois minutos.
Confirme a entrega
Real-Time Events registra cada envio de um stream, entregue ou não, com o código de status que o endpoint retornou. Envie algumas requisições ao workload que o WAF analisa e aguarde cerca de um minuto. Um stream envia um lote a cada 60 segundos, ou antes, quando chega a 2.000 linhas de log.
Para ler os envios com a API, faça uma query no dataset dataStreamedEvents da API GraphQL do Real-Time Events. Substitua as datas por um intervalo que cubra a ativação do stream:
A API responde 200 com um registro para cada envio, o mais recente primeiro. Para um stream que envia para o S3, um registro fica como abaixo. Os seus registros trazem o tipo do seu endpoint em endpointType:
Um statusCode 200 significa que o endpoint aceitou o lote, cujo tamanho streamedLines informa em linhas de log e dataStreamed em bytes. Uma lista dataStreamedEvents vazia significa que o stream não enviou nada no intervalo. Para cada campo, consulte Campos da API GraphQL do Real-Time Events.
Um status diferente de 200 é a resposta do endpoint, e 503 significa que Data Stream encontrou o endpoint indisponível. Para as causas, consulte Solucionar problemas de Data Stream.
No SIEM, cada linha de log traz as chaves do template WAF Event Collector. Leia estas chaves para verificar que os eventos são os que o WAF analisou:
waf_attack_actiontraz a ação que o WAF tomou, como$BLOCKou$PASS.waf_attack_familytraz a classe da infração, comoSQLouXSS.waf_scoreewaf_matchtrazem a pontuação da requisição e as infrações que ela acionou.blockedvale1quando o WAF bloqueou a requisição. Enquantowaf_learningvale1, o WAF não bloqueia nenhuma requisição.
Para correlacionar esses eventos com os dados de requisição das suas aplicações em uma única linha de log, use a fonte de dados Applications com o template Applications + WAF Event Collector. Para o trade-off, consulte Boas práticas para Data Stream.