記事ディレクトリ
ファイアウォールルールのリストが数千件に膨れ上がると、それらを手動で削除するのは砂漠で砂粒を数えるようなもので、時間も労力もかかる。
こういう状況では、自動化されたスクリプトが救世主となる。
自動クリーンアップルールが必要な理由は何ですか?
CloudflareをCDNとWAFの両方として使用する場合、多くの場合、以下の設定が必要になります... IPアクセスルール 悪意のあるリクエストをブロックするため。
これらのルールには、次のようなコメントが含まれる場合があります。 「ブロックされました AIB」、ワードフェンス同期 或 「攻撃者のIPアドレスが判明している」。
規則の数は時間とともに急速に増加するだろう。
整理しないと、コンソール内のルールが蓄積され、管理効率に影響を及ぼします。
さらに悪いことに、Cloudflareのコンソールには「コメントによるワンクリック一括削除」機能がありません。
つまり、手動で一つずつ選択して削除するしかなく、非常に非効率的です。
解決
この問題を解決するには、 Cloudflare REST API。
電話することで firewall/access_rules/rules インターフェースとスクリプトには以下の機能があります。
- ページネーションを取得する現在のドメインにおけるすべてのルール。
- 一致するコメントこの分野におけるキーワード。
- 自動的に削除リクエストを開始するバッチクリーンアップ対象ルール。
この方法は効率的なだけでなく、人為的ミスも回避できる。

準備作業
スクリプトを書き始める前に、いくつかの重要なパラメータを準備する必要があります。
1. APIトークン
に行く Cloudflare APIトークンページ 新しいトークンを作成します。
許可を与える必要があります。ゾーン → ファイアウォールサービス → 編集。
2. ゾーンID
Cloudflareコンソールにログインし、ドメインの... 概要ページ32桁のゾーンIDは右側に表示されています。
3. 依存ライブラリをインストールする
PowerShellまたはターミナルで実行してください。
python -m pip install requests
これによりインストールが可能になります。 requests このライブラリは、スクリプトがAPIを正しく呼び出せることを保証します。
完全なPythonスクリプト
以下に、すぐに使えるPythonスクリプトを示します。
名前を付けて保存 cloudflare_clean.py交換する API_TOKEN と ZONE_ID それでおしまい。
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()
スクリプトを実行する
ターミナルに以下を入力してください。
python /path/to/cloudflare_clean.py
このスクリプトは、指定されたコメントを持つルールを自動的にスキャンして削除します。
よくある質問とトラブルシューティングガイド
1. ゾーン権限とアカウント権限
- ゾーンレベルのルール:単一のドメインにのみ適用されます。
- アカウントレベルのルール:アカウント全体に適用されます。APIパスの変更が必要です。
/accounts/{ACCOUNT_ID}/...。
2. 認証エラーの報告
もし現れたら 403 Authentication errorこれは通常、権限スコープの設定が間違っていることが原因です。
トークンの権限に以下が含まれていることを確認してください ファイアウォールサービス → 編集。
3. ページネーション機構
Cloudflare APIは、一度に最大100個のルールを返します。
脚本が合格する result_info.total_pages 自動ページめくり機能により、完全なスキャンが保証されます。
自動化が避けられない選択である理由
実際の運用環境では、ルールの数は容易に[一定の閾値]を超える可能性があります。 5000条。
手動での削除は時間がかかるだけでなく、削除漏れも起こりやすい。
自動化スクリプトを使用すると、次のことが可能になります。
- 期限切れのルールは毎日削除されます。
- ファイアウォールルールリストは常に整理しておきましょう。
- 正当なユーザーを誤ってBANしてしまうことを避けるため。
このアプローチにより、ウェブサイトのセキュリティ管理がより効率的になります。
Cloudflareの公式ドキュメントには、次のように明確に記載されています。
「このAPIは、ファイアウォールルールの作成、一覧表示、削除など、プログラムによる管理機能を提供します。」
来源:Cloudflare APIドキュメント
これは、公式APIは提供されているものの、一括削除機能がコンソールに実装されていないことを示しています。
言語
情報セキュリティの世界では、効率性こそが防御策である。
Pythonスクリプトを介してCloudflare APIを呼び出すことで、コンソールの制約を克服しただけでなく、ファイアウォールルール管理の自動化という新たな時代を切り開くことができました。
これは一種です テクノロジーと知恵の融合これはウェブサイトのセキュリティ対策における避けられない傾向でもある。
真の達人は、コンソールでマウスをクリックするだけで一日を過ごすのではなく、コードを使って機械に面倒な作業を代行させるのだ。
さあ、行動を起こしましょう。
ファイアウォールルールは、ごちゃごちゃとしたデジタルゴミの山ではなく、正確な時計のように機能するようにしましょう。
セキュリティの本質は秩序である。そして秩序の背後には自動化が存在する。
Hope Chen Weiliang ブログ ( https://www.chenweiliang.com/ こちらで共有されている記事「Cloudflare API + Python を使用して WAF 内の指定したコメント付き IP アクセス ルールを自動的に一括クリーンアップする方法」が参考になるかもしれません。
この記事のリンクを共有することを歓迎します。https://www.chenweiliang.com/cwl-34436.html
