マルチクラウド 担当者コラム
マルチクラウド・AWS
AWS 第36回『セキュリティの優先度低くなっていませんか? ーAWS WAFのご紹介ー』
こんにちは、DIS AWS推進チームです。
昨今、某動画サイトへのサイバー攻撃が行われ、ニュースにも大きく取り上げられ、セキュリティへの関心は日々高まっていると思いますが、大規模のシステムではないため狙われないから大丈夫、サーバー部分のクラウド移行で十分やコストをかけられない、セキュリティの知見がないなどの理由でセキュリティの優先度が低くなっていないでしょうか。AWSはセキュリティを最優先事項と考え、多くのセキュリティサービスを提供しています。このコラムでは、セキュリティサービスの一つの「AWS WAF」についてご紹介します。 AWSをこれから利用される方だけでなく、既に利用されている方にも、 導入が簡単かつ安価で利用が可能なため、ぜひこの記事を参考にWAFの利用を検討いただき、セキュリティ対策について検討いただければと思います。
WAF 概要
WAF(Web Application Firewall)とは、ウェブアプリケーションの通信内容を検査し、不正なアクセスを遮断する機能を持つセキュリティ対策ツールです。利用する目的としては、脆弱性を悪用した攻撃から、ウェブアプリケーションを保護することです。

AWS WAF 提供している機能
悪意のあるリクエストのブロック
SQLインジェクション、クロスサイトスクリプティングなど、アプリケーションの脆弱性を悪用した攻撃リクエストをAWS、またはサードパーティーが提供するマネージドルールでブロックすることが出来ます。
カスタムルールに基づいたリクエストのフィルタ
IPや文字列など様々な条件でリクエストをフィルタすることが出来ます。また、リクエストが正常であっても、リクエスト数が過剰な場合はブロックすることも出来ます。
モニタリングとチューニング
AWS CloudWatch等を利用しリクエストのログを取得することで、ルールのモニタリングやチューニングが出来ます。
AWS WAF コンポーネント
WAFを使いたい場合は、WAF+WAFが連携可能なサービスを構築する必要があります。WAFのみでは利用できないのでご注意ください。

Web ACLとルール
Web ACL(Web Access Control List)がWAFの設定の単位です。Web ACLにルールを登録することで、リクエストが届くと、Web ACLは登録したルール通りにリクエストを検査し、リクエストに対して許可やブロックなど処理方法を決定します。Web ACLとルールは1対1ではなく、1つのWeb ACLに対して複数のルールを設定可能で、ルールの適用する順番を指定することが出来ます。また、設定した全てのルールに一致しない場合は、デフォルトの処理方法が実行されます。デフォルトの処理方法は許可もしくはブロックの指定が可能です。

ルールでは、ステートメントでリクエストに対する検査方法、アクションでリクエストが検査条件に一致した場合の処理方法を定義します。ステートメントでは、条件に一致している、または一致しなかった場合や、2つの条件に一致している場合など条件を指定して、アクションの実行を設定します。
<ステートメントとアクションの例>
-
アクセス元のIPアドレスが指定したIPアドレスと一致している場合はリクエストをブロックする
-
アクセス元が日本ではない場合はリクエストをブロックする
<ステートメントで定義可能な条件>

<リクエストの検査対象コンポーネント>

Web ACLには様々なカスタム可能なルールを登録することができますが、1つのWeb ACLに無限にルールを登録できるわけではありません。登録可能なルールの数についてはWeb Capacity Unit(WCU)が関係しています。
Web Capacity Unit(WCU)とは
WAFのルールに対するコストがWeb Capacity Unit(WCU)です。それぞれのルールに応じてコストが計上され、その合計がWeb ACLの上限5000を超えない範囲でルールを登録することが可能です。単純なルールより、複雑なルールのほうがWCUのコストが高くなります。
確認方法としては、AWSのコンソール画面から利用しているWeb ACLの合計WCUを確認することが出来ます。画像では700WCU分のルールが設定されていることが分かります。

