本文へ移動

Web Application Firewall(WAF) ​

WAF は fn-knock を経由する HTTP リクエストを検査し、有効なルールに基づいて不審な内容を記録またはブロックします。ゲートウェイ認証やアプリケーション側のセキュリティを補完する機能であり、ゲートウェイを迂回するポート、TCP/UDP トラフィック、ホスト上のサービスは保護できません。

fn-knock は Coraza を使用して、システムルールとカスタムルールを読み込みます。全体の有効/無効、保護レベル、ルールの有効/無効、ルール更新はすべて Go ゲートウェイへ同期されます。

リクエスト分析の WAF ログタブで防御イベントを確認し、分析やリクエストログのタブへ切り替えられます。

現在の Host に対する有効な高度な認証の確認用 Cookie または永続的な一時認証情報は、検証後に WAF とスキャナー検査の免除に使われます。共通ブラックリストと従来の厳格な許可リストは引き続き有効です。初回のルール一致だけでは免除されません。高度な認証を参照してください。

有効にする前の確認 ​

  1. 実クライアント IP が正しく認識されていることを確認します。CDN や前段のリバースプロキシを経由するときに、ゲートウェイから常にプロキシノードのアドレスが見えている場合、WAF ログ、ブラックリスト、送信元の判定にも誤ったアドレスが使用されます。
  2. 対象のサービスへ fn-knock 経由でしかアクセスできないことを確認します。WAF は、ゲートウェイを迂回してアップストリームのポートへ直接届くリクエストを検査しません。
  3. 誤検知でブロックされた場合にルールを調整できるよう、対象サービスの入口に依存しない管理手段を確保します。
  4. ヘルスチェック、Webhook、アップロード用エンドポイント、アプリケーション API の正常なリクエスト特性を記録し、有効化後はこれらのパスを重点的に監視します。

全体設定 ​

システム設定 → WAF で次の項目を設定します。

設定デフォルトまたは範囲反映方法
WAF を有効化デフォルトは無効有効にすると、最初にシステムルールを確認して同期し、現在の保護レベルでゲートウェイへ読み込みます。無効にすると、WAF チェックを直ちに省略します
ルールを自動更新デフォルトは有効バックエンドがシステムルールを自動的に管理します。更新に失敗した場合は、後続の周期で再試行します
ブロック時の応答ブロックページ/接続をリセットTrace ID 付き警告を返すか、ページを返さず接続またはリクエストストリームを中止します
よく使う地域を除外デフォルトは無効最近のログインでよく使われている地域からのリクエストは、WAF チェックを省略します
保護レベルレベル 1~4、デフォルトはレベル 1変更すると直ちにゲートウェイへ再適用されます

保護レベルは次の 4 段階です。

  • レベル 1 · 標準保護:通常利用での推奨値です。
  • レベル 2 · 強化保護:より敏感に検知するため、アプリケーション API を重点的に監視してください。
  • レベル 3 · 厳格な保護:誤検知によるブロックがさらに増える可能性があります。
  • レベル 4 · 最大保護:主に短時間のトラブルシューティング向けで、検証せず長期間使用することは推奨しません。

高い保護レベルは、脆弱性の修正に代わるものではありません。検査範囲が厳しくなる一方、正当なリクエストを異常と判定しやすくなります。

ブロック時の応答 ​

ブロックページを表示 は、正当な利用者が管理者へ伝えられる Trace ID を表示しますが、fn-knock がブロックしたことも示します。接続をリセット はページを返さず、HTTP/1 では接続をリセットし、HTTP/2 では現在のリクエストストリームだけを中止するため、クライアントは通常ネットワークエラーとして扱います。

この設定は応答だけを変え、ルール、検出記録、攻撃判定は変えません。監視、API クライアント、前段プロキシが接続中止とオリジン障害を区別できることを確認し、誤検知は WAF ログの Trace ID から調査してください。

よく使う地域を除外するときの境界 ​

よく使う地域は、最近のログイン位置から生成されます。除外を有効にすると、一致した地域からのリクエストは一部ルールのスコアが下がるのではなく、WAF 全体をそのまま省略します。モバイル回線、VPN、企業の出口、IP 位置情報データベースの誤差によって除外範囲が広がる可能性があるため、アップストリームのポートも制限し、認証、ブラックリスト、リクエストログを維持してください。

スキャナーのブロックにも、よく使う地域を除外する独立した設定があります。WAF の設定を変更しても、スキャナー設定には連動しません。

LAN 除外の境界 ​

