概要 #
この記事では、HTTP アップロード サイズを制限するために使用されていた F5 BIG-IP iRule を移行する方法について説明します。 RELIANOID 統合された WAF(Webアプリケーションファイアウォール) を搭載 ModSecurityとOWASP CRS.
オリジナルのiRuleは以下を検査します。
- HTTP メソッド (
POST) Content-Lengthヘッダ
そして、以下のサイズのアップロードをブロックします。 200 MB HTTP 付き 413 Payload Too Large 応答。
オリジナルF5 iRule #
when HTTP_REQUEST { if { [HTTP::method] eq "POST" } { set content_length [HTTP::header "Content-Length"] if { $content_length ne "" && $content_length > 200000000 } { # 200 MB を超えるリクエストを拒否 HTTP::respond 413 content "アップロードサイズが制限を超えています。" event disable } } }
RELIANOID 移行アプローチ #
In RELIANOIDこの機能は、以下の方法で実装できます。
- WAF / IPDSモジュール
- ModSecurityルール
- OWASP CRSとの統合
このアプローチは以下を実現します:
- 中央集権的なセキュリティ執行
- ログ記録と可視性の向上
- メンテナンスが容易
- ネイティブHTTPリクエスト検査
手動ルールセットによる展開 #
RELIANOID WAF設定例 #
道の下 /usr/local/relianoid/config/ipds/waf/sets/ 以下の内容で設定ファイルを作成してください。
## begin conf SecRuleEngine on SecDefaultAction "pass,log,logdata:'client:%{REMOTE_ADDR}',phase:1" SecDefaultAction "pass,log,logdata:'client:%{REMOTE_ADDR}',phase:2" SecDefaultAction "pass,log,logdata:'client:%{REMOTE_ADDR}',phase:3" SecDefaultAction "pass,log,logdata:'client:%{REMOTE_ADDR}',phase:4" ## end conf SecRule REQUEST_METHOD "POST" \ "id:910001,\ phase:1,\ t:none,\ chain,\ deny,\ status:413,\ msg:'アップロードサイズが制限を超えています。',\ log" SecRule REQUEST_HEADERS:Content-Length "@gt 200000000"
ルールの仕組み #
このルールは以下のロジックを実行します。
REQUEST_METHOD "POST": POSTリクエストのみを検査します
REQUEST_HEADERS:Content-Lengthアップロードサイズを読み取ります
@gt 200000000サイズが200MBを超えているかどうかを確認します
deny,status:413リクエストを拒否します
msg:'Upload size exceeds limit.'監査ログメッセージを生成します
F5 iRule から同等の動作マッピング RELIANOID WAF #
HTTP::method: REQUEST_METHOD
HTTP::header "Content-Length": REQUEST_HEADERS:Content-Length
HTTP::respond 413: deny,status:413
event disable: Immediate WAF deny
WebUI経由でのデプロイ #
この構成は、 RELIANOID WebUI。
WebUI設定パス #
MFAデバイスに移動する IPDS > WAF > ルール
その後 創造する 以下に示すような、2つの条件を持つルールを含むWAFルールセット。

検証 #
CURLでテストする #
リクエストの例:
curl -k -X POST -H "Content-Length: 250000000" https://LB_VIP/upload -v
期待される結果 #
応答は次のようになります。
HTTP/1.1 413 ペイロードが大きすぎます
そして、リクエストはバックエンドに到達する前にブロックされるべきである。
ログ検証 #
WAFログで以下を確認してください:
アップロードサイズが制限を超えました。
注意事項 #
コンテンツ長依存性 #
このルールは、クライアントが有効な Content-Length ヘッダー。アップロードにチャンク転送エンコーディングまたはストリーミングアップロードを使用する場合は、追加の保護が必要になる場合があります。
特定のURLのみを制限する #
このルールはURI検証と連結できます。
例:
SecRule REQUEST_URI "@beginsWith /upload"
トラブルシューティング #
ルールがトリガーされない #
確認してください:
- ファームでWAFが有効になっています
- ルールは正しく添付されています
- リクエストメソッドはPOSTです
- Content-Lengthヘッダーが存在します
アップロードは依然としてバックエンドに到達している #
考えられる原因:
- WAFが正しい農場に適用されていません
- ルール構文の問題
- アップロードにはチャンクエンコーディングが使用されます
誤検出(False Positive) #
アプリケーションによっては、正当な理由で大容量のアップロードが必要になる場合があります。
推奨事項:
- アプリケーション固有の例外を作成する
- しきい値を慎重に調整してください。
ベストプラクティス #
- アプリケーション固有のアップロード制限を使用する
- 可能な場合は速度制限と組み合わせる
- WAFログを定期的に監視する
- 不必要に高いアップロードしきい値は避けてください。
- デプロイ後のアップロード動作を検証する
製品概要 #
アップロードサイズを制限するために使用されるF5 iRulesは、 RELIANOID OWASP CRSと統合されたネイティブWAF/ModSecurityルールを使用する。
このアプローチは以下を実現します:
- 一元的なポリシーの適用
- ログ記録と可視性の向上
- より容易なスケーラビリティ
- スクリプト作成の複雑さを軽減
- 標準規格に基づくリクエスト検査