CloudfrontにAWS WAFのManagedRuleを適用してみた


目的

AWS WAFが便利と聞いておりましたが、まだ実運用したことがなかったので環境に適用してみました。
設定完了がゴールです。

構成図

前回の構成図にWAFを追加した形です。

手順

AWS WAFの作成のため、WEB ACLsを作成します。


リソース名を入力します。

resource typeを選択します。cloudfront構築済環境ですので、cloudfrontを選択し、対象のresourceを選択します。

次に進み、ルールを選択します。今回はmanaged rule groupを選択します。

Add managed rule groupsからルールを選択します。
今回はS3静的サーバレス環境、かつ初めてなので「Admin protection」のみを適用しますが、WordPressやAP+DB構成を採用している場合は別の構成も検討した方がよさそうです。

「Default web ACL action for requests that dont't match any rules」と聞かれるので「Allow」を選択します。
試しておりませんが、blockを選択するとアクセスできなくなると思われます。

Set rule priorityを聞かれるのでルールの優先順位を設定します。今回は一件なのでデフォルトのまま、次へを選択します。

configure metricsを聞かれるので、チェックしてメトリックを設定します。

設定を確認し、create web ACLsをクリックします。

気づき

1.設定の確認が難しそう
ACLの動作確認を行なう方法は、選択したルールに合わせた脆弱性診断を実施することだと考えられますが、簡単には実施できないので代替手段を検討すべきだと考えております。

2.利用料金
他のAWSサービスと同様に、使った分だけ課金されます。
今回設定した内容だとWebACL1つ、ルール一つなので\$5+\$1+\$0.6=$6.6/月ほどの利用料金となる予定です。
他のライセンスに比べて安いてすが、個人サイトでどこまで守るかは要検討だと考えております。Wordpress環境の場合PHP対策のルールやSQLiを利用した方がよいと考えてます。

リソースタイプ 料金        
Web ACL 5.00USD、月あたり (時間で案分)
ルール        1.00USD、月あたり (時間で案分)
リクエスト 0.60USD 100 万リクエストあたり