orangeitems’s diary

クラウドではたらくエンジニアの日々の感想です。

DDoS攻撃とCDNの関係について考える

f:id:orangeitems:20181030222923p:plain

 

また大規模なDDoSが

こちらは、はてなブックマークに22:30ごろアクセスしたときのエラーです。

はてなブックマークはAWSのCloudFrontをCDNとして使っているんですね。で、そのCloudFrontがエラーをはいています。

 

要求を満たすことができませんでした。
CloudFrontがオリジンとの接続を確立しようとしましたが、試行が失敗したか、またはオリジンが接続を終了しました。

アプリの使用やウェブサイトへのアクセス中にこのエラーが発生した場合は、プロバイダまたはウェブサイトの所有者に連絡して支援を依頼してください。

CloudFrontを通じて顧客にコンテンツを提供する場合は、CloudFrontのドキュメントの手順に従ってトラブルシューティングを行い、このエラーを防止する手順を見つけることができます

 

オリジンサーバーにつながらないという時は2つのことが考えられます。

-CDNでホストしない動的なページに大量アクセスが来て、オリジンサーバーに多大な負荷がかかり返せなくなった。

-オリジンサーバーでアプリケーション更新を行ったらバグが内在しており動作が停止した。もしくはもともとあったバグが顕在化した。またはエラーを覚悟しつつ再起動した。

外部からは見分けがつかないのですが、DDoSであれば前者、アプリ改変によるものであれば後者です。両方ありそうな時期で何とも言えませんね。

 

DDoSはCDNで防げないのか?

DDoS攻撃については、よくCDNベンダーがDDoS対策として導入を進めていますよね。

 

www.cloudflare.com

 

www.akamai.com

 

aws.amazon.com

 

・・と、CDNといえばDDoS対策なのですが、入れたら絶対に回避できるというものではありません。一番何に弱いかというと「正しいかつ動的なページのリクエストが大量に来た時」です。ゴミのような意味のないリクエストが大量に来たときは、CDNの出番です。ルーティングを捻じ曲げて正しいリクエストだけをオリジンサーバーに送ってあげます。過去書いた記事で、GitHubがDDoSを受けた時はAkamaiが活躍しました。

 

www.orangeitems.com

 

これは、UDPパケットが大量に届く攻撃ですが、UDPなんていらないので全部Akamaiが始末してくれたという件です。ただ、最近のDDoSは上記では防げなかったのではないでしょうか。つまり「正しいかつ動的リクエスト」が大量に送り付けられたからだと思います。

正しい、かつ、動的とはどういう意味ででしょうか。

CDNは、オリジンサーバーからコンテンツをキャッシュし、大量のエッジサーバーから分散してクライアントに返すことで大量配信を実現します。しかしキャッシュしてはいけない場合があります。例えばログインした後のマイページはどうでしょう。マイページにのURLはどんなユーザーでも同じだとすると、もしキャッシュされた場合は違うユーザーのマイページが表示されてしまうかもしれません。動的リクエストは必ずサーバー側で処理してユーザーに返さなければいけませんので、いくらCDNにアクセスが来ても必ずオリジンサーバーにアクセスを流す設定をしているのです。

以前、メルカリでキャッシュの設定をミスして情報漏洩が発生した事故がありましたね。

 

news.mynavi.jp

 

ですから、いくらCDNを前においても、「正しいかつ動的リクエスト」なら、素通りさせざるを得ないというわけです。

秘密な情報はCDNには置けない。だからそのリクエストをCDNに大量に投げれば、CDNは大量にオリジンサーバーにリクエストをリレーしてしまいます。

このようなリクエストの送信元が偏っていれば、そのIPアドレスだけ遮断してしまえばよいのですがDDoSだと分散してしまっていてこれができません。

おそらく今回のDDoSの経緯で考えると、ニコニコ動画のように日本のIPアドレスだけを通す、ような対応を各社行ったのではないかと思います。この件も、初めは特定の国だけ絞っていたら、別の国から攻撃が再度来たので、日本だけにするという経緯ではないかなと推測します。基本、サービス対象は日本人であるので、サービス再開を目標とすればごくごく正しい方法を取ったと思います。

 

 

CDNが良く効くサービス

CDNが良く効くサービス・・。実は(今はもうない)漫画村です。漫画村のコンテンツはログインして見るものではないので、基本誰がどんな操作をしても同じ結果が返されます。したがって、全部のページをキャッシュしたとしても実害がありません。

キャッシュ時間は、オリジンが更新されても反映されないのですが、待てば表示されますし、まさにCDNとの相性が完璧でした。設定も上手だったのだと思いますが・・。漫画村があれだけ騒がれても落ちなかったのはそのためだったと思います。

あとは、ECサイトの商品画像とか。ゲームのアップデートデータとか。無料の動画とか。何しろCDNが活躍できるのは誰がアクセスしてもよいものに限られていることは一般に知られるべきだと思います。「コンテンツデリバリーネットワーク」の略ですからね。

CDNを使えばDDoSを撃退できるわけではない、サイトの特性により動的なページが多い場合は限界があるという結論でした。

 

アカマイ 知られざるインターネットの巨人 (角川EPUB選書)