Presentation is loading. Please wait.

Presentation is loading. Please wait.

第5回 DoS攻撃 その攻撃と対処 NECラーニング 山崎 明子 DoS攻撃とその対処についてご紹介します。

Similar presentations


Presentation on theme: "第5回 DoS攻撃 その攻撃と対処 NECラーニング 山崎 明子 DoS攻撃とその対処についてご紹介します。"— Presentation transcript:

1 第5回 DoS攻撃 その攻撃と対処 NECラーニング 山崎 明子 DoS攻撃とその対処についてご紹介します。

2 DoS攻撃とは? サービス妨害(Denial of Service) DoS攻撃とは、サービス妨害のことです。
たとえば、あるお蕎麦屋さんにうその出前の電話を100件かけたことをイメージしてみてください。するとそのお蕎麦屋さんは、うその注文に応えた結果、本当の注文には応えることができなくなるかもしれません。 このような攻撃がDoS攻撃です。 ここでのポイントは2つです。まず、うその注文を拒むことが難しいこと。そして、うその注文と本当の注文を見分けることが難しいことです。 このことと同様、DoS攻撃は、一般に防ぐことが難しい攻撃のひとつといえます。しかし、対策をとらない場合、大きな被害が発生しますので、しっかり対処していく必要があります。 実際にいくつかの被害が発生しています。

3 具体的な攻撃例 大企業 行政機関 有名な ポータルサイト 有名人の オフィシャル サイト
また、実際の被害の例として、大企業や行政機関、有名なポータルサイトなどがターゲットになっており、社会的にも大きな影響をもたらし、大きな話題にもなりました。 ですから、私たちが作るシステムが同じことにならないように、DoS攻撃に対する適切な対処をしていく必要があります。 そのために、まず、DoS攻撃の種類から見ていきましょう。 有名人の オフィシャル サイト

4 DoS攻撃の種類 サービス妨害(Denial of Service) CPU過負荷攻撃 メモリ過負荷攻撃 アプリケーションの欠陥への攻撃
リソース過負荷攻撃 この攻撃の種類はさまざまで、アプリケーションの欠陥を攻撃したり、CPUに負荷をかけたり、メモリ負荷をかけたり、リソース負荷をかけたり、ネットワーク帯域幅を使い切ったりする攻撃があります。 ここでご紹介したように、大きく分けるとアプリケーションの欠陥を狙った攻撃と負荷を集中させて各種リソースを枯渇させるものがあります。 ネットワーク帯域幅攻撃

5 アプリケーションの欠陥への攻撃 アプリケーションの欠陥を狙った攻撃 対処 例)Ping of Death
データ構造の問題を利用した攻撃 対処 ネットワークから送られてくる情報を信頼しない 堅牢なプログラムコードの記述 コードレビュー テストの実施 さまざまなパターンを想定してチェック まず最初に、アプリケーションの欠陥への攻撃をみてみます。 アプリケーションの欠陥を利用した攻撃の代表的なものにPing of Deathがあります。Ping of Deathは、IPヘッダーの構造に内在する問題を利用した攻撃です。データの一部に非常に大きな値を設定するだけで、簡単に桁あふれさせ、問題が発生します。 このような問題を回避するには、まず、最初にネットワークから送られてくる情報を信頼しないことです。送られてきたデータをきちんとチェックし、問題を起こさない値であることが確実である場合にのみそのデータを利用します。 また、問題を起こさないよう堅牢なプログラムコードを記述することも大切です。そのために効果的なのはコードレビューを行うことです。あるいは、堅牢性を強制することができる言語や開発ツールを利用することです。 さらに、さまざまなパターンを想定したテストを実行することです。 このようなプログラミングの基本をしっかり守ることが、実は非常に重要なことなのです。

6 CPU過負荷攻撃 負荷の高い処理を実行 対処 例)無限のループ処理 例)F5アタック(F5攻撃) システムのパフォーマンスをアップさせる
攻撃を受けたときのダメージを最小限にする もうひとつの攻撃パターンは、各種リソースに負荷をかけることです。 そのうち、CPUに負荷をかける攻撃が、CPU過負荷攻撃です。 たとえば、1つの処理をループを利用して何度も何度も実行させると、CPUに負荷がかかります。 また、F5攻撃、またはF5アタックともいわれる攻撃があります。これは、F5キーを押すとブラウザが再読み込みをすること を利用して、集団で示し合わせてF5キーを連打して特定のサイトを妨害するものです。 これらの対処は、決定的なものはありませんが、たとえば、前者の場合、その処理をできるだけ効率よく行っておくことで被害を最小限に抑えることができるでしょう。 F5アタックは、犯罪ですので、絶対にやってはいけませんし、その被害にあった場合は、警察に届け出ることが最適な対処法です。

