前書き

「ほとんどのDDoS攻撃は米国のアマゾンから」——アカマイの最新セキュリティレポート | ビジネスネットワーク.jp

日本に対する DDoS 攻撃の発信源の大手は米国のアマゾンとのこと.おそらく AWS の米国リージョンと思われる.

Android/iOS アプリをクライアントとするゲームサービスにおいて,パブリッククラウドプラットフォームの IP アドレスを WAF のブラックリストに登録すれば平和になると思われる.通常のゲームプレイでクラウドからのアクセスは考えられないためである.クラウド経由のアクセスは,プロキシを使っているかあるいは不正アクセスのどちらかと考えられる.

AWS

AWS IP アドレスの範囲 - アマゾン ウェブ サービス

JSON で提供されている.

curl -O 'https://ip-ranges.amazonaws.com/ip-ranges.json'
cat ip-ranges.json | jq -r '.prefixes | .[].ip_prefix'

GCP

Compute Engine の IP 範囲はどこで確認できますか? | Google Compute Engine のよくある質問 | Compute Engine ドキュメント | Google Cloud

SPF レコードを元に解決する必要があるので少々手間がかかる.

require "resolv"

txt_record = Resolv::DNS.new.getresources("_cloud-netblocks.googleusercontent.com", Resolv::DNS::Resource::IN::TXT).first
domain_list = txt_record.data.split("\s")
domain_list.select! {|record| record.start_with?("include:") }
domain_list.each {|domain| domain.gsub!(/include:/, "") }
ip_range = []
domain_list.each do |domain|
  txt = Resolv::DNS.new.getresources(domain, Resolv::DNS::Resource::IN::TXT).first
  ip_list = txt.data.split("\s")
  ip_list.select! {|record| record.start_with?("ip4:") }
  ip_list.each {|domain| domain.gsub!(/ip4:/, "") }
  ip_range.push(*ip_list)
end

puts ip_range