Web ACLの最大容量は5000WCU で、Web ACL自体の料金として1500WCU分の料金が含まれています。そのため、1500WCUを超えると階層型料金モデルに従って追加料金が発生するのでご注意ください。
AWS WAF Managed Rule
マネージドルールとは、AWSもしくはサードパーティーによって管理されている一般的な脅威からアプリケーションを保護するための事前定義済みのルールセットです。
ルールは既に定義済みのため、デプロイが簡単かつ新しい脅威が発見された場合、新しいバージョンのマネージドルールが提供されます。
AWS Managed Rules for AWS WAF
AWSが提供しているマネージドルールです。AWSマネージドルールには、一般的な脅威に対するルールやOSやミドルウェアなどのユースケースに合わせたマネージドルールがあります。WCUは消費しますが、一部のルールを除き追加費用無しで利用が出来ます。
AWS Marketplace Managed Rules for AWS WAF
サードパーティーが管理しており、Marketplaceを通して利用可能です。販売者の中には、AWSパートナーのCloudbricやF5、Fortinetなどがマネージドルールを提供しております。AWS Marketplace 販売者による料金設定に基づいて、WAFの料金とは別で料金が発生します。
WAF 料金体系
Web ACL
5USD /月(1Web ACLあたり/1500 WCUを含む)
ルール
1USD /月(1ルールあたり)
リクエスト数
0.6USD /百万リクエスト
-
東京リージョンの料金体系
-
Web ACLにて、1500WCUを超えて使用する500WCUごとに、100万回のリクエストあたり0.20USD の追加料金が課金されます。
構成図
WAFを利用した多段防御の構成図です。こちらの多段防御では、前段のCloudFrontのWAFで一般的な既知の脅威を防ぎ、後段のALBのWAFではOSやミドルウェアなどのユースケースに合わせた攻撃を防ぐ二層の構成です。例えば、CloudFrontにルールを2個、ALBにルールを4個ずつ設定し、リクエスト数を400万と仮定した場合、WAFの料金は月額22.4 USDです。料金の内訳については下記に記載しているので、WAFの利用を検討する際のイメージとして参考になればと思います。

<料金内訳>
Web ACL
5 USD /月 × 3 Web ACL = 15 USD (Web ACLのコスト)
ルール
1 USD /月 × 5 Custom Rule = 5 USD (ルールのコスト)
0 USD × 5 AWS Managed Rules = 0 USD(AWSマネージドルールのコスト)
※Managed Rulesは無料ルールかつ1500WCU以内で利用
リクエスト
0.6 USD /百万リクエスト × 4 百万リクエスト = 2.4 USD(リクエストのコスト)
WAF全体
⇒15 USD (Web ACLのコスト) + 5 USD (ルールのコスト) + 2.4 USD(リクエストのコスト)
= 22.4 USD(WAF全体のコスト)
まとめ
今回は、AWS WAFについてご紹介いたしました。
利用するにはWAFが連携可能なサービスも必要ですが、WAFは安価かつマネージドルールを利用すれば、デプロイも簡単に行えるので、ぜひWAFの利用をご検討いただければと思います。
参考URL
- WAF(Web アプリケーションファイアウォール)とは?| AWS (amazon.com)
- 20200324_AWS_BlackBelt_AWS_WAF_Update.pdf (awscloud.com)
- 202206_AWS_Black_Belt_AWS_WAF_Bot_mitigation.pdf (awscloud.com)
- AWS WAF ウェブ ACL キャパシティーユニット (WCUs) - AWS WAF、 AWS Firewall Manager、および AWS Shield Advanced (amazon.com)
- マネージドルールグループ - AWS WAF、 AWS Firewall Manager、および AWS Shield Advanced (amazon.com)
- 202203_AWS_Black_Belt_AWS_Managed_Rules_for_AWS_WAF.pdf (awscloud.com)
最後までお読みくださりありがとうございました。
--Let's Enjoy Amazon Web Services!