3 - 19 基礎プロジェクトB 2012 HTTP GET Flood攻撃の有効性検証と対策法の考察 ネットワークコンピューティング研究室 指導教員:小林 浩 教授 上野 洋一郎 教授 3.4 Apacheによる観測 1. 研究の背景と目的 ・Apacheは着リクエストの数に応じて子プロセス(最大256)を生成する。 ・特定の国や企業を標的としたDDoS攻撃が多発している。 ・DDoS攻撃の一種として、HTTP GET Flood攻撃が用いられている。 ・当該攻撃によく用いられる攻撃ツールに焦点を当て、攻撃の有効性や特 徴を探り、対策方法を考察する。 Thread[1] での攻撃時 ・HTTP GET Floodは、HTTP GET Requestを大量に送信する攻撃であり、 TCPコネクションを確立した上で攻撃を行うという特徴を持つ。 ・攻撃ツールとしては、主にAnonymousが使用している「LOIC」[1]を用いる。 ・「LOIC」は攻撃時に、攻撃に用いるスレッド数を設定できるため、スレッ ド数を変化させることにより、攻撃の有効性を確認する。 WebServer Client (攻撃側) SYN open_slot 248 無負荷状態 2. HTTP GET Flood攻撃と攻撃ツールの概要 Client 末廣 友貴 waiting sending open_slot 124 Thread[10] での攻撃時 closing open_slot closing 255 0 51 102 154 205 256 図5 子プロセスの状態 子プロセス数 (全256) ・被攻撃時にはほぼ全ての子プロセスがコネクション切断中の処理となって おり、前述のコネクション解放処理が行われていないことが原因として考え られる。 WebServer (被害者側) Half-Close closing 127 SYN + ACK 3.5 ApacheとWiresharkのログ比較 ACK HTTP GET Request 200 OK ・攻撃時に、別クライアントから被害者側WebServerにWebアクセスすると、 レスポンスタイムの遅延が見られた。 ・原因を探るために、ApacheとWiresharkのログ比較を行った。 繰 り 返 し FIN ACK FIN ACK 表1 リクエスト受付時刻の差異 (a) 通常のWebアクセス例 (b) 「LOIC」による攻撃例 図1 Webアクセス例 3. LOICを用いた攻撃実験 3.1 実験環境 ・同一LAN上に、「LOIC」を作動させた攻撃側クライアントと、被害者側Web Serverを設置し、攻撃を実施する。 ・ 攻 撃 の 観 測 に は 、被 害 者 側 WebServer 上 で動 作 させ た Wireshark 、 Apacheの出力ログ、およびシステムログを用いる。 Wireshark上の GET Request記録時刻 [hh:mm:ss] Apacheログ上の リクエスト受付時刻 [hh:mm:ss] リクエスト受付時刻 の差異 [sec] 12:48:47.561315 12:48:49.558498 12:48:51.898142 12:48:53.895323 12:48:48.551687 12:48:50.882219 12:48:52.885047 12:48:54.888488 0.990372 1.323721 0.986905 0.993165 ・非攻撃時は、Wireshark上でクライアントからのリクエストが記録されて から、Apacheログ上でリクエスト受付として記録されるまでの差は 300[μs]程度である。 一方攻撃時は、Apache上でリクエストが記録されるまで1秒近く要して おり、処理負荷等の何らかの原因で、当該部分に遅延が発生している。 Switching Hub 4. 攻撃対策 4.1 対策方法の考察 攻撃側Client(Windows) IP Address : 192.168.1.2 ・TCPコネクションの確立が行われるため、攻撃クライアントはIPアドレスを 偽装できない。攻撃者はボット等を使用している可能性が高いため対処 療法的ではあるものの、IPアドレスを元にした攻撃対策は一定程度有効 であると考えられる。 被害者側Web Server(CentOS 6.3/Apache 2.2.15) IP Address : 192.168.1.50 図2 実験環境 3.2 Wiresharkによる観測 4.2 対策方法の実装 3-Way Handshake ・「mod_dosdetector」… Apache用追加module 単位時間あたりの同一IPからのリクエスト数が閾値(10秒間に10リクエス トと設定)を超えたら以後当該IPからのリクエストにDoSフラグを立てる。 ・「mod_rewrite」… Apache標準組込module DoSフラグの立ったリクエストへのレスポンスを書き換える。 上記moduleを用い、DoS検知後はレスポンスコードとして503を返却する 図3 Wiresharkにより観測された攻撃パケットの一部 ・TCPコネクション確立後にHTTP GET Requestが送信されていることが確認 できる。 ・片方向からしかコネクションの解放処理が行われていないことが確認で きるが、これはリソースの占有等の何らかの目的のためと推測される。 図6 DoS検知後の当該IPアドレスからのリクエストに対する503返却 3.3 システムログによるCPU負荷の観測 CPU使用率 [%] 2.0% 5. まとめと今後の課題 ※Thread[n] : 攻撃ツールのスレッド数をnに設定 無負荷状態 Thread[1] での攻撃時 Thread[10] での攻撃時 1.5% 1.0% 0.5% 0.0% 00:00 00:51 01:43 攻撃開始 02:34 03:25 04:17 05:08 時間 [mm:ss] 05:59 06:50 攻撃終了 07:42 図4 攻撃中の被害者側WebServerのCPU使用率の変化 ・攻撃の有無および攻撃の量により、微々たるものではあるが、CPU負荷 が変化していることが確認できる。 ・攻撃による一定の負荷やそれに伴う影響が確認された。 ・攻撃の特徴からIPアドレスベースでの対応が最も有効であると思われる。 ・今回はサーバ側での攻撃検知と一定の対応が可能なことを確認したが、 インターネット入口で攻撃の遮断を行うことができれば、サーバへ攻撃 が届くことを防止できる。 ・DoS検知したIPアドレスを他機器(ルータ等)との間で共有すれば、イン ターネット入口での防御が期待できる。例えボットが使われていたとして も、ボットからのアクセスを遮断することが可能となる。 ・今後、サービス妨害迎撃ネットワークのテストベット上で実験を進めてい きたい。 参考文献 [1] “LOIC” , Free Security Utilities software downloads at SourceForge.net , http://sourceforge.net/projects/loic/, (参照 2013-01-07)
© Copyright 2024 ExpyDoc