世界を動かす技術を、日本語で。

HNに聞く: AWSボットが月に20億リクエストを送るのをどう止めるか?

2025年10月17日

概要

  • AWS Singapore 経由の “Mozilla/5.0 (compatible; crawler)” ボットによる大量リクエスト問題
  • CloudFlare WAF で一時的に対処中
  • AWSサポート からは実質的な対応なし
  • 4XX/30Xレスポンス も効果なし
  • 同様の経験 や追加対策案を求める内容

AWS経由ボットによる大量リクエスト問題と対処例

  • AWS Singapore 発の “Mozilla/5.0 (compatible; crawler)” ボットによる1秒間に700件超のリクエスト被害
  • CloudFlare WAF ルールと HTTP 444レスポンス でトラフィックを遮断し、アウトバウンド通信を抑制
  • AWSへの通報 後、「顧客と連携したが追加対応不要」とのテンプレート回答のみ
  • 4XX系レスポンス30Xリダイレクト も無効
  • CloudFlare契約見直し が必要なレベルのトラフィック量
  • アクセス解析やログ確認 の妨げとなるノイズ
  • リダイレクトによるAWS Abuseページ転送 も、規模的にDDoS誘発リスクあり

他の被害報告・経験共有の呼びかけ

  • 同様のAWS経由ボット被害 経験者の有無を確認
  • 追加対策案実効性の高い対応策 の共有を希望

考えうる追加対策案

  • CloudFlare Rate Limiting 機能の活用
    • 特定User-AgentやIPレンジに対するアクセス制限
  • AWS IPレンジのブラックリスト化
    • AWS公式のIPリストを定期取得し、WAFなどでブロック
  • CloudFlare Bot Management の導入検討
    • 高度なボット検知・遮断機能
  • ログフィルタリング・分析強化
    • Bot由来トラフィックを除外したレポート生成
  • AWS Abuseチームへの再度の詳細報告
    • 被害状況や影響範囲、証拠ログの明示
  • 法的・契約的なアプローチ
    • 弁護士相談や公式文書での申し入れ

注意点と倫理的配慮

  • 攻撃元へのリダイレクト は新たなDDoSやAbuseと見なされる恐れ
  • 報復的な対応 は避け、あくまで防御的・合法的な範囲で対応推奨

Hackerたちの意見

AWSシンガポールから正当なトラフィックを受け取ってる、または受け取る予定はある?もしないなら、全体をブラックホールにしちゃえば?

そうだね。WAFを設定して、パケットをそのまま捨てるようにすればいいと思うよ。レスポンスのオーバーヘッドも気にしなくて済むし。CloudflareのWAFではこれを「ブロック」って呼んでるみたい。

うん、これをしばらくやってたよ。TikTokのバイトダンス/バイトスパイダーボットが、私のサイトから何百万もの画像リクエストを送ってきてたんだ。何度も何度も止まらなかった。最終的にはCloudinaryに頼んで、関連するユーザーエージェントを全部ブロックしてもらったし、最初はシンガポールを完全にブロックしたよ。これらのAIスクレイピング会社のボットは本当にひどい!もし優しいCloudinaryを使ってなかったら、すごく高いホスティング料金に悩まされてたかも。今はCloudflareで全てのAIボットをブロックして、もう終わりにしてるよ!

これがIPアドレスの範囲だよー - https://docs.aws.amazon.com/vpc/latest/userguide/aws-ip-work...

明らかに悪用してるボットを高コストにするのも一つの手だね。終端サーバーをコントロールできるなら。gzipボムはボットが脆弱だったら効果的だけど、接続速度を遅くするだけでも十分なことが多いよ。404で応答する前に10秒待つだけで、彼らのサーバーで約7,000ポートを消費するから、ほとんどのLinuxプロセスをクラッシュさせるには十分だね(nginx + mod-http-echoを使うのが簡単だよ)。