7 メモリ過負荷攻撃 メモリを大量に消費 対処 ページングが発生 オブジェクトの生成に失敗 メモリの割り当てを適切に行う 設計段階で攻撃を考慮
例外をスロー 対処 メモリの割り当てを適切に行う 要求元が適切であるかどうか? 必要最低限のメモリを割り当てる 設計段階で攻撃を考慮 次にメモリに負荷をかけるメモリ過負荷攻撃を見てみましょう。 これは、メモリを大量に消費させることで、ページングが頻繁に発生したり、必要なオブジェクトの生成ができず、その結果例外が発生したりする攻撃です。 この対処としては、メモリの割り当てを適切に使うことを心がけます。たとえば、要求元が適切であるかどうかをチェックし、問題がない場合にメモリの割り当てを行います。また、本来必要な量のメモリを利用するようにコーディングします。このような基本的な対処がメモリ過負荷攻撃からシステムをまもることができます。 また、設計の段階でこの攻撃を考慮し、策を講じておくことが効果的です。

8 リソース過負荷攻撃 特定のリソースを使い切るまでリソースを消費 対処 数が限られたものを狙う 量が限られたものを狙う
各種ハンドル 量が限られたものを狙う メモリ、ディスク、ネットワーク帯域幅 対処 ユーザー、プロセスごとに、使用数、量を制限 プール、クォータ、タイムアウト 設計の時点で考慮すべきこと 攻撃を受けたら、動作を変更 リソース負荷攻撃は、そのリソースを使い切るまでリソースを消費することです。 たとえば、システム内で数に限りのある各種ハンドルを使い切ったり、メモリやディスクなど量が限られているものを使い切ったりします。これにより、本来そのシステムが必要しているハンドルやメモリやディスクを利用した処理ができなくなります。 この対処としては、使用数や使用量を制限するということができます。 たとえば、認証されたユーザーごとにハンドルのプールを割り当て、割り当て以上には利用できないように設定したり、ユーザーやプロセスごとに使用可能な量を制限するために、クォータ、つまり「割り当て量」を指定したりできます。これにより、特定のユーザーや、認証を受けていないユーザーが大量にハンドルやメモリやディスクを利用することがなくなります。 また、一定時間利用がない場合にはタイムアウトし、使用されていないリソースを解放するようにします。 また、リソース負荷攻撃の対処として、もうひとつ大事なことは、設計の時点でこの攻撃の存在を考慮し、攻撃を受けたときに動作を変更するようにしておくことです。たとえば、そのリソースが豊富にあるときは、通常通り動作し、リソースが不足してきたときに制限された状態で動作するようにします。 また、対処法は常に一定ではなく、システムごとに最善策が異なります。しかし、ここで紹介したいくつかの方法を組み合わせることで確実にリスクを軽減することができます。

9 ネットワーク帯域幅攻撃 ネットワークに大量のデータを流す攻撃 対処 例)Smurf攻撃 システム管理者による防御 開発者
Pingコマンドを利用 Request → Reply ターゲットに対し大量のデータが送られる 対処 システム管理者による防御 ルータなどで送信元をチェック ブロードキャストアドレス宛のデータは無視 開発者 余計な応答(Reply)はしない 必要なときだけエラーを返す pingコマンドでは、確認したい相手に「エコーリクエスト」(echo request) を送り、相手は「エコーリプライ」(echo reply) を投げ返します。この仕組みを利用して、Smurf攻撃ではエコーリクエストの送信元を改竄してターゲットのアドレスを設定し、ターゲットの所属するネットワークのブロードキャストアドレス当てに大量に送りつけます。すると、ネットワーク上のマシンが一斉にターゲットのコンピュータに向かって大量のエコーリプライを投げ返し、ネットワークがパケットであふれ返り通信速度が極端に落ちるほか、ターゲットのマシンは大量のデータ(パケット)を処理するために過重な負荷がかかることになります。  このSmurf攻撃を防ぐには、ネットワークの境界にあるルータなどでデータ(パケット)の送信元アドレスをチェックしたり、ブロードキャストアドレス宛てのエコーリクエストを破棄するなどの対策が効果的です。このようなシステム管理者による対策に加え、われわれが作るプログラムは、余計な応答(Reply)をせず、必要なときだけエラーを返す、といったことを心がけるべきです。

