Cloudflareがウェブサイトを完全に保護するとは限らない (1)

最近では日本国内でも導入しているサイトを多く見かけるようになった、CDNサービス大手の「Cloudflare」ですが、CDNだけでなくWAF、さらにはDDoS対策の機能も備わっていながら無料で使えるということで、人気を博しています。

そんなCloudflareを、DDoS攻撃や通報対策としてサーバーのIPアドレスを隠すために利用する方も少なくないようです。ですが、Cloudflareをそのようなリバースプロキシとして用いることが本当に良い手段なのでしょうか?

今回は「Cloudflareを利用するだけで自分のサイトを攻撃から守ることができるのか」ということについて、実例も交えながら考えてみたいと思います。

なぜCloudflareを導入するのか

そもそもCloudflareを何のために使うのか、その目的を考えてみましょう。

  1. CDN
  2. WAF
  3. レイヤー4/7のDDoS攻撃対策
  4. IPアドレスを隠すため

1. CDN

CDNとしてのCloudflareについては、特にこの記事で書くことはありません。
CloudflareのCDNは無料プランでもとても優秀です。

2. WAF

CloudflareのWAFはSQLインジェクションやその他の怪しい行動を検知して、以下の画像のようにアクセスをブロックします。

その他にも、設定から保護レベルを上げればTorなどIPアドレスからのアクセスに対してはCAPTCHAを要求してロボットを遮断します。

3. レイヤー4/7レベルのDDoS攻撃対策

DDoS攻撃対策としてCloudflareを導入される方も多いようです。
Cloudflareによって大元のサーバーのIPアドレスは隠せるので、レイヤー4レベルのDDoS攻撃を受けることはなくなるのは良いポイントです。

レイヤー7レベルのDDoS攻撃を防ぐCloudflareの機能として「I’m under attack」モードというものがあります。これを有効にすると、サイトにアクセスするにはJavaScriptとCookieを有効にする必要があります。

4. IPアドレスを隠すため

様々なサイトを1つのIPアドレスのサーバーでホストしているとき、それぞれのサイトの管理者が一緒だということを隠しておきたい場合があるかもしれません。そのような用途や、また単純にIPアドレスを隠蔽したいというときにもCloudflareを利用できます。
CloudflareはIPアドレスが頻繁に変化するので、CloudflareのIPから他のサイトとのつながりを特定することもできません。

このように、WAFやDDoS対策、サーバー隠蔽としてとても人気のあるCloudflareです。ところが…

Cloudflareによる保護は破ることができてしまう

Cloudflareによる保護は破られてしまう場合があります。
WAFが効かない、DDoSを防げない、その他にもサーバーのIPアドレスが漏れることで隠蔽したつもりの同サーバー内の他のサイトの存在が知られてしまう恐れがあります。実例をいくつか挙げていきます。

管理者の身元が発覚したサイト

****Wiki(********ウィキ)は、日本の弁護士、****とその依頼人の*****らが引き起こした一連の騒動(通称:ハセカラ騒動)に直接的、間接的に関係ある者たちや団体、サイトなどについてまとめるサイトですを
https://archive.fo/nEXh0

端的に言って誹謗中傷と著作権侵害のサイトとして悪名高いサイトだったこのWikiサイトは、警察の捜査などから逃れるために管理者はその身元を隠す必要 がありましたが、同じサーバーにCloudflareで隠していた別のサイトが存在することがわかり、そこから管理者の身元が明らかになってしまいまし た。

当時はCDN/DDoS対策/通報対策としてCloudflareを利用していたようですが、このサイトと同じサーバーにホストされていた「同 和地区(被差別部落)Wiki 非公式ミラー」というサイトのApacheのサーバーステータスからサーバーのIPアドレスが判明し、さらにそのIPアドレスでホストされていた別の個人ブログから管理者の身元が特定され、事態の発覚を恐れた管理者はサイトを閉鎖して逃亡しました。

「同和地区(被差別部落)Wiki 非公式ミラー」 ( n26ctrxseoly4mnj.onion/server-status ) のApacheのサーバーステータス。「146.0.77.194」という バーチャルホスト=サーバーのIPアドレス が表示されていることがわかる(クリックで拡大)。個人ブログのディレクトリが存在することも判明し管理者の身元特定に至った。

