ちょっと話題の記事

AWS再入門 – AWS WAF編

2015.12.06

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

当エントリはDevelopers.IOで弊社AWSチームによる『AWS サービス別 再入門アドベントカレンダー 2015』の6日目のエントリです。昨日5日目のエントリは吉田の『AWS Key Management Service(KMS)』でした。 このアドベントカレンダーの企画は、普段AWSサービスについて最新のネタ・深い/細かいテーマを主に書き連ねてきたメンバーの手によって、今一度初心に返って、基本的な部分を見つめ直してみよう、解説してみようというコンセプトが含まれています。 本日6日目のテーマは『AWS WAF』です。

目次

AWS WAFとは?

Webアプリケーションファイアウォール(WAF)とは、ウェブアプリケーションの脆弱性を悪用した攻撃からウェブアプリケーションを保護するセキュリティ対策の一つです。(IPA 独立行政法人 情報処理推進機構:Web Application Firewall 読本より

Firewallや、IPS/IDSとは違い、以下のような攻撃に対して効果があるものです。Webアプリケーションファイアウォールなので、その他のホストへの直接の攻撃は防御できませんのでご注意ください。

攻撃名 攻撃内容
アプリケーションDDoS "Distributed Denial Of Service"の略で、サービスの妨害や停止を行う攻撃を行うホストがネットワーク上に分散しているもの
SQLインジェクション ウェブアプリケーションの通信内容に、外部からデータベースを不正に操作
クロスサイトスクリプティング ユーザのアクセス時に表示内容が生成される「動的Webページ」の脆弱性、もしくはその脆弱性を利用した攻撃

特にAWS WAFは『Cloudfrontに統合されAPIによる自動化機能を持った、Webアプリケーションファイアウォール(WAF)』です。

2015年10月にセキュリティを加速させるため発表された新サービスの1つで、AWS InspectorやConfig Ruleと並ぶセキュリティ機能です。これからも機能拡張が進むと思われますので、今の持っている機能を知りつつ、新機能をしっかりと抑えていきたいと思っています。 そのため、再入門というはちょっと違うかもしれませんね。

メリット

AWS WAFを採用することで得られるメリットは、以下のようなものもあげられます。

  • Web攻撃からの防御
  • デプロイとメンテナンスの簡易化
  • 開発プロセスにセキュリティを埋め込むことが可能

特徴

セットアップに時間がかからず、APIとConsoleで操作可能

今まで従来のWAFは、AWS MarketplaceからLaunchして複雑なルールなどをGUIやCLIで操作しているものが多く、APIで操作できるものはほとんどありません。 AWS WAFはCloudfrontに追加する形で導入できるため、既存でCloudfrontを利用している場合はすぐに使うことができます。 また、APIで制御できるため特定の通信をモニタリングや、遮断したいなどの要望に応じてAPIで設定でき、開発者がサービスと組み合わせた動作も可能となります。

冗長化、スケールリングはAmazonにおまかせ

Cloudfrontと統合されて動作し、冗長化やスケーリングを気にすることはありません。

安価

AWS WAFは、前払いの必要はありません。使った分だけ料金となります。以下の数で課金されます。

  • 定義したWeb ACL
  • ルール
  • Webリクエスト数

ポイントしては、CloudFrontのディストリビューションにアタッチして使うことになるのですが、ひとつのACLで複数のCloudFrontに設定できます。ACLの使い回しができ流ため、価格メリットもあります。

目安としては、以下となります。

  • テスト環境(1ルール):月額$6
  • 小規模サイト(6ルール、58Mビュー):月額$46
  • 中規模サイト(6ルール、260Mビュー):月額$167

AWS WAFの価格体系について

AWS WAF の料金

これからの部分も・・・

AWS WAFを導入すれば、攻撃から全てが防御されるのでは? と思われるかと思いますが、そうではありません。

AWS WAFは特定の攻撃に対する調査や防御に利用できます。 しかし

  • 攻撃パターンを理解し
  • モニタリング設定し
  • 取るべきアクションを設定する

必要があります。そのためには、専門的な知識が必要となります。 毎日更新されるシグネチャーとマッチングし既知の脆弱性などから予防する対応が必要な場合は、セキュリティベンダーの製品を用いる必要があります。 さまざまなセキュリティベンダーは、日々更新される様々な攻撃に対して対策を打っています。この部分については今後注目すべき点で紹介します。

サービス利用のユースケース

上述のような特徴を持つAWS WAFですが、主なユースケースとしては以下が挙げれます。

CloudFrontへのアクセス制限

IPアドレスでCloudfrontへのアクセス制限をできるため、非公開でテストしたい場合になどに有効です。

特定の攻撃に対する調査や防御

以下の例では、Layer7の通信をカウントできるため、AWSを使ってAPIサービスを提供しているシステムにてURIにAPIをバージョン情報を含み、古いバージョンのAPIアクセスをモニタリングしたり、遮断していました。 (re:Invent 2015 (SEC323) New: Securing Web Applications with AWS WAFで紹介されていた、connectwise社の例です。)

今後注目すべき点

AWS WAFは、単体で利用することもできますが、パートナー製品との連携によってより効果を発揮します。Alert Logic、Imperva、Trend Microなどです。動的にルールセットを更新することを考えるとパートナー製品は必須になるかと思います。

screenshot 2015-10-07 5.13.56

AWS WAFとImperva ThreatRadarによるIPレピュテーション #reinvent

AWS WAFとTrend Micro Deep Securityによるフルスタック防御について #reinvent

AWS WAFを導入するためには?

AWS WAFを導入するにはCloudfrontが必要です。アドベントカレンダー3日目のAWS再入門 Amazon CloudFront編を見ておきましょう。

また、 AWS WAFを使うためシステムにCloudFrontを導入した時の注意点まとめ

AWS WAF を CloudFront の機能と組み合わせて使うときのポイント #reinvent

を読んでおくと効果的です。

設定に必要な構成要素

項目 意味
Web ACL Ruleを束ねたもの、Cloudfrontに適応する
Rule Conditionを束ねたもの
Condition IP addresses/SQL injection/String matchingの指定
Filter String matchingで「リクエストヘッダー/HTTP Method/クエリーストリング/URL の文字列」の中から複数設定

waf-object-relation

設定方法

設定については、次の記事を参考に設定ください。

AWS WAFで特定のUser-Agentだけ通信できるサイトを構築 #reinvent

AWS CLIからAWS WAFのWeb ACLを定義してみた #reinvent

あわせて読みたい

公式情報

【AWS発表】新サービス: AWS WAF

re:Invent 2015 (SEC323) New: Securing Web Applications with AWS WAF

AWS WAF Developer Guide

Developers.IO関連エントリ

[新機能]AWS WAFがリリースされました!#reinvent

(レポート)SEC323: AWS WAFを使ってウェブアプリケーションをセキュアに #reinvent

AWS WAFのAPI一覧 #reinvent

AWS WAFのサービス制限について

さいごに

読んで頂いた方に朗報です。2015/12/9のAWS Black Belt Tech Webinarで、AWS WAFが説明されます。 さらに、理解しやすい解説があると思いますし、その後に公開される資料にも注目しています。

以上、AWS サービス別 再入門アドベントカレンダー 6日目のエントリ『Amazon WAF』編でした。

今回の記事をきっかけに AWS WAF について少しでも興味を持っていただけると幸いです。またセキュリティベンダーとAWS WAFの組み合わせで、セキュアなサービス構築ができるようになることを期待しています。

明日(12/07)は大栗の「RDS編」です。お楽しみに!