こんにちは、梅原です。re:Invent2024に参加してきました。
が、帰ってきてから思いっきり体調を崩しました。
帰国してから1週間後に39度の熱が出て、さらその1週間後38度の熱が出ました。
忘年会やライブなど、軒並み体調不良で参加できませんでした。悲しいです。
今後re:Inventに参加される皆さんは体調管理だけは抜かりなくしておくことをオススメします。
あとは熱が引いても油断しないことです。
さて話を戻して、本ブログはre:Inventで参加した「DDoS攻撃への対策できていますか?」というブレイクアウトセッションについてのセッションレポートです。
受講したセッションは、DDoS攻撃の影響を緩和するために、AWSでどのような構成にするとよいかという内容でした。
DDoS攻撃とは?
DDoS攻撃とは、大量のIPアドレスからパブリックなエンドポイントに対して、大量にリクエストを送信する攻撃です。
攻撃を受けるとアプリケーションに処理遅延が発生してレイテンシが増加したり、500番台エラーが増加したり、最悪の場合はアプリケーションがダウンしたりと、正規ユーザへの影響が発生してしまいます。
最近のDDoS攻撃では、L3やL4のネットワークレイヤよりL7のアプリケーションレイヤの攻撃が増加しています。
ベストプラクティス構成の紹介
それでは早速、DDoS攻撃の影響を緩和させるためのベストプラクティス構成の紹介です。
こちらがベストプラクティスの構成図となります。
AWSに限らずですが、セキュリティで重要な考え方は多層防御です。特別なサービスを使わなくとも多層化させることでセキュリティを向上させることができます。
これから、構成図に出てくるサービスについて見ていきましょう。
なお、AWSを使う上での大前提である以下の観点は省略します。
- 可用性100%のRoute53を使用して、名前解決サービスの可用性を担保する
- アプリケーションが動作するサーバはAuto Scalingを使用して、アプリケーションの処理性能を向上させる
- アプリケーションでELBによる負荷分散をさせ、特定サーバに負荷がかからないようにする
Amazon CloudFrontの利用
コンテンツの配信にはCloudFrontを利用しましょう。CloudFrontはエッジロケーションからキャッシュしたコンテンツを配信することができるCDNサービスです。 キャッシュを使ってレスポンスを返すことができるので、たとえキャッシュのTTLが短くとも、アプリケーションの処理負荷軽減に繋がります。
また、エラーコードもキャッシュすることができるので、実際にDDoS攻撃を受けている状況においても、アプリケーションの処理負荷を下げることができます。
DDoSの内容からは少し逸れますが、オリジン保護の方法として新しく発表されたVPCオリジン機能についても触れられていました。
VPCオリジン機能は、CloudFrontのオリジンに「プライベートサブネット」のALB、NLBやEC2インスタンスを直接繋げる事ができるようになった機能です。パブリックなエンドポイントをなくすことができるのでよりセキュリティを強化することができます。
AWS WAFの利用
続いてはAWS WAFです。 柔軟にリクエストをブロックできるWAFを利用しましょう。WAFはL7のアプリケーションレイヤを保護するためのファイアウォールです。httpdメソッドやパス、UserAgentなどHTTPリクエストの中身を見てブロックできます。
WAFでブロック設定するときは、事前にログから悪意あるユーザのリクエストのパターンを把握した後、カウントモードで実際にどのくらいのリクエストをブロックできるかを検証することが必要です。DDoS攻撃にパターン性があれば一括でブロックできます。
DDoS攻撃への対策としては、レートベースでのブロックが有効です。「X分間でY回以上リクエストするIPアドレス」をブロックできるので、DDoS攻撃が来ている状況でしきい値以上のリクエストはブロックでき、DDoS攻撃の対策として非常に有効です。
またWAFでもCloudFrontでも設定可能な機能として、地理的制限機能があります。 特定の地域からのリクエストをブロックできる機能です。アプリケーションの利用が想定されない国はリクエストが届かないようにしておきましょう。 両サービスで設定可能ですが、WAFに寄せるようにしましょう。 11月に発表されたアップデートで、WAFでブロックされたリクエストはCloudFrontのリクエスト料金やデータ転送料金がかからなくなりました。加えて、WAFのほうがより詳細にブロックもできるので、地理的制限はWAF側を利用するようにしましょう。
AWS Shieldの利用
AWS ShieldにはStandardとAdvancedの2種類あります。 Shield Standardはインターネットに面したAWSリソースに対して、追加料金無しで自動的に保護してくれるサービスです。 ただし、L3とL4のネットワークレイヤを保護するためのサービスなので、L7は保護してくれません。
Shield AdvancedはマネージドなDDoS対策のサービスです。AWS Shieldチーム(SRT)が24/265で付いてくれます。 またSRTがWAFルールもカスタマイズしてくれるので、L7に対する保護も可能です。 月額3000$で1年間縛りの契約となります。
最後に
このセッションを受講して、ELBやAuto Scalingでアプリケーションの処理性能を上げつつ、悪意あるユーザからのリクエストをブロックしてアプリケーションの負荷を軽減させることが重要だと感じました。正規ユーザからのリクエストは処理させたいので、サービスがダウンすることは一番避けたいことです。そのためにも処理する必要がないリクエストはアプリケーションより前段でブロックしてしまいましょう。
セッションでは、サービスの話だけではなく以下についての話もありました。
- AWS Shieldによる保護の詳細動作
- DDoS攻撃最中のチーム体制
- インシデント報告のための行動ログ(CloudTrail)や攻撃状況の把握(CloudWatch)の重要性
- どのような基準でインシデント終了とするか
re:InventのブレイクアウトセッションはYouTubeで公開されてるので気になる方はぜひ見てみてください。
またAWS公式で、DDoS対策のベストプラクティスのホワイトペーパーも出ています。これだけでも参考になるので読んでみてください。
以上参考になれば幸いです。
一番伝えたかったことは、「re:Inventに参加するときは体調管理を怠るな」ということです。
ありがとうございました。