こんにちは。AWS初心者のASDのTです。
サーバに不正アクセスされクレジットカードの情報漏洩や会社職員の個人情報が流出したりと、何かとセキュリティに関連するニュースが立て続けに起きているこの頃。
不正アクセスの手口は様々ありますが、主に使われるケースは次の2つになります。
・不正ログイン
・脆弱性等の悪用
不正ログインは利用者側がログインIDやパスワードを適切に管理していれば、被害にあう確率は下がるでしょう。
しかし、脆弱性については日々変化しており対応するのも一苦労・・・。
SQLインジェクションやクロスサイトスクリプティング、ディレクトリトラバーサル等、技術者にとっては悩みのタネの一つ。
そのような脆弱性対策を簡単に実現してくれるAWS WAFなるものが2015年からサービスインされています。
そもそも、WAFとは一体なんなのか?
Web Application Firewallの略で、正常な入り口から入ってくる悪意のあるデータを排除してくれる機能です。
よく耳にするFirewallは、IPアドレスとポートを入り口として、「この入り口には〜のIPアドレスは入っちゃダメ」とか
「この入り口は常に閉じておかないとダメ」と言った、不正な通信経路からの侵入を防ぐものでした。
しかし、正しい通信経路からくる不正なデータに対しては無力な訳です。
そこでWAFでは、通過するデータの中身を解析し、あらかじめ設定しておいたデータパターンと入力データを突き合わせ、
マッチしたデータを遮断・排除してくれます。
ただし、すべての不正データを防げるわけではなく、データパターンをガチガチに設定してしまうと
正常なデータも予期せぬ形で遮断してしまう可能性があります。
誤検知や誤遮断が発生するリスクを踏まえて、使う事をお勧めします。
データパターンを自分でカスタマイズし設定できるのですが、
現在はサードパーティのベンダーが様々なユースケースに対応するルールを提供してくれています。
マーケットプレイスから購入し、ALBやCloudFront等にアタッチする事で簡単に導入できるようになっています。
デメリットとして、サードパーティのルールはチューニングができないことに注意してください。
以下にWAFの要素と価格について簡単に紹介しておきます。
① Condition : IPアドレスやデータパターンなどから目的を選び、対象の設定を行う
② Rule : Conditionをまとめ、アクションの設定を行う
③ WebACLs : Ruleをまとめたもの、保護対象の設定を行う
※WebACLsをALB等にアタッチすると、WAFが適用されるようになっています。
WAFの料金体系
WebACLごと: $5/月
1Ruleごと: $1/月
100万リクエストごと: $0.6
例)1つのWebACLsに3つのRuleが設定してあり、500万アクセスがあった場合
($5 * 1) + ($1 * 3) + ($0.6 * 5) = $11/月
異なるアカウント間でWAFを一元管理したい場合は、AWS Firewall Managerという機能を使ってください。
前提条件として以下の設定を完了していることです。
・AWS Organizationsに参加する
・AWS Firewall Manager 管理者アカウントの設定
・AWS Configを有効にする
前提条件をクリアしたら、Ruleを作成しそれぞれのアカウントへ適用するためのポリシーを設定します。
なお、1ポリシーにつき$100/月かかるので複数AWSアカウントを管理する場合にお勧めします。
わずかな料金で強力なWAFを設置できるのは、本当にありがたいですね。
皆さんもこの機会にぜひ導入されてはいかがでしょうか。