Techouse Developers Blog

テックハウス開発者ブログ|マルチプロダクト型スタートアップ|エンジニアによる技術情報を発信|SaaS、求人プラットフォーム、DX推進

Application Load Balancer (ALB) への謎の大量アクセス攻撃

ogp

はじめに

こんにちは、Techouse の人材プラットフォーム事業部でサーバーサイドエンジニアを担当している imayayoh と申します。

Techouse では各事業部でエンジニアがインフラの監視として、AWS・外部サービス等のグラフモニタリングを実施しています。モニタリングでは下記に重点を置いており、インフラ構成の見直しや障害対応の場として活用しています。

  • サービス運用に十分なスペックでインフラが構成されているか
  • 最適なコストでサービスが運用されているか
  • インフラ・外部サービスで重大な問題が発生していないか

本日はモニタリングの実施で即時対応できたトラブルの一例として、Application Load Balancer (ALB) への謎の大量アクセス攻撃を紹介します。

コストモニタリング

弊社のサービスではインフラに AWS を使用しており、モニタリングでは AWS Billing and Cost Management で AWS のコストをモニタリングしています。

AWS Billing and Cost Management の概要

AWS Billing and Cost Management は AWS サービスのコストに関する情報を確認するのに適したウェブサービスであり、下記の特徴を持っています。 altテキスト

  • コストをグラフによって可視化
    サービス個別のコストをグラフにより可視化できます。個別・積算の棒グラフや折れ線グラフ表示の選択ができ、期間内の総コスト/平均コストも算出されます。
  • コストの内訳
    トータルコスト・期間別コストを確認できます。後述のフィルタリングによりサービス別などのより細かい内訳を表示できます。
  • フィルタリング機能
    期間・サービス・インスタンスなどの条件でフィルタリングを適用し、より細かいコスト内訳を確認できます。

フィルタリングした結果を Save できますので、よく見るグラフは Save しておくと便利です。

突然の ALB コスト増加!?

2024/04/01 のモニタリングにて AWS Billing and Cost Management の先週の全体コストを確認したところ、2024/03/29 からコストが2倍以上に跳ね上がっていました。グラフからコスト上昇の原因が ALB にあることが確認できます。
altテキスト

さらに詳しく確認するために、フィルタ対象サービスを ALB のみに絞り込んでいきます。
すると、稼働している6個の ALB の内で driver-nativeapp-api-alb-ecs-prd という名前のインスタンスだけが異常に使用量が上昇していることが確認できます。
altテキスト

原因調査1

直近のリリースで ALB に大きな影響を与えるような変更は無く「ALB の使用量の増加 = Request Count の増加」と考え、ALB / CloudFront の Request Count のグラフを確認しました。ですが、平時のトラフィック量から大きな変化は無く、Request Count の増加が原因ではないことが確認できます。

Application Load Balancing > Request Count altテキスト CloudFront > Request Count altテキスト

他に原因特定の材料となる情報がなかったため ALB 関連のグラフを一通り確認したところ、異常を起こしているグラフがありました。ALB のコスト増加と同日の 2024/03/29 から、Application Load Balancing > New Connection の値が異常に増加していることが確認できました。

Application Load Balancing > New Connection altテキスト

今の状況を整理すると、「ALB・CloudFront の Requests は増加していないのに ALB の New Connection だけが異常に増加している」 といった現象が ALB で起きているということが分かります。

altテキスト

原因調査2

原因調査1の調査結果を元に調査を進めていきます。
弊社では AWS Security Hub というサービスを使用しています。そのチェック結果に基づいて、 VPC Flow Logs 等の必要な log がすぐに活用できる環境を整えてありました。
そのため、すぐに VPC Flow Logs を用いて分析にとりかかりました。

AWS Security Hubの概要

AWS Security Hub は「AWS リソースのセキュリティ設定がベストプラクティスから逸脱していないか」を自動でチェックするサービスであり、以下のような特徴を持っています。

  • セキュリティチェック
    AWS のベストプラクティスと業界標準に基づき、セキュリティチェックを自動的に実行します。さらにチェック結果をスコア化して表示してくれるため、セキュリティ対応の優先度付けに有用です。
  • 一元管理
    統合された AWS のサービスおよび AWS パートナー製品からセキュリティ結果を収集してくれるため、全体を横断したインシデントの確認が容易にできるようなっています。

問題が発生している期間内の VPC Flow Logs の行数を調査した結果、「特定の Availability Zone の ALB の IP アドレスにだけ大量の TCP Connection が送りつけられている」 ということが分かりました。

altテキスト

今回問題が発生した Availability Zone の IP アドレスに対して常に TCP Connection が送りつけられる状態が続いており、その IP アドレス が弊社で利用している ALB に割り振られたことによって突発的な ALB のコスト増加の要因になったと考えられます。

解決策

発信元の IP アドレスは分かっているので Security Group ないし Network ACL で遮断しようと考えましたが、対象のアドレスが多すぎて現実的ではありません。

そこでマネージドプレフィックスリストを利用し、CloudFront 以外からの接続をすべて拒否するように設定することで解決しました。 altテキスト

不必要な TCP Connection が大幅に減り、スッキリです!

CloudFront マネージドプレフィックスリストは2022年2月のアップデートで追加された機能ですが、ALB に直接アクセスしてテストしたいときもありましたので、これまで利用してきませんでした。今回の攻撃?を受けて、ようやくその必要性を強く実感するに到りました。 CloudFront と ALB を利用されている皆さまにおかれましても、同様に設定されることを強くおすすめします!

さいごに

定期的なモニタリング実施やAWS Security Hub を利用したセキュリティ面の整備により、迅速な問題発見・解決へと繋がった事例でした。特にモニタリングではコスト面の監視において適切なコスト運用ができているかだけでなく、障害調査のきっかけとしても機能したため、重要な非機能要件のひとつとして監視を続けていく必要があると痛感しました。今回の事例はレアなケースではあるかと思いますが、お役立ていただければ幸いです。


Techouseでは、社会課題の解決に一緒に取り組むエンジニアを募集しております。 ご応募お待ちしております。

jp.techouse.com