WAF ファイアウォール
Coraza と OWASP CRS v4 をベースにした Web アプリケーションファイアウォールで、Web サービス のサイトに適用できます。
機能
- OWASP CRS v4 ルールセットを内蔵し、ルールファイル単位で有効化できます
- カスタム SecLang ルールに対応
- ブロックモードと検出のみのモード
- リクエストボディの検査上限を調整でき、上限を超えた場合はリクエストを拒否するか先頭部分のみを検査します。パスごとにボディ検査を省くこともできます
- WebDAV 互換モード:クラウドドライブや WebDAV で使うメソッド、リクエストヘッダー、任意のアップロード用コンテンツタイプを許可します
- 複数のインスタンスを作成し、サイトから必要に応じて参照できます
利用のヒント
- 新しいサイトではまず「検出のみ」にして、しばらくログを観察し、誤検知がないことを確認します。
- 誤検知があれば、ルールファイルを調整するか、カスタムの除外ルールを追加します。
- そのうえで「ブロック」に切り替えます。
大きなファイルをアップロードするサイト
WAF は既定で 12.5 MB までのリクエストボディしか検査せず、それより大きなリクエストは拒否されます(413)。そのため、クラウドドライブ、WebDAV、ファイルマネージャーなどのサイトでは大きなファイルをアップロードできません。インスタンスの「リクエストボディの検査」で次の項目を調整できます。
- 検査上限:0 は既定の 12.5 MB、最大 1024 MB です
- 上限を超えた場合:「リクエストを拒否」はこれまでと同じ動作です。「先頭部分のみ検査」は上限までの部分だけを検査し、残りはそのままバックエンドへ転送するため、大きなファイルをアップロードするサイトに向いています
- WebDAV・アップロード互換:OWASP CRS は既定で GET、HEAD、POST、OPTIONS のみを許可し、
Lock-Token、If、Content-Rangeリクエストヘッダーと許可リスト外のコンテンツタイプをブロックするため、WebDAV クライアントはディレクトリの一覧表示、アップロード、ロックができません。有効にすると PUT、DELETE、PROPFIND、PROPPATCH、MKCOL、COPY、MOVE、LOCK、UNLOCK などのメソッドとこれらのヘッダーを許可し、アップロードのコンテンツタイプも制限しなくなります。PUT とapplication/octet-streamのリクエストボディはファイルの中身として扱い、フォームパラメーターとしての検査は行いません。インジェクションやパストラバーサルなどの攻撃の検査は引き続き有効です - ボディ検査を省くパス:1 行に 1 つのパスのプレフィックス(例:
/api/upload、/remote.php/dav/)。一致したリクエストはボディを検査しませんが、ヘッダー、URL、パラメーターは通常どおり検査します
クラウドドライブや WebDAV のサイトには専用のインスタンスを作成し、「WebDAV・アップロード互換」を有効にして「先頭部分のみ検査」を選び、必要に応じてアップロード用のエンドポイントを省くパスに追加することをおすすめします。他のサイトは既定の設定のまま使えます。
curl や rclone などのクライアントは大きな内容をアップロードするときに Expect: 100-continue リクエストヘッダーを付けますが、CRS 4 は既定でこれをブロックします。Gately はすべてのインスタンスでこのヘッダーを許可している(100-continue は Gately 自身が処理します)ため、追加の設定は不要です。
テスト
WAF は実際の攻撃ペイロードでテストしており、パストラバーサルなどの攻撃のブロックを確認しています。