SECOPS

Cluster Cloudflare WAF block spikes by rule and ASN

On a scheduled interval, pulls Cloudflare WAF blocked-request events, clusters the spike by firewall rule ID and source ASN.

CategorySecOps
Enginesim
Difficultyintermediate
Triggerschedule
Steps5
Setup~15 min

How it runs

The automated pipeline, trigger to output.

  • TriggerEvery 15 minutes
  • ActionFetch Cloudflare WAF blocked eventsCloudflareCloudflare
  • LogicCluster by rule ID x ASN, compute deltas
  • LogicKeep clusters above spike threshold
  • OutputPost ranked triage digest to SlackSlack

What it does

Every 15 minutes it queries Cloudflare's firewall event analytics, groups blocked requests by rule ID crossed with source ASN, and ranks the clusters by volume and acceleration versus the prior window. It then posts a compact, ranked digest to a secops Slack channel — only when a cluster crosses your spike threshold, so the channel stays quiet on normal days.

When to use it

Use it as your always-on first line of WAF triage when you don't want an analyst polling the Cloudflare dashboard. It surfaces "rule X is suddenly firing 40x from ASN Y" before it becomes a page.

How it works

  1. 1A scheduled trigger fires every 15 minutes.
  2. 2Cloudflare returns blocked firewall events for the window with rule ID, action, and source ASN.
  3. 3Logic groups events by rule + ASN and computes each cluster's count and delta versus the previous window.
  4. 4A threshold filter drops clusters below the spike floor; if none qualify, the run ends silently.
  5. 5Slack receives a ranked digest of the surviving clusters with counts, deltas, and example paths.

Set it up

What you configure once, before turning it on.

  1. 1
    Connect CloudflareWorkers, Pages, R2, KV — the edge stack.
  2. 2
    Connect SlackChannels, DMs, threads, mentions.
  3. 3
    Set each agent's modelWe leave models unset so you pick the tier — fast + cheap, or top-quality.
  4. 4
    Tune it to your dataEdit the prompts, filters, and field mappings so it matches how your team works.
  5. 5
    Test, then turn it onRun once against a sample, confirm the output, then enable the trigger.

Run this workflow in your colony.

14-day trial. No DevOps. No Sales call. Provisioned in under a minute.