「AWS WAF」でWEBサイトのセキュリティを保護

Webサイト向けのセキュリティ対策には「Web Application Firewall(WAF)」というサービスがあります。これは、クロスサイトスクリプティングやSQLインジェクションなど、Webのアクセス(HTTPまたはHTTPS通信)に特化したセキュリティの脅威からシステムを保護します。

他のセキュリティ系サービス、例えばセキュリティグループとの違いは、防御対象となるレイヤです。

  • ネットワーク:セキュリティグループ
  • OS/ミドルウェア:IDS/IPS
  • Webアプリケーション:WAF

この記事では、Amazon Web Services(以下、AWS)が提供するWAFサービス、「AWS WAF」について詳しく説明します。

AWS WAFとは、その名の通り、Amazon Web Services (AWS)が提供するウェブ アプリケーション ファイアウォール (WAF)のサービスです。

AWS WAFのメリット/デメリット

AWS WAFを利用することにより、以下のようなメリットがあります。

  • AWSサービスと簡単に連携できます
  • WAFの基盤をAWSが管理してくれるため、拡張性を気にする必要がありません
  • 従量課金制なので、コストパフォーマンス良く利用できます
  • AWSが公式に用意しているマネージドルール(AWS Managed Rules for AWS WAF)の利用が可能
  • セキュリティベンダー提供のマネージドルール(セット)が利用可能です

これらのメリットを活かしながら、運用中のアクセス状況に合わせてルールをチューニングすることで、セキュアなウェブアプリケーションの構築が可能です。

AWS WAFの設定箇所

AWS WAFの設定箇所

次に連携可能なAWSサービスについて紹介します。「AWS WAF」は、WEBアプリケーションに関連する、3つのサービスへデプロイが可能です。自社の構成に応じて設定していきましょう。

■Amazon CloudFront
CDNサービスである、CloudFrontへ設定します。ユーザーからアクセスされるすべてのリクエストが防御対象となります。

■Application Load Balancer(ALB)
CloudFrontを利用しない場合は、ALBにも適用が可能です。

CloudFrontと併用する場合は、ALBにAWS WAFを適用することで、WAFを経由するリクエスト数を減らすことができます。ただし、接続元のIPアドレスをもとに攻撃をブロックするため、利用時には注意が必要です。

また、CloudFrontのキャッシュヒットが原因で、レートベースのルールが意図しない動作になる可能性もあります。

■Amazon API Gateway
APIを作成する場合に活用可能な、API gateway上にも設定が可能です。

ルールの設定

では「AWS WAF」は、悪意のあるアクセスとそうでないアクセスをどのように見分けているのでしょうか?それは、WebACL(Web Access Control List)に設定されたルールをもとに判断しています。

WebACLは、各種AWSサービスに連携する単位で、WebACLの中に複数のルールを設定することになります。ルールは最大10個まで設定が可能で、いくつか種類があります。

ルールはゼロから作成するのではなく、あらかじめ用意されたものから選ぶことが可能です。
マネージドルールには、AWSが標準で用意しているものと、AWS以外のベンダーが用意しているものがあります。利用用途に適したルールを選択して利用します。

また、ホワイトリスト登録もできるので、管理者や関係者からのアクセスはホワイトリスト登録しておく事も可能です。

対応可能な攻撃内容

対策可能な攻撃

「AWS WAF」で防ぐことができる主要な攻撃をいくつか紹介します。

■SQLインジェクション
SQLインジェクションは、データベースを操作するSQL文をWEBリクエストに含めることで、意図しないSQL実行を行います。通常アプリケーションで対策が可能ですが、対策できていないとデータの削除や非公開データの閲覧、改ざんなどの被害を引き起こします。

■ブルートフォースアタック
ログイン機能があるサイトで、ユーザーとパスワードの組み合わせを総当たりで試し、不正ログインを試みる攻撃をブルートフォースアタックといいます。不正ログインが成立してしまうと、個人情報の漏洩や金銭的な被害、Webサイト改ざん、攻撃の踏み台などに悪用される可能性があります。

■クロスサイトスクリプティング(XSS)
クロスサイトスクリプティングは、攻撃者が不正なスクリプトを信頼性のあるウェブサイトに注入し、他のユーザーのブラウザでそのスクリプトを実行することで発生します。

AWS WAFの料金は、以下の要素によって決定されます:

  • WebACLの数
  • 利用するルールの数
  • リクエストの数

具体的なコストの計算式は次のような仕組みになっています。

WebACLの料金 (5.00 USD/月/WebACL) + ルールの利用料金 (1.00 USD/月/ルール) + リクエスト数 (0.60 USD/100万アクセス)

リクエスト数はページビュー(PV)数とは異なるため、注意が必要です。Google Analytics (GA) などのツールではなく、アクセスログ件数などから算出する必要があります。

AWS WAFを利用する際の推奨される手順は以下の通りです:

  • 1.AWS WAFの構築
    2.カウントモードでのテスト運用
    3.ブロックモードでの本番運用

まずは、AWSアカウントへログインを行い、AWS WAFの構築を行います。その後、運用モードをカウントモードまたはブロックモードのどちらかで動作させることが必要です。

誤検知の可能性があるため、初めての運用ではカウントモードで行うことが推奨されます。カウントモードでは、WAFのチェックのみが有効になり、アクセスのブロックは行われません。最初の1か月程度は様子を見て、ログから誤検知が起こっていないことを確認します。もし誤検知があれば、ルールの調整を行う必要があります。

調整が完了したら、ブロックモードに切り替えて本番運用を開始します。

AWS WAFの運用フェーズに移行すると、次のような要素について継続的な管理が必要となります。いずれも専門的な知識をもったエンジニアの継続的な確保が必要になります。

異常トラフィックの検出と対策

AWS WAFのログは定期的に収集・監視し、異常なトラフィックパターンを検出します。異常を発見した場合は、対応するルールを作成または更新します。悪意のある攻撃者やBOTなど、特定のIPアドレスからの攻撃をブロックすることも可能です。

たとえば、サーバーが高負荷によってアクセス不能になってしまったときなど、ログ等から高負荷の原因を調査します。明らかに通常ではない攻撃性のアクセスが特定のIPアドレスがからあった場合は、そのIPをブロックする設定を行います。IPアドレスが不特定多数になる場合は、レートベースの制限設定を入れることができます。たとえば、5分間で100以上のアクセスがあった場合は、ブロックする等の設定が可能です。最適な数値に関しては、ウェブサイトによって変わってくるので運用状況を踏まえて設定することが重要です。

セキュリティルールの維持と更新

すべてのルールは定期的に見直し、不要となったルールは削除、新たに必要となったルールを追加します。また、既存のルールが最新のセキュリティ状況に適応しているかの確認も必要です。

新たなセキュリティ脅威への対応

セキュリティ脅威インテリジェンスは定期的に確認し、新しい攻撃ベクトルや脅威を特定します。その後、それらに対応する新しいルールを作成し、AWS WAFに適用します。

Cloudbric WMSやWAFCharmなど、WAFの自動運用をサポートするツールも存在します。WAFの運用業務をクラウド化するこれらのツールを利用することで、最新の脅威情報に基づいた自動ルール更新や適用範囲の自動調整など、運用に必要なプロセスを大幅に簡素化することが可能です。自社で運用しようとすると、高度な専門知識を持った人材が必要になるため、リソース不足の企業は検討してみるとよいでしょう。

項目自社運用自動運用ツール
管理の労力手動でルールを管理する自動化されている
専門知識セキュリティの専門知識が必要不必要
最新の脅威への対応手動で追跡しルールを更新自動的に更新
カスタマイズ細かなカスタマイズが可能一部制限がある場合もある

なお、ディーネットでは月々43,000円から始められる、コストパフォーマンスに優れたAWS WAFの自動運用ツールの「Cloudbric WMS」の取り扱いをしております。ご興味ある方はお気軽にお問い合わせ、ご相談ください。

「AWS WAF」を利用することで、ウェブアクセスの脆弱性対策を実施することが可能となります。

開発時のアプリケーションの設計と実装で防げる攻撃も多くありますが、その中でも対策の抜け漏れや新たに発生する脆弱性に対するリスクを軽減することができます。ただし、AWS WAFの導入だけで終わりではなく、導入後の運用フェーズでの対策と維持も重要となります。そのため、それらを考慮した利用が必要となるでしょう。

おすすめのサービス

WAF自動運用(Cloudbric WMS)