10 効果的な対処 コードの質を高める システムのパフォーマンスをアップする セキュリティを意識した適切な設計 攻撃を検出し、保護する機能
コードレビュー テスト システムのパフォーマンスをアップする セキュリティを意識した適切な設計 攻撃を検出し、保護する機能 不正な要求への対処をチェック このように、DoS攻撃は大きく分けるとアプリケーションの欠陥をねらう攻撃と、単純にサーバに過剰な負荷をかける攻撃の2つに分けられますが、前者の場合、とにかくコードの質を高めることで防ぐことができます。 また、CPU過負荷攻撃に対しては、その誘引はパフォーマンスにあるので、さまざまな不正なデータの入力を試しながらプロファイルすることで検出することができます。 メモリ過負荷攻撃や、リソース過負荷攻撃に対しては、最初からセキュリティを意識した設計が重要であることについて触れました。攻撃を受けているとわかったときに、動作を変更する保護機能を備えている必要がある場合もあります。 また、ネットワーク帯域幅攻撃の防御としては、アプリケーションが不正なネットワーク要求にどう応えるか?がポイントです。

11 完全な解決策はある? DoS攻撃からシステムを保護 DoS攻撃の問題を完全に解決する方法 難しい・・・ ない!

12 多層防御 多層防御の基本 人や組織、技術、プロセス 具体的には・・・ セキュリティを考慮したシステム開発 管理者はファイアフォール
ユーザーには教育 人や組織、技術、プロセス そこで、セキュリティに対処する効果的な方法として、多層防御という考え方をご紹介します。 ある特定のセキュリティの問題に対処するためのピンポイントの対策には限界がありますし、その上、今回のようなDoS攻撃そのものを防ぐことは出来ません。そこで防壁を何層にも設け、たとえそれが破られたとしても、次の壁がある・・・というように多角的、多層的な防御を検討する必要があります。これが多層防御の考え方です。 具体的には、まず開発者がセキュリティをあらゆる角度から考慮したシステムであること。たとえば、セキュアなコーディングや安全なデータ管理や利用、強固な認証、適切な暗号化の使用などが挙げられます。 管理者はファイアウォールをはじめとし、セキュリティパッチの適用、OSやネットワークの設定、管理などをしっかり行う必要があります。 また、適切なシステムの利用をしてもらうために、ユーザ教育を行い、さらに重要なデータを守るための入退出管理なども指導します。 このように、DoSをはじめとした各種セキュリティの脅威に対処するためには、システム開発者だけでなく、システムを構成管理するすべてのメンバをも巻き込み、多層防御を行うこと、さらに場当たり的ではなく、セキュリティに配慮した「人や組織、技術、プロセス」を設計の段階から組み込むことが効果的です。

13 DoS攻撃のまとめ 大きく分けると2種類 攻撃への対処 アプリケーションの欠陥を狙ったもの 各種リソースを使い果たすもの
攻撃の種類ごとの効果的な対処 基本的な対策との多層防御も大切 設計が重要 まとめです。 DoS攻撃は大きく分けると アプリケーションの欠陥を狙ったもの 各種リソースを使い果たすもの があります。 各攻撃ごとに効果的な対処があります。まずは、攻撃の種類を知り、対処を知ることが重要です。また、このような基本的な対策に加え、多層防御の考え方を取り入れることも大切です。 いずれにしても、これらの対策は後付けにするとコストがかかりますし、最悪の場合、設計し直しなる可能性もあります。ですから、設計の段階からセキュリティに配慮し、適切な対策をとることを心がけてください。

14 リファレンス 開発者のためのセキュリティサイト MSDNデベロッパーセキュリティセンター 開発者向け セキュリティ オンライン セミナー
開発者向け セキュリティ オンライン セミナー アプリケーションセキュリティの基礎 実践! セキュアなコード記述 Part 1 実践! セキュアなコード記述 Part 2 最後に開発者のためのセキュリティサイトをご紹介したいと思います。 こちらでは、開発者のためのオンラインセミナーが公開されています。ぜひ、こちらもご覧ください。


Download ppt "第5回 DoS攻撃 その攻撃と対処 NECラーニング 山崎 明子 DoS攻撃とその対処についてご紹介します。"

Similar presentations


Ads by Google