AWS WAFを導入するための最低限必要な知識

AWS WAF(new)

古いものはclassicと表記されている。 今回検証対象としないため対象外

いわゆるWeb Application FireWallで。 SQLインジェクションとかXSSみたいな怪しいhttpリクエストをblockしてくれたりログ出してくれたりメトリクスを出してくれたりする。

設定対象

CloudFrontかALB(CLBは不可)にアタッチする。 akamaiやinacpsulaのようなCDN型みたいにCNAMEで指定するようなやり方では無い。 なのでオンプレとか他クラウドにアタッチはできない(ACMみたいなもん)

WEB ACL

名前の通りウェブアクセスコントロールリスト。 ブロックするアルゴリズムを設定する。 このACL自体にデフォルトアクションとしてallowとblockがある。

外部向けサービスなら基本的にallow 社内向けサービスとかで閉じたいならblock(cloudfront + s3みたいな構成でも使える。もちろんバケットポリシーでもいいが)

RuleGroup

ルールグループはルールの塊。 SQLインジェクションのルールとか。作る。 まずはマネージドルールを適用するところから始める。

自分でルールをカスタマイズもできるのでその場合はルールグループを作成することになる。

IP Sets

IPのホワイトリストブラックリストを作成するにはここで作成する。 RuleGroupとは別管理になるが。 WEB Acl側から見ると適用するルールの一つということになるのでこれもWEB ACLにセットすることになる。

AWSマネージドルール

AWSがあらかじめ用意してくれてるルールで、 terminatingRuleMatchDetails というSQLインジェクションXSSにおいて bodyのログを出してくれるのはマネージドルールだけ。

dev.classmethod.jp

今回はAMRsからCore rule setとSQL databaseを利用します。セットアップ方法は下記を参照してください。

クラスメソットさん参照

この後はWAF Charmとfirehose & s3を使ったログについて