Anubis 解説:ポリシーと Proof of Work でセルフホストサイトを守る
Anubis がリバースプロキシで要求を分類し、疑わしいクライアントにブラウザー計算を課す仕組みと、配備、監視、アクセシビリティ、誤判定を検討します。
位置付けと注目理由
Anubis はオリジンサーバーの前に置くオープンソースの Web 防御プロキシです。大量の自動取得には計算費用を負わせ、ポリシーに合う訪問者を通します。取得時点で 20,826 Star、30 日間に約 23 コミット、最新リリースは v1.25.0 でした。AI 学習用取得への対策で注目されますが、保守側も摩擦の大きい手段として説明しています。
用途と主要機能
bot の急増で CPU、帯域、データベース接続が圧迫される文書サイト、コードホスト、個人サービス、公共コミュニティが対象です。順序付き規則は要求を許可、拒否、挑戦、重み付けでき、既知 bot や独自パスも扱います。挑戦に通ると署名済みの通行情報が発行され、Prometheus 指標で失敗、命中、流量を監視できます。
要求処理と計算課題
要求は順番にポリシーを通ります。ALLOW は通過、DENY は拒否、CHALLENGE は検証、WEIGH は後続の難度を変えます。挑戦画面はブラウザーで条件を満たす値を計算し、サーバーは低コストで検証して期限付き資格を発行します。大量取得の累積費用をクライアント側へ移しますが、訪問者の身元は証明せず、高度な自動化が解けない保証もありません。
技術構成と統合
本体は Go、挑戦 UI は Preact、規則は YAML です。通行情報には署名と JWT が関わり、Ed25519 鍵とセッション設定が文書化されています。nginx、Caddy、HAProxy、Traefik、Kubernetes ingress とオリジンの間に置き、コンテナ、パッケージ、サービスとして動かせます。信頼するプロキシヘッダー、実クライアント IP、転送先 URL の設定が重要です。
最小の配備手順
公式対応のコンテナイメージかプラットフォーム用パッケージを選び、隔離環境でテスト用オリジンを代理させ、転送先、待受、永続鍵を設定します。外側で TLS と転送ヘッダーを整え、既定ポリシーから開始します。検索エンジン、監視、内部網は確認できたものだけ狭く許可し、ページ、API、静的資産、ログイン、JavaScript なし、キャッシュ、障害時の戻し方を試します。
効果と運用上の代償
サーバーの検証は安く、連続取得側の累積計算を高くでき、外部の防御事業者に依存せず規則を管理できます。一方、初回表示の遅延、端末の電池と CPU、JavaScript 必須、アクセシビリティ、誤遮断が発生します。高度な取得器は挑戦を実行できます。難度が低ければ無効、高ければ人を傷めるため、計測と調整が導入作業より重要です。