機能一覧

エッジ WAF に必要なものを、勝手に有効化せずに

PingWAF の防御はサイト単位で無効のまま提供されます。必要なものを必要な順に有効化し、変更はすべてバージョン管理されます。

検知

正規表現の羅列ではなく、意味解析エンジン

リクエストはまず正規化され、シグネチャ・ヒューリスティック・式で評価されたうえで判定が出ます。

  • すべてのルールより先に正規化するため、エンコードでペイロードを隠せません。
  • SQLi と XSS は libinjection、その他は Aho-Corasick の多パターン一致で検知します。
  • http.request.uri.path contains "/admin" のような Cloudflare 風の式を利用できます。
  • 異常スコアがすべての一致を集約し、リクエストごとに 1 つの判定を出します。

正規化 → シグネチャ → 式 → 異常スコア

localhost:9080/sites/example.com/security/protection
PingWAF コンソールの WAF ルール編集画面
カスタムルールとマネージドルールセットはサイト単位で切り替えます。

可用性

急増を吸収し、人間はそのまま通す

段階的なチャレンジでリクエスト洪水を止め、ユーザーの前に CAPTCHA の壁を立てません。

  • JavaScript 5 秒シールド、Proof of Work、対話型チャレンジ。
  • クリアランス Cookie は HMAC 署名で、発行サイトに紐づくため再利用できません。
  • 検証済みボット許可リストと既知ブラウザの通過で、クローラーや監視を止めません。
  • チャレンジはサイト単位で適用され、他のドメインに影響しません。

TLS フィンガープリントと挙動分析はロードマップにあります。

localhost:9080/sites/example.com/security/bot
PingWAF コンソールのボット対策設定
ボットポリシー、検証済みボット、サイト別のアクション。

アクセス

オリジンへ到達できる相手を決める

アドレスと地域で許可・拒否・チャレンジを行い、リクエストの観点で濫用を制限します。

  • block / allow / challenge / js_challenge に対応し、CIDR と CSV 一括取り込みも可能。
  • テキスト・JSON・Cloudflare の IP レンジからグローバル IP グループを同期し、エラーを報告。
  • 国と ASN による地域制限。「未知の国を拒否」も選択可能。
  • IP・ホスト・パス・ASN・国・ヘッダー・Cookie・クエリでのレート制限。
localhost:9080/sites/example.com/security/access
IP ルールと地域制限を表示するアクセス制御ページ
IP ルールと地域ポリシーを同じ画面で管理します。

トラフィック

エッジでルーティング・分散・キャッシュ

オリジンプール、ルート、キャッシュはセキュリティポリシーの隣にあり、ルールとルートを一緒に進化させられます。

  • ラウンドロビン、最小接続、ランダム、IP・URL・パス・ヘッダー・Cookie・クエリによる一貫性ハッシュ。
  • プレフィックス・完全一致・正規表現のルート。IP グループ限定も可能。
  • サイト別ディスククォータ、LRU 削除、stale-while-revalidate、ブラウザ TTL 制御。
  • ヘッダー・パス・クエリ・本文の書き換え、Tera エラーページ、サイト一時停止(503)。
localhost:9080/sites/example.com/caching
PingWAF コンソールのエッジキャッシュ設定
キャッシュルール、TTL、サイトクォータ。

TLS

証明書はエッジで発行・更新

ACME はデータプレーンで動作し、コントロールプレーンは各エージェントの状態を常に把握します。

  • HTTP-01 と DNS-01 による ACME / Let's Encrypt の自動発行と更新。
  • DNS-01 は Aliyun、Cloudflare、Tencent Cloud DNSPod、Huawei Cloud、手動 DNS に対応。
  • サイト別の証明書状態(有効・期限間近・期限切れ)をハートビートで収集し、検索可能な ACME ログを提供。
  • HSTS と HTTPS 強制、コンソール発行のクライアント証明書による mTLS と即時失効。

オリジン証明書の検証は明示的なスイッチで、デプロイ全体またはプール単位に設定します。

localhost:9080/sites/example.com/ssl
証明書状態と ACME イベントを表示する TLS ページ
1 つのサイトの証明書状態と ACME 履歴。

可観測性

すべての判定に痕跡を残す

ログは既存ツールが問い合わせる場所に置かれ、ブロックされたリクエストは curl として再現できます。

  • 本文の切り詰めと WAL バッファを備え、Elasticsearch へ完全なリクエストログを送信。
  • リクエストとレスポンスの生データを PostgreSQL に保存(ヘッダーはそのまま、本文は先頭のみ)。
  • エージェントが送るメトリクスによるトラフィックと攻撃の分析画面。
  • エージェントの健全性、キャッシュヒット率、削除件数をコントロールプレーンで確認。
localhost:9080/logs
判定・スコア・一致ルールを表示するリクエストログ一覧
判定と一致ルールを含む検索可能なリクエストログ。

運用

1 つのコンソールでフリートを運用

設定はバージョン管理され、エージェントは可観測で、コンソール自体がバイナリに含まれます。

  • JWT + bcrypt 認証、マルチテナント分離、パスキー(WebAuthn)ログイン。
  • 設定のバージョン管理:スナップショット一覧、テーブル単位の差分、確認付きロールバック。
  • rust-embed で英語・簡体中文・日本語のコンソールを内蔵。フロントエンドの別デプロイは不要。
  • エージェントの一覧と状態、システムエンドポイントによる CPU・メモリの内訳。
localhost:9080/agents
接続済みエッジエージェントを表示するエージェントページ
エージェントフリートの状態とハートビート。

スコアリング

異常スコアから 1 つの判定へ

各リクエストはパイプラインを抜けるとき必ず 1 つの判定を持ち、ログに残るのもその判定です。

判定意味エッジの動作
Pass しきい値を超えたルールはありません。 そのままオリジンへ転送します。
Monitor 疑わしいがブロックしきい値未満です。 転送しつつ記録し、適用前にルールを調整できます。
Block スコアがブロックしきい値に達しました。 WAF ブロックページを返し、一致ルールを記録します。
Challenge ブラウザであることの証明が必要です。 JS または PoW チャレンジを返し、成功後はクリアランス Cookie で継続します。

判定が生まれる流れを見る

アーキテクチャと WAF エンジンのドキュメントで、リクエストのライフサイクル、ルール評価、スコアリングを解説しています。