既定で無効の LAN 除外は、プライベート、ループバック、リンクローカル、CGNAT のクライアントアドレスに対する WAF 検査をすべて省略します。これらを信頼できる場合だけ有効にし、先にリクエストログで実クライアント IP を確認してください。前段プロキシが公開訪問者をプライベート IP と誤認すると WAF を迂回します。ログインのローカル除外、常用地域除外、Host 別 WAF 設定とは独立しています。

違反の繰り返しによる自動ブロック ​

システム設定 → WAF で自動ブロックを無効、厳格、通常、緩和から選びます。同じクライアント IP のセキュリティ遮断を数える設定で、WAF の防御レベルとは別です。発動すると共通ブラックリストに追加され、手動解除が必要です。自動ブロックを無効にしても既存の登録は削除されません。

共有出口やプロキシを遮断しないよう、先に実際のクライアント IP を確認します。誤遮断時は Trace ID で WAF ログを調べ、共通ブラックリストから IP を解除し、原因のルールや設定段階を調整します。

システムルール ​

システムルールの領域には、リモートマニフェストの日時、ローカルへの同期日時、更新の有無が表示され、次の操作を行えます。

  • ルールの手動更新。
  • 各ルールの有効化、無効化、表示、ダウンロード。
  • 選択したルールの一括有効化または無効化。
  • すべて有効化またはすべて無効化。
  • 「推奨のみ有効化」への復元。

WAF 全体を有効にすると、最初にシステムルールの更新を試行し、プロジェクトであらかじめ指定された誤検知の多いルールファイルを除外します。すべてのルールを手動で有効にすると、多数の誤検知が再び発生する可能性があるため、元に戻せる環境で先に検証してください。

「推奨のみ有効化」は、システムルールをプログラム推奨の有効状態へ戻します。カスタムルールは変更せず、WAF 全体も自動的には有効にしません。WAF が有効な場合、ルールの変更は直ちにゲートウェイへ読み込まれます。無効な場合は設定だけが保存され、次回の有効化時に適用されます。

カスタムルール ​

カスタムルールの領域では、1 つ以上の .conf ファイルを一度にアップロードし、ファイルごとに有効化、無効化、プレビュー、ダウンロード、削除を行えます。WAF が有効な場合、アップロード、有効/無効の切り替え、削除を行うと、ゲートウェイのルールが直ちに再読み込みされます。

カスタムルールは管理者自身で保守します。

  1. アップロード前に、ルールの構文、フェーズ、アクション、ルール ID を確認し、既存ルールとの競合を避けます。
  2. 最初は記録または検出モードで観察してから、ブロックアクションを有効にします。
  3. 元の .conf ファイルと変更履歴を保存します。バックアップからの復元は、独立したルールのバージョン管理に代わるものではありません。
  4. カスタムルールを削除すると、ゲートウェイはそのファイルを読み込まなくなります。必要であれば、削除前にダウンロードして保管してください。

Host ごとに WAF を省略する ​

サービス用 Host では、サブドメインマッピングの詳細設定で WAF がデフォルトで有効になっています。誤検知や互換性の問題を切り分ける場合は、特定の Host だけ WAF を無効にできます。その Host は全体の WAF を省略し、他の Host は引き続き保護されます。

Host ごとの設定は、独立した WAF インスタンスではありません。WAF 全体が無効な場合、Host 側の設定だけでは保護されません。トラブルシューティング後は、ログに基づいてルールを調整し、Host の保護を元に戻してください。WAF の無効化を長期的な互換性対策にしないでください。

FN Connect トラフィックを WAF へ接続する ​

標準版 fnOS FPK では、システム設定 → fnOS → FN Connect トラフィックを WAF へ接続 を使い、fnOS のリモートアクセスサービス FN Connect からローカル fnOS HTTP ポートへのトラフィックを同じ WAF へ送れます。このスイッチが対象とするのは、FN Connect サービスプロセスがループバックアドレスへ送る IPv4 / IPv6 リクエストだけです。他のローカルプロセスや通常の LAN 直結トラフィックはリダイレクトしません。リクエストログと WAF ログのルート種別は FN Connect と表示されます。

入口を有効にするだけでは攻撃をブロックできません。グローバル WAF と対象ルールも有効にする必要があります。状態欄は、保護中、検出のみ、WAF 無効、デグレードを区別し、検出した fnOS ポート、入口状態、直近の同期エラーを表示します。システムは約 5 秒ごとにルールを再確認し、fnOS HTTP ポートの変更にも追従します。

fnOS の HTTPS を強制 が有効な場合、プログラムは平文の FN Connect 経路を引き継ぎません。この設定を検出するとリダイレクトを有効にしません。ポートへ到達できない、ルールを書き込めない、ローカル WAF 入口が異常な場合は Fail-open としてリダイレクトを削除し、対応する入口を停止して FN Connect 全体の停止を避けます。リモートアクセスできることを WAF が動作中である証拠とせず、表示されたエラーを修正してください。

