Hur man automatiskt och i batchar rensar bortkommenterade IP-åtkomstregler i en WAF med hjälp av Cloudflare API och Python

När din brandväggsregellista sväller till tusentals poster är det som att räkna sandkorn i öknen att manuellt radera dem – tidskrävande och smärtsamt.

Vid det här laget blir automatiserade skript en livräddare.

Varför behövs automatiska rensningsregler?

När vi använder Cloudflare som ett CDN och WAF konfigurerar vi ofta IP-åtkomstregler för att blockera skadliga förfrågningar.

Dessa regler kan innehålla anteckningar som "Blockerad av AI B" , "Wordfence Sync" eller "Känd angripares IP-adress".

Antalet regler kommer att öka snabbt med tiden.

Om de inte rensas upp kommer reglerna i konsolen att hopas upp, vilket påverkar hanteringseffektiviteten.

För att göra saken värre erbjuder Cloudflare-konsolen inte funktionen "batchradering med ett klick via kommentar".

Det betyder att du bara kan välja och ta bort dem manuellt en efter en, vilket är extremt ineffektivt.

Lösning

För att lösa detta problem kan vi använda Cloudflares REST API.

Genom att ringa firewall/access_rules/rules Gränssnitt och skript kan:

  • Hämta pagineringAlla regler under den aktuella domänen.
  • Matchande kommentarerNyckelord i fältet.
  • Initiera automatiskt en DELETE-förfråganMålregler för batchrensning.

Denna metod är inte bara effektiv, utan undviker också mänskliga fel.

Hur man automatiskt och i batchar rensar bortkommenterade IP-åtkomstregler i en WAF med hjälp av Cloudflare API och Python
Hur man automatiskt och i batchar rensar bortkommenterade IP-åtkomstregler i en WAF med hjälp av Cloudflare API och Python

Förarbete

Innan du börjar skriva manuset måste du förbereda flera viktiga parametrar.

1. API-token

Gå till sidan Cloudflare API-tokens för att skapa en ny token.

Behörigheter måste beviljas: Zon → Brandväggstjänster → Redigera.

2. Zon-ID

Logga in på Cloudflare-konsolen, gå till översiktssidan för din domän så hittar du det 32-siffriga zon-ID:t till höger.

3. Installera beroendebibliotek

Kör i PowerShell eller terminalen:

python -m pip install requests

Detta gör att du kan installera det. requests Biblioteket säkerställer att skriptet kan anropa API:et korrekt.

Komplett Python-skript

Nedan finns ett färdigt Python-skript.

Spara som cloudflare_clean.pyErsätta API_TOKEN 和 ZONE_ID OK.

import requests

API_TOKEN = "你的_API_TOKEN"
ZONE_ID = "你的_ZONE_ID"
TARGET_NOTE = "Blocked by AIB"

headers = {
    "Authorization": f"Bearer {API_TOKEN}",
    "Content-Type": "application/json",
}

def delete_matching_ip_rules_zone():
    page = 1
    deleted_count = 0

    while True:
        url = f"https://api.cloudflare.com/client/v4/zones/{ZONE_ID}/firewall/access_rules/rules?page={page}&per_page=100"
        response = requests.get(url, headers=headers)

        if response.status_code != 200:
            print(f"请求失败: {response.text}")
            break

        data = response.json()
        rules = data.get("result", [])
        if not rules:
            break

        for rule in rules:
            rule_id = rule.get("id")
            rule_value = rule.get("configuration", {}).get("value")
            rule_notes = rule.get("notes", "")

            if TARGET_NOTE in rule_notes:
                del_url = f"{url}/{rule_id}"
                del_res = requests.delete(del_url, headers=headers)
                if del_res.json().get("success"):
                    print(f"✅ 删除成功: {rule_value}")
                    deleted_count += 1

        result_info = data.get("result_info", {})
        total_pages = result_info.get("total_pages", 1)
        if page >= total_pages:
            break
        page += 1

    print(f"清理完成,共删除 {deleted_count} 条规则。")

if __name__ == "__main__":
    delete_matching_ip_rules_zone()

Kör skriptet

Ange följande i terminalen:

python /path/to/cloudflare_clean.py

Skriptet söker automatiskt efter och tar bort regler med angivna kommentarer.

Vanliga frågor och felsökningsguide

1. Zon- kontra kontobehörigheter

  • Regler på zonnivå: gäller endast för en enda domän.
  • Regler på kontonivå: Gäller för hela kontot; kräver ändring av API-sökvägen. /accounts/{ACCOUNT_ID}/....

2. Rapportering av autentiseringsfel

Om det visas 403 Authentication errorDetta beror vanligtvis på en felaktig inställning för behörighetsomfång.

Se till att tokenbehörigheten inkluderar Brandväggstjänster → Redigera.

3. Pagineringsmekanism

Cloudflare API returnerar maximalt 100 regler åt gången.

Skriptet går igenom result_info.total_pages Automatisk sidvändning säkerställer en fullständig skanning.

Varför automatisering är ett oundvikligt val

I en verklig produktionsmiljö kan antalet regler lätt överstiga 5 000.

Manuell radering är inte bara tidskrävande, utan också benäget för utelämnanden.

Med automatiseringsskript kan du:

  • Utgångna regler rensas dagligen.
  • Håll din lista över brandväggsregler tydlig.
  • För att undvika att felaktigt avstänga legitima användare.

Denna metod effektiviserar hanteringen av webbplatssäkerhet.

Den officiella Cloudflare-dokumentationen anger tydligt:

"API:et ger programmatisk åtkomst för att hantera brandväggsregler, inklusive skapande, listning och borttagning."
来源:Cloudflare API-dokumentation

Detta indikerar att det officiella API:et har tillhandahållits, men funktionen för borttagning av batcher har inte implementerats i konsolen.

Slutsats

I informationssäkerhetens värld är effektivitet försvar.

Genom att anropa Cloudflare API via Python-skript övervann vi inte bara konsolens begränsningar, utan inledde också en era av automatisering för hantering av brandväggsregler.

Detta är en kombination av teknologi och visdom , och en oundviklig trend inom webbplatssäkerhet.

Sanna mästare spenderar inte sina dagar med att klicka med musen i konsolen; de använder kod för att få maskiner att göra det tråkiga arbetet åt dem.

Så låt oss agera.

Se till att dina brandväggsregler fungerar som en exakt klocka, inte som ett virrvarr av rörigt digitalt skräp.

Säkerhetens kärna är ordning. Och bakom ordning ligger automatisering.

发表 评论

您的邮箱地址不会被公开。必填项已用*标注

Bläddra till början