Skip to content

DDoS and billing attack protection for public service #72

@liplus-lin-lay

Description

@liplus-lin-lay

目的

公開サービス化に伴う DDoS / Billing Attack(課金攻撃)からの防御設計。

前提

  • Cloudflare の従量課金プランでは、DDoS でリクエストが増えると請求が爆発する
  • 攻撃者の目的はサービス停止だけでなく、運営者の財布を攻撃する「Billing Attack」パターンがある
  • webhook エンドポイントの送信元は GitHub のみであるべき

設計メモ

防御の優先度順

優先度 対策 効果
最優先 GitHub IP レンジのホワイトリスト(WAF ルール) 外部攻撃の99%をブロック
webhook 署名検証を Worker 入口で即実行 偽装リクエストを弾く
認証なしリクエストは DO に渡さず即返却 DO 課金を防ぐ
Cloudflare Rate Limiting ルール(IP 単位) レート制限
保険 使用量アラート設定 異常検知

GitHub IP ホワイトリスト

  • api.github.com/meta で GitHub の IP レンジ一覧を取得可能
  • Cloudflare WAF ルールで webhook エンドポイントへのアクセスを GitHub IP のみに制限
  • 無料プランでも設定可能

Worker 層の防御

  • Worker の最初の数行で認証チェック → 不正なら即 return
  • DO まで到達させなければ DO の課金は発生しない
  • Worker のリクエスト処理は軽量なので不正リクエストのコストは極小

テナントごとのクォータ

  • DO 内でリクエストカウンターを管理
  • 上限超過時は受信停止または通知
  • 将来のユーザー課金プランと連動

Cloudflare のインフラ層

  • Cloudflare 自体が DDoS 防御を持つ(無料で付属)
  • 大規模ネットワーク攻撃はここで吸収

制約

  • Workers 有料プランにハード上限(自動停止)機能がない → アラートで対応
  • GitHub IP レンジは変更される可能性がある → 定期的な更新が必要

refs

Metadata

Metadata

Assignees

No one assigned

    Labels

    memoissue started as notespeclanguage or system specification

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions