公開日:2025年2月19日最終更新日:
サイバー攻撃が増加している今の時代、Webアプリケーションを攻撃から守るために「WAF」が重要視されています。すべての攻撃を防げるわけではありませんが、もはや必須ともいえる技術です。そのような状況を鑑みて、AWSではAWS WAFと呼ばれるサービスが提供されています。
非常に重要なサービスではあるものの、その詳細や使いこなし方が理解できていない人が多いでしょう。今回は基本知識から最新のアップデート、そして具体的にどのような使い方をすればよいのかについてそれぞれ解説します。
目次 <Contents>
そもそもWAFとは
WAFは「Web Application Firewall」の頭文字を取ったもので、WebサイトやWebサーバなどへのサイバー攻撃を防ぐ手段です。アプリケーションレベルで通信の中身を分析し、事前に定義された条件にマッチする通信を検知したり遮断したりします。セキュリティを向上させるために、導入するツールはいくつもありますが、WAFはIDSやIPSなどで検知できない部分の保護を担っています。複数のセキュリティ対策には、それぞれ役割があり、WAFだけで全てのサイバー攻撃を防げるというわけではありません。
AWS WAFとは
AWS WAFはAWSが提供するセキュリティサービスの一種です。Webサービスに対する攻撃を防ぐ手段として活用されます。ただ、サーバ(EC2やRDSなど)に対して設定するものではなく、Amazon CloudFront、Application Load Balancer (ALB) 上で動作することがポイントです。
クラウド型のWAFサービスであるため、サーバなどの「WAFを稼働させるためのインフラ」を意識する必要はありません。AWSが基本的な運用を担ってくれるため、ユーザは自分たちが運用するネットワークへ紐づけることで、簡単に利用を開始できます。
AWS WAFのメリット
AWS WAFにはどのようなメリットがあるかについて解説します。
Webアプリケーションへの攻撃を防御できる
AWS WAFの中でも特に重要な機能は、Webアプリケーションへの攻撃を防御できることです。Webに接続されていることからさまざまな脆弱性を抱えるため、これをAWS WAFで防ぐようにします。例えば、クロスサイトスクリプトティングや、SQLインジェクションなどの攻撃を防御することが可能です。
また、事前にルールを作成し、これに基づいた防御を実現してくれます。標準のルールはもちろん、カスタムルールにも対応しているため「必要な通信も遮断してしまった」ということを回避しやすいのです。部分的に専門的な知識は必要となりますが、セキュリティを大きく高められます。
簡単に導入できる
クラウドサービスであるため、簡単に導入できることがメリットです。従来のWAFは専用のハードウェアやソフトウェアを準備する必要がありました。また、それらをネットワークに接続する手間も生じましたがAWS WAFならば、一切の手間はありません。Amazon CloudFront、Application Load Balancer(ALB)やAmazon API Gatewayなどのサービスに紐付けることによって、簡単にその機能を有効化できます。
コストを管理しやすい
AWS WAFは基本的に従量課金制であるため、コストを管理しやすいことがメリットです。想定されるアクセス数からどのデータのコストが発生するかを事前に計算できます。ランニングコストが中心となるため、どの部分でどの程度のコストが発生するか必ず確認しておきましょう。
なお、サードパーティが提供するルールなど導入時にコストがかかるものが含まれます。これらの利用を考えている場合は、見積もりツールを利用して発生しうるコストを把握してください。
AWS WAFを導入する流れ
具体的に、AWS WAFを導入する際の流れについて解説します。
Web ACLの作成
最初にWeb ACL(Access Control List)を作成します。WAF & Shieldのコンソールを開き「WAF & Shield」をクリックします。

続いて、リソースタイプや作成するリージョン、識別のための名称などを入力してください。

入力後は、WAFと紐づけするAWSのリソースを選択します。

今回はサンプルとして「Application Load Balancer」からリソースを選択します。選択が完了したあとは、「Next」をクリックしてください。

続いて、WAFへ設定する具体的なルールを設定します。基本的には「Rule」を設定していきましょう。「Add rules」をクリックします。今回はAWSが提供するマネージドルールを利用します。
いくつものルールが準備されているため、これらの中から要件に適したものを選択してください。

今回は、サンプルであるため、おすすめのルールを選択しました。

なお、ルールによっては「Edit」をクリックし、詳細な設定を続けなければなりません。「Edit to provide required configuration」と表示されている場合は必須であるため、必ず作業が必要です。

ルールを設定すると、画像のとおりルールが追加されます。設定後「Next」をクリックします。

確認画面が表示されるため、こちらも「Next」をクリックします。

他にも、メトリクスの設定画面が表示されます。標準の値でも差し支えありませんが、希望がある場合は変更してください。

最終確認画面が表示されるため、ページ下部の「Create web ACL」をクリックします

Web ACLの管理
作成が完了したWeb ACLは、コンソールから確認・管理ができます。今回はひとつだけの作成ですが、複数のWeb ACLがある場合はすべてが表示される仕組みです。

名称をクリックすると、ACLの内容が確認できるため、もしルールの変更などが発生した場合は、ここから修正するようにしましょう。

Web ACLの動作
WAFが適切に動作しているかどうかは、画像の「All traffic」を確認することで把握が可能です。今回はテスト用であるためゼロが表示されていますが、アクセスが増えてくると反映されると考えましょう。なお、初回の設定時は反映まで24時間程度が必要となるため、その点は注意が必要です。

CloudWatch logsとの連携
AWS WAFがバージョンアップされ、CloudWatch logsと簡単に連携できるようになりました。標準では有効化されていないため、有効化しておくことをおすすめします。

連携内容と連携先を確認し「Save」をクリックしておきましょう。

AWS WAFを導入する際のポイント
AWS WAFを導入する際にはポイントがあるため、どこを意識すればよいかについても解説します。
セキュリティ要件を洗い出す
事前にセキュリティ要件を洗い出しておくことが重要です。セキュリティを高めるとはいっても幅広い観点があるため、要件が決まらなければ、適切な設定ができません。
例えば、海外からの通信を遮断するという要件が考えられるでしょう。これはAWS WAFで設定する必要があるため、適切に設計しなければなりません。一例ですが、多くのセキュリティ対策ができるからこそ、何を設定するかを明確にすることが重要です。
他のセキュリティサービスも活用する
セキュリティを向上させるサービスではあるものの、全てを網羅できるわけではありません。AWSには複数のセキュリティサービスが存在するため、それらと組み合わせて利用することを考えましょう。
例えば、AWSにはAmazon GuardDutyやAmazon Inspectorが存在します。AWS WAFとは役割が異なるため、それぞれ利用を検討しなければなりません。
マネージドルールが十分とは限らない
今回紹介したとおり、AWS WAFはマネージドルールを提供しています。これを採用することで、専門的な知識がなくてもWAFの導入が可能です。ただ、マネージドルールはあくまでも汎用的な制御であるため、カスタマイズすることも意識してください。
例えば、マネージドルールだけでは、必要な通信も遮断してしまうことが考えられます。特殊な要件がある場合、一部の通信が悪質なものであると判断されてしまうのです。
とはいえ、ルールをカスタマイズしたりサードパーティの製品を導入したりすることは、専門的な知識が必要で難易度が高いでしょう。専門家の支援を受けて設定することが望ましいと考えられます。
コストを意識して設計する
事前にコストを把握できるためこれを意識した設計を心がけなければなりません。セキュリティ要件に沿って、機能を次々に追加していくと、少しの通信で大きな課金額となってしまいます。セキュリティを高めることが重要ですが予算との兼ね合いも意識すべきです。
コストを考慮する際は、予算と想定されるアクセス数をできるだけ明確にしましょう。AWS WAFは課金制であることから、接続数が不明瞭であるとコストを把握できなくなってしまいます。
なお、ルールの優先順位を変動させることで、AWS WAFが処理する通信の数を制御することが可能です。場合によってはこのような手法を検討してみるとよいでしょう。
まとめ
AWSが提供するWAFサービスであるAWS WAFを解説しました。Webアプリケーションのセキュリティを担保するため非常に重要なサービスであり、導入していないならば、この機会に有効化してみましょう。セキュリティ関連のサービスであり部分的に専門知識が求められますが、まずはマネージドルールを有効化するだけでも十分です。
ただ、本格的にセキュリティを高めたいと考えているならば、詳細な仕組みを正しく理解しなければなりません。実際に使いながらカスタマイズする部分もあるため、まずは導入して内容を確かめてみましょう。