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

Slides:



Advertisements
Similar presentations
Internet Explorer 障害解析 最初の一歩 - IE のトラブルを理解する -. 概要 Internet Explorer を使用中に発生するトラブルの 種類と、調査のための切り分け方法を紹介します! (以降は IE と略称で表記します) よくあるお問い合わせ Web ページの表示が白画面のまま完了しない.
Advertisements

IIS 4.0で開発をするコツ Webアプリケーション構築.
安全なログオン手順 2004/08/26 Port139 伊原 秀明.
Ibaraki Univ. Dept of Electrical & Electronic Eng.
セキュリティ機構のオフロードを考慮した仮想マシンへの動的メモリ割当
クラウド上の仮想マシンの安全なリモート監視機構
コンピュータウィルスと脆弱性 メディアコミュニケーション論Ⅲ 7/18/08.
受動的攻撃について Eiji James Yoshida penetration technique research site
Ibaraki Univ. Dept of Electrical & Electronic Eng.
安全・安心なネット生活を送るためのネットワークセキュリティ
第14回 今日の目標 §4.3 情報セキュリティー 情報化社会の特徴を社会的な面から概観する 情報に関わる危険の要因を示す
ネット時代のセキュリティ2(脅威の例) 2SK 情報機器工学.
CGI Programming and Web Security
東京経営短期大学 経営総合学科 准教授 玉田 和恵
応用情報処理V 第1回 プログラミングとは何か 2004年9月27日.
2005年度 情報システム構成論 第5回 ネットワークセキュリティ基礎
第5章 情報セキュリティ(前半) [近代科学社刊]
第13回 今日の目標 §4.3 情報セキュリティー 情報化社会の特徴を社会的な面から概観する 情報に関わる危険の要因を示す
情報ネットワーク論 最終回 動的ルーティング実験デモ ネットワークの構築・管理 遠隔?講義.
応用情報処理V 第1回 プログラミングとは何か 2003年9月29日.
第5回 CPUの役割と仕組み3 割り込み、パイプライン、並列処理
ネストした仮想化を用いた VMの安全な帯域外リモート管理
認証と負荷分散を考慮した ストリーミングシステムに関する研究
Javaによる Webアプリケーション入門 第9回
B4向け研究紹介 MTAにおけるspamメール判別方法
Ibaraki Univ. Dept of Electrical & Electronic Eng.
東京経営短期大学 経営総合学科 准教授 玉田 和恵
不正アクセス       ーrootkitについてー              環境情報学部              3年 櫻井美帆.
第2回 SQL インジェクション その攻撃と対処 NECラーニング 山崎 明子.
総合講義B:インターネット社会の安全性 第9回 セキュリティとコスト
2004年度 情報システム構成論 第4回 ネットワークセキュリティ基礎
情報セキュリティ - IT時代の危機管理入門 -
情報の収集と共有 第3章 3節  ネットワーク社会のルールとマナー 2 情報の安全性確保 p68~p71.
SpectreとMeltdown ITソリューション塾・第28期 2018年5月30日 株式会社アプライド・マーケティング 大越 章司
Ibaraki Univ. Dept of Electrical & Electronic Eng.
第10回 情報セキュリティ 伊藤 高廣 計算機リテラシーM 第10回 情報セキュリティ 伊藤 高廣
  情報に関する技術       情報モラル授業   .
7. セキュリティネットワーク (ファイアウォール)
第9章 Error and Control Messages (ICMP)
第7回 必要最低限の権利の利用 重要性とその方法 NECラーニング 山崎 明子 必要最低限の権利の利用の重要性についてご紹介いたします。
Java Bytecode Modification and Applet Security
インターネットにおける真に プライベートなネットワークの構築
セキュリティ 05A2013 大川内 斉.
オペレーティングシステム イントロダクション
Linux リテラシ 2006 第5回 SSH と SCP CIS RAT.
セキュリティ(2) 05A2013 大川内 斉.
心のバリアフリー研修 基本プログラム例C 00:00.
第7回 授業計画の修正 中間テストの解説・復習 前回の補足(クロックアルゴリズム・PFF) 仮想記憶方式のまとめ 特別課題について
~新たなソフトウェア開発の手法~ 発表 土屋俊介
メールの仕組みとマナー.
非対称リンクにおける ジャンボフレームの性能評価
すずきひろのぶ インターネット・セキュリティの現状 すずきひろのぶ 本プレゼンテーションは2002年3月20日に大阪で講演したものをベースにしています.
最低限インターネット ネットワークにつなぎましょ!
コンピュータにログイン 第1章 コンピュータにログイン 啓林館 情報A最新版 (p.6-13)
後藤滋樹研究室の紹介 現在のインターネットの課題 敵を知り、己を知れば、百戦危うからず(孫子) 1
コミュニケーションと ネットワークを探索する
Virtualizing a Multiprocessor Machine on a Network of Computers
仮想環境を用いた 侵入検知システムの安全な構成法
第一回 情報セキュリティ 05A1027 後藤航太.
IDSとFirewallの連携によるネットワーク構築
仮想マシンに対する 高いサービス可用性を実現する パケットフィルタリング
VMリダイレクト攻撃を防ぐための 安全なリモート管理機構
本当は消去できていない!? ~データを完全消去する方法~
本当は消去できていない!? ~データを完全消去する方法~
特定ユーザーのみが利用可能な仮想プライベート・ネットワーク
TCP/IPの通信手順 (tcpdump)
Cisco Umbrella セミナー 第1回 Umbrella概要と機能.
強制パススルー機構を用いた VMの安全な帯域外リモート管理
ユーザ認証の盗聴 2002/9/10 峯 肇史 牧之内研究室「インターネット実習」Webページ
牧之内研勉強会資料 2002年9月17日 牧之内研D3 尾下真樹
Presentation transcript:

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

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

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

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

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

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

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

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

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

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

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

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

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

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