スライド 1 - ネットワークコンピューティング研究室

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)