ファイアウォール処理は従来の iptables と iptables-nft/ネイティブ nftables バックエンドを判別し、fn-knock が命名・所有するチェーンだけを検査、更新、削除します。共有ルールセット全体を列挙・書き換えて状態を判断せず、無関係な第三者チェーンも削除しません。所有チェーンの状態を判断できない場合はエラーを表示して現状を維持し、後続の再調整を待ちます。FNK_FNC_* のチェーン名を手動で再利用しないでください。

この機能は公式サイトの標準 FPK だけで利用でき、ホストネットワーク権限が必要です。Knock Lite、Docker、OpenWrt、一般的な Linux、Synology、Windows では表示されません。有効にする前に fnOS デスクトップまたは LAN の管理経路を確保し、FN Connect から識別可能なリクエストを送って、リクエストログと WAF ログでルート種別とルール動作を確認してください。

WAF ログを確認する ​

WAF ログ ページでは、永続化されたイベントを日付ごとに読み込みます。現在 WAF が無効でも、過去のイベントは引き続き確認できます。ページでは次の操作を行えます。

  • ログが存在する日付を選択。
  • Trace ID、Host、パス、IP を検索。
  • Trace ID から同じリクエストの処理経路を確認。
  • 1 ページあたり 20、50、100、200 件を表示し、カーソルでページを切り替え。
  • 1 つ以上の送信元 IP を選択し、共通ブラックリストへ追加または共通ブラックリストから解除。
  • 選択した日付の WAF イベントをすべて削除。

特定の日付のログを削除すると、管理画面からは復元できません。監査証跡を保持する必要がある場合は、先に詳細をエクスポートまたはコピーしてください。

ゲートウェイは待機中の WAF イベントをリース付きで配信します。バックエンドはイベント、日付インデックス、統計を 1 つの SQLite トランザクションで保存し、すべて成功した後にだけキュー内のコピーを確認済みにします。永続化に失敗するとリースを解放して後で再試行し、同じ Trace ID が再配信されてもイベント統計を二重加算しません。そのため、一時的なディスクのビジー状態や書き込みエラーでログ表示が遅れることはありますが、1 回の失敗だけで消失または二重計上されることはありません。

まだ永続化されていない WAF Trace ID をリクエストログから開いた場合、ページは 5 秒ごとに最長約 1 分間再試行します。それでも見つからない場合は、そのリクエストが WAF に入ったか、対象 Host で WAF が有効か、サーバーログに永続化エラーがあるかを確認してください。

ログ詳細のフィールド ​

詳細には、日時、Trace ID、トランザクション ID、アクション、モード、HTTP ステータスコード、クライアント IP、リモートアドレス、IP 位置情報、リクエストメソッド、プロトコル、Host、パス、Query、完全なリクエスト URL、User-Agent、Referer、ルート種別、ルートキー、アップストリーム、ルールバンドル、ルール ID、ルールファイルと行番号、ブロック情報、エラーが含まれます。

アクションは通常、次のように分類されます。

  • 記録:ルールに一致してイベントへ記録されましたが、そのルールによってリクエストは中断されていません。
  • ブロック:ルールによってリクエストが中断され、ルール ID、アクション、返されたステータスコードが記録されます。
  • 許可:イベントは WAF の処理を経た後、そのまま通過します。

1 つのイベントが複数のルールに一致することもあります。一覧には主要なルールが表示され、残りは詳細に保持されます。調査するときは、最初のルール名だけで判断しないでください。

誤検知によるブロックの調査 ​

  1. リクエストログ でリクエストがゲートウェイへ到達したことを確認し、日時、Host、パス、クライアント IP、Trace ID を記録します。
  2. WAF ログで Trace ID を検索します。見つからない場合は、Host、パス、IP でも検索します。
  3. アクション、モード、ブロック時のステータスコード、主要なルール、ルールファイルの位置を確認します。
  4. 対応するルールファイルをプレビューし、システムルールかカスタムルールかを確認します。
  5. 最初に特定のルールだけを一時的に無効にするか、保護レベルを下げてリクエストを再現します。WAF 全体をすぐに無効にすることは推奨しません。
  6. 正常なリクエストが回復し、異常なサンプルは引き続き記録またはブロックされることを検証してから、調整を確定します。

WAF ログにイベントがない場合は、ゲートウェイのレート制限、共通ブラックリスト、公開範囲、スキャナーのブロック、認証フローによって先に処理されていないか、対象 Host で WAF が無効になっていないかも確認してください。

保護対象外 ​

QQ コミュニティ:1081609274