ログイン前のボット対策
ボット対策認証はログインフローの最初に実行され、自動化されたリクエストが認証 API へ直接到達するのを抑えます。ログイン認証情報、IP 許可リスト、WAF の代わりになる機能ではありません。
システム設定 → チャレンジ で認証方式を選び、保存します。新しく開いたログインページには新しい設定が適用されますが、既存のセッションは失効しません。
選択できる方式
| 方式 | 特徴 | 向いている用途 |
|---|---|---|
PoW CAPTCHA | ブラウザーで Proof of Work を実行し、外部サービスに依存しない | 外部依存を減らし、クライアント側で少量の計算を行ってもよい場合 |
| Cloudflare Turnstile | Cloudflare が検証を行う | Cloudflare をすでに利用しており、マネージド型のボット対策を使いたい場合 |
PoW はデフォルトの組み込み方式です。ブラウザーは SHA-256 チャレンジを取得し、ローカルで proof を計算します。チャレンジの有効期間は 5 分で、正常に使用できるのは 1 回だけです。
PoW の難易度
PoW には 標準(探索上限 100000)と 非常に難しい(300000)の 2 つのプリセットがあります。旧バージョンからのアップグレードで別の有効値が保存されている場合は、カスタム値として表示されます。サーバーが受け付ける範囲は 10000~1000000、刻みは 10000 です。
探索上限を高くするとクライアントの平均計算量は増えますが、実時間はデバイス、ブラウザー、ランダムな命中位置によって変わります。自動化のコストが上がる一方、低性能なスマートフォン、古いデバイス、省電力モードではログインが遅くなることがあります。変更後は一般的な PC とモバイル端末の両方でテストしてください。
一般的でない場所の難易度を上げる を有効にすると、直近 7 日間に認証へ成功したグローバル IP から、よく使う地域を自動的に学習します。
- 解決済みで一般的な地域に一致する場合は基本難易度を使用します。
- 解決済みでも一般的な地域に含まれない場合は、一般的でない地域向け難易度を使用します。
- プライベート/ローカルアドレス、地域が未解決、または学習モデルが未形成の場合は基本難易度を使用します。
一般的でない地域向け難易度は基本難易度より低くできません。この機能はアカウントごとの固定された「信頼済み場所」一覧を作らず、新しい地域を拒否もしません。PoW の計算コストだけを上げます。旅行、ISP の出口変更、IP 位置情報の誤差でも高い難易度になることがあります。ログインしにくい場合は、他の認証やアクセス制御を弱める前にこの設定を無効にしてください。
Turnstile を選ぶ前に Cloudflare でウィジェットを作成し、サイトキー と シークレットキー を fn-knock に入力する必要があります。詳しい手順は Cloudflare Turnstileを参照してください。
切り替えと保存
システム設定 → チャレンジ で PoW CAPTCHA または Cloudflare Turnstile を選びます。PoW では基本難易度を選び、必要に応じて一般的でない地域向け難易度を有効にします。Turnstile ではサイトキーとシークレットキーの両方が必要です。
サイトキーは公開ログインページへ送られ、ウィジェットの表示に使用されます。シークレットキーはサーバー側だけに保存され、Cloudflare でトークンを検証するために使われます。PoW へ戻しても Turnstile の既存パラメーターは設定に残り、後で再び選択したときにそのまま利用できます。
プロバイダーを変更してもログイン済みセッションは破棄されず、その後に認証フローへ入る新しいリクエストだけに影響します。すでに開いているログインページには以前のチャレンジが残っている場合があるため、ページを再読み込みしてからテストしてください。
ボット対策認証の範囲
- 保護されるのは、fn-knock のログインページを通るトラフィックだけです。
- プライベートネットワークやローカルの送信元はデフォルトでローカル例外になるため、LAN 内での結果だけでは公開側のボット対策が正常か判断できません。
- Turnstile では、ブラウザーから Cloudflare の検証リソースへ到達できる必要があります。制限されたネットワークやブロックルールがあると、ウィジェットが表示されなかったり、検証に失敗したりすることがあります。
- 方式を変更した後は、シークレットウィンドウとモバイル回線を使って、ログインフロー全体を 1 回確認してください。
トラブルシューティング
- 設定が保存済みであることを確認し、ログインページを開き直します。
- PoW が期限切れまたは使用済みと表示されたら、ページを再読み込みして新しいチャレンジを取得します。システム時刻がずれている場合も、有効期間の判定に異常が起こります。新しい地域だけで計算が遅い場合は、一般的でない地域向け難易度を確認します。
- Turnstile では、
サイトキー、シークレットキー、ウィジェットの hostname、実際のログインドメインが一致しているか確認します。 - ログイン用ドメインが正しく名前解決され、HTTPS を使用していることを確認します。
- ブラウザーのコンソール、リクエストログ、イベントセンターに記録されたエラーを確認します。