この管理者は、Cloudflareを利用してサーバーのIPアドレスを隠蔽することで個人的なブログとの紐付けはできないと考えて いたのかもしれませんが、このような身元の特定に繋がるケースは非常にまれではあるものの、思わぬところから情報が漏れてしまうこともあるのです。

Cloudflareを導入してもダウンする2ちゃんねる

当時のログが少なく、ほとんど記憶を頼りに記事を書くことしかができませんが、日本最大の匿名掲示板「2ちゃんねる」も度重なるDDoS攻撃対策としてCloudflareを導入したものの、しばらくは攻撃を受け続けサーバーダウンが続きました。その理由は、当時の2ちゃんねるが受けていたDDoS攻撃はレイヤー4レベルの攻撃だったため、Cloudflareを導入したところでサーバーのIPアドレ スは変わらなければ直接攻撃が可能なので攻撃を防ぐことができませんでした。運営がそれに気付くまで2ちゃんねるはダウンしたままでしたが、その後、サー バーのIPアドレスは変更され、攻撃を回避することができました。

このように、Cloudflareがウェブサイトの何から何までを保護してくれるとは限りません。管理者のミスによって保護が無効になることもあるのです。

まずWAFについて言えば、CloudflareのWAFがサイトへの不正なリクエストを守ってくれたとしても大元のサーバーのIPアドレスがわ かってしまえばそのIPアドレスに対し Host: example.com のヘッダを付けてリクエストを送ることでCloudflareのWAFをバイバスできてしまいます。

DDoS攻撃についても同じことが言え、レイヤーのレベルに限らずサーバーのIPアドレスがわかれば保護をすり抜けて攻撃が可能となります。

前述のWikiサイトのような、一つのサーバーに多数のサイトを同居させてそれぞれのサイトの運営者を隠しておきたいケースでも、IPアドレスやその他の手がかりからそれらのつながりが発覚してしまいます。

攻撃者は以下のような方法で大元のサーバーのIPアドレスを探しだそうとします。

  1. DNSから見つける
    一番ありがちなパターンがCloudflareのDNS設定のミスによるIPアドレスの漏洩です。
    CloudflareのDNS設定から、Cloudflareを適用しないIPアドレスを設定することで、DNSレコードからサーバーのIPアドレスが漏洩します。
  2. ウェブサーバーの不具合から見つける
    前述の唐澤貴洋WikiはApacheのサーバーステータスからIPアドレスが漏洩しましたが、その他にも phpinfo() のページを放置していたりするとそこからも漏洩します。
  3. ウェブアプリケーションの不具合から見つける
    外部にリクエストを送るようなサイトであれば、自分の用意したページにリクエストを送らせることによってIPアドレスがわかってしまいます。
    また、ターゲットのサイトがウェブサーバーからメールを送信するシステムの場合、メールヘッダーを調べればIPアドレスがわかります。
    例を挙げると、WordPressの設定で「だれでもユーザー登録ができるようにする」をオンにしていれば、登録時に送られてくるメールから調べることができます。
  4. ShodanやCensysなどの検索エンジンから見つける
    ShodanCensys は世界中のIPアドレスにスキャンをかけて情報を収集している検索エンジンですが、このような検索エンジンからもターゲットの手がかりを得ることができます。
    今はもう消えてしまいましたが、前述の唐澤貴洋WikiもポーランドとオランダHostkeyのサーバーを利用していた時期に、直IPのアクセスでもsonshi.xyzのSSL証明書を提出してきたので、Censysで検索するとインデックスされていました。

「Cloudflareを導入したから大丈夫」ではない

このように、Cloudflareをサイトに導入して攻撃の対策やサーバーの秘匿化に努めたとしても、攻撃者はその穴を突きCloudflareをすり抜けて攻撃を仕掛けてくるのです。
「Cloudflareを導入したから大丈夫」というのは間違った認識です。

次回は、CloudflareのようなクラウドWAFを導入したサイトに対するこれらの脅威にどう対処していけばよいかについて書いていきたいと思います。

投稿をシェア

記事の内容が面白く感じたら、シェアしていただけると記事を投稿するモチベーションにつながります。

コメントを残す

メールアドレスが公開されることはありません。