スキップしてコンテンツを表示

AWS WAF を使用して特定の拡張子を持つファイルのアップロードをブロックする方法を教えてください。

所要時間2分
0

特定の拡張子を持つファイルのアップロード (HTTP POST リクエスト) の制限をウェブサーバーに適用したい。

簡単な説明

HTTP リクエストの POST データを分析する場合、アップロードされるコンテンツには次の 2 つのタイプがあります。

  • フォームデータ
  • バイナリ

特定の拡張子 (.pdf、.docx、.exe) が付いたファイルのアップロードを制限するには、AWS WAF でカスタムのウェブアクセスコントロールリスト (ウェブ ACL) ルールを作成して設定します。

: AWS WAF は、リクエスト本文の最初の 8 KB (8,192 バイト) を検査します。大容量の本文リクエストに関する詳細については、「AWS WAF における大容量ウェブリクエストコンポーネント」を参照してください。

解決策

POST データが使用するコンテンツのタイプを識別する

HTTP リクエスト内の POST データは通常、フォームデータまたはバイナリ形式です。

  • ユーザーがウェブページや HTML フォームに入力し、HTTP がウェブサーバーに送信、投稿するデータがフォームデータに該当します。
  • バイナリペイロードは、テキストペイロード以外のものを指します。たとえば、バイナリペイロードには、.jpeg ファイル、.gzip ファイル、または .xml ファイルを使用できます。これには、.pdf アプリケーション、.jpeg 画像、.zip アプリケーションなどの一般的なバイナリデータが含まれます。すべてのファイル拡張子タイプについては、Internet Assigned Numbers Authority (IANA) のウェブサイトで「メディアタイプ」を参照してください。

POST リクエストタイプを識別するには、HTTP POST ヘッダーの Content-Type 値を参照します。例:

Content-Type: multipart/form-data

Content-Type の出力に応じて、ヘッダー値と一致するセクションを参照してください。

マルチパート/フォームデータコンテンツに対するルールを作成する

次の手順を実行します。

  1. AWS WAF コンソールを開きます。
  2. ナビゲーションペインで [AWS WAF] を選択します。
  3. [リソースと保護パック] を選択します。
  4. 目的の保護パックを選択します。
  5. 選択した保護パックで [ルール] を選択します。
  6. [ルール] の横にある [表示と編集] を選択するち、保護パックに関連付けられたルールを表示、編集できます。
  7. 右側のペインの [ルールの管理] で [ルールを追加] を選択します。
  8. [新しいルールを作成] を選択します。
  9. [カスタムルール] を選択し、[次へ] を選択します。
  10. [ルールタイプ][カスタムルール] を選択し、[次へ] を選択します。
  11. ルールを設定するには、次の値を設定します。
    [アクション] でカスタムルールに対し、[ブロック] を選択します。
    [名前] に、このルールを識別するための名前を入力します。
    [リクエストが次の場合][ステートメントと一致] を選択します。次に、[ステートメント] の以下のフィールドに入力します。
    [検査][JSON 本文] を選択します。
    [JSON の一致範囲][値] を選択します。
    [無効な JSON 本文リクエストに対するアクション] でユースケースに合ったオプションを選択します。
    [検査する内容][すべての JSON コンテンツ] を選択します。
    [一致タイプ][正規表現と一致] を選択します。
    [正規表現] で、一致する正規表現パターンを入力します。次の例を参照してください。
(?:.pdf|.doc|.docx|.ppt)
  1. (オプション) [テキスト変換] でテキスト変換を追加するか、これらのフィールドを [なし] のままにします。
  2. [オーバーサイズハンドリング] でユースケースに合ったオプションを選択します。
  3. [作成][ルール] を選択します。
  4. [保存] を選択します。

バイナリ値のルールを作成する

次の手順を実行します。

  1. AWS WAF コンソールを開きます。
  2. ナビゲーションペインで [AWS WAF] を選択します。
  3. [リソースと保護パック] を選択します。
  4. 目的の保護パックを選択します。
  5. 選択した保護パックで [ルール] を選択します。
  6. [ルール] の横にある [表示と編集] を選択するち、保護パックに関連付けられたルールを表示、編集できます。
  7. 右側のペインの [ルールの管理] で [ルールを追加] を選択します。
  8. [新しいルールを作成] を選択します。
  9. [カスタムルール] を選択し、[次へ] を選択します。
  10. [ルールタイプ][カスタムルール] を選択し、[次へ] を選択します。
  11. ルールを設定するには、次の値を設定します。
    [アクション] でカスタムルールに対し、[ブロック] を選択します。
    [名前] に、このルールを識別するための名前を入力します。
    [リクエストが次の場合][ステートメント****と一致] を選択します。
    [ステートメント] の以下のフィールドに入力します。
    [検査][単一ヘッダー] を選択します。
    [ヘッダーフィールド名] に「Content-Type」を入力します。
    [一致タイプ][正規表現と一致] を選択します。
    [正規表現] で、一致する正規表現パターンを入力します。
    .pdf ファイルおよび .jpeg ファイルに関する例を次に示します。
(?:pdf|jpeg)
  1. (オプション) [テキスト変換] でテキスト変換を追加するか、これらのフィールドを [なし] のままにします。
  2. [作成][ルール] を選択します。

注: ルールを特定のアップロード URI パスに制限するには、パスを検査するウェブ ACL ルール内で AND ステートメントを使用します。

AWS公式更新しました 6ヶ月前
コメントはありません

関連するコンテンツ