同じような考えで、PoWチェックのanubis[1]がOPにも効くかもしれないね。 [1] https://github.com/TecharoHQ/anubis

この種の考え方は、ボットが非ステルスであることを前提にしてるね。

AWSの顧客はアウトバウンドトラフィックにお金を払わなきゃいけないんだよね。彼らに(またはCloudflareに)大量のトラフィックを送らせる方法はあるのかな?

いいアイデアだね!同じようなニーズで実装してる人もいるみたいだし(ソースコードのユーザーエージェントリストを見てみて)。実装は簡単そうだね。 https://github.com/0x48piraj/gz-bomb/blob/master/gz-bomb-ser...

同じような状況に直面したことがあるよ。考えたのは、悪いデータを与えることだった。うちの場合、彼らが価格データを得るためにサイトをスクレイピングしているのは明らかだった。マスターカタログには数百万のSKUがあって、在庫状況や顧客契約、その他の要因に基づいて動的に価格が設定されてたんだ。それに、関連するクロスセルや代替選択肢のおすすめを商品ページに追加して、ちょっとでも価値を加えようとしてた。これって計算リソースをかなり使うし、スクレイピングの量が多すぎると、時にはDoS攻撃みたいになっちゃうこともあった。リクエストのバーストで埋もれちゃって、インフラが新しい仮想サーバーを立ち上げられないくらいの速さだったんだ。埋もれちゃうと、その負荷から抜け出すのが難しかった。そんな時期にたくさんのことを学んだよ。特に、キューイングや優先順位付けのアプローチが、見た目は良さそうでも、実際には意図しない悪影響を及ぼすことがあるってこと。話し合った戦略の一つは、悪者をブロックするんじゃなくて、来るトラフィックにタグを付けるってことだった。完璧な精度ではできなかったけど、少なくとも実際の顧客には影響を与えないようにできた(ログインしているユーザーなら常にわかるからね)。境界線のケースではデータをキャッシュして、再計算しなくて済むようにできることに気づいたんだ(攻撃してきたのは特にバカなボットで、同じものを何度もリクエストしてきたから)。そこから、データにランダムなファッジファクターを加えることで、攻撃者にとってデータが役に立たない状態にできるかもしれないって考えた。結局、OPが今やっていること、CloudFlareと連携して「攻撃」をできるだけ早く特定して対処することをするようになった。でも、開発者の時間やCFへの支払い、顧客の不満を考えると、かなりのコストがかかったのは間違いない。ちなみに、これがさらにイライラしたのは、攻撃者がうちの競合の契約したサービスだという状況証拠があったから。もし彼らが直接うちに来て話してくれていたら、APIを通じてカタログデータを簡単に取得できるようにして、無駄な計算をしなくて済むようにできたのに。もちろん、彼らは絶対にうちには来ないし、聞かれても認めないだろうから、どうしようもなかった。そんなことがあった時、ここHNで何度も話題に上がった裁判もあった。公的なサイトへのアクセスをブロックするかどうかの問題で、ここでのコンセンサスは「ウェブにサイトを持つなら、リクエストに対応できるようにするのは自分の責任。DoSレベルのトラフィックに耐えられないなら、デザインが悪いのが原因だ」って感じだった。だから、今の態度の変化を見るのは面白いね。

バカな質問だけど、それって自分のボックスのポートも7000個消費しちゃうんじゃないの?

私の個人サイトでも同じ問題があったよ。7、8年前に書いてたブログなんだけど、突然アナリティクスで異常なトラフィックのスパイクが見えたんだ。どこかの記事がバイラルになったのかと思ったけど、あまりにもロボット的で信じられなかった。で、開発者が私のサイトでボットやクローラーをテストしてることに気づいたんだ。何度も何度も優しく頼んでみたけど、全然ダメだった。最終的には、リダイレクトルールを設定して、ランダムなポルノサイトに送るようにしたら、実際に止まったよ。

Hacker Newsで議論の続きを見る