2013年1月20日日曜日

DoSされてみた

VPSで立ててるEtherpadのレスポンスがやけに悪いなあ・・・と思ったらDoS受けてました。



このグラフは一時間当たりのリクエスト数になります。

こんな感じの適当スクリプトでApacheのログから作りました。
cat access_log \
  | awk '{print $4}' \
  |sed -e "s/^\[//g" \
  |awk -F":" '{print $1 " " $2}' \
  |sort \
  |uniq -c \
  | awk -F"/" '{print $1 " " $2 " " $3 " " $4}' \
  | awk '{print $4 "-" $3 "-" $2 " " $5 " " $1}'


自作のRPM公開と特定メンバー用のEtherpadを立ち上げているサイトなのでほとんどアクセスはない・・・はずなのですが、2013/1/9から急激にリクエスト数が増加しています。

VPSの性能がそんなに高くないので、時間当たりのリクエスト数が10000を超えると急激にレスポンスが悪化してきます。httpdが上限まで起動し、タイムアウトが発生するようになり気付きました。

こんなリクエストが大量に来てました。
85.25.226.155 - - [13/Jan/2013:03:22:13 +0900] "GET http://www.your-arcade.com/games/14847/eon-enery-champions.html HTTP/1.1" 200 781061 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10"
66.197.143.136 - - [13/Jan/2013:03:22:18 +0900] "GET http://s.youtube.com/s?cfps=9&tpmt=0&vq=auto&sendtmp=1&idpj=0&fexp=901054,916611,920704,912806,922403,922405,929901,913605,925710,929104,929110,908493,920201,913302,919009,911116,910221,901451&decoding=accelerated&h=360&rendering=software&fmt=34&w=640&plid=AATTG33uTHvilEhn&screenw=1600&screenh=1200&lact=2247&hbt=20&vw=400&nsiabblc=28&nsiabblmean=21463&uga=m32&nsivbblmin=17139&scoville=1&pixel_ratio=1&vid=n9ZCdw8ZV19sgwQMwFo4kjBvube1DpKQC&ns=yt&hl=en_US&rmkt=1&ahoffset=27&autoplay=0&ptk=youtube_none&vh=360&playerh=390&playerw=640&fs=0&md=1&mos=0&el=embedded&volume=86&playback=1&eurl=http%3A%2F%2Fwww.facebook.com&rt=0.331&len=225.183&nsiabblmax=32976.000&et=0.331&nsivbblmax=85864.000&st=0.331&sd=BADC20521HH1356503882137883&bt=42&nsivbblc=31&nsiabblmin=8977&fv=WIN%2011%2C5%2C502%2C135&bd=7809471&bc=488218&hbd=7809471&docid=1yo0zBFCMxo&nsidf=13&vtmp=0&cr=US&nsivbblmean=53366 HTTP/1.1" 204 - "http://s.ytimg.com/yt/swfbin/watch_xlb" "Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.2.4) Gecko/20100611 Firefox/3.6.4 ( .NET CLR 3.5.30729)"
85.25.226.156 - - [13/Jan/2013:03:22:17 +0900] "GET http://ads.chiquiworld.com/2009/04/ HTTP/1.1" 200 33698 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10"
85.25.226.155 - - [13/Jan/2013:03:22:18 +0900] "GET http://www.your-arcade.com/games/14847/ HTTP/1.1" 302 - "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10"
85.25.226.156 - - [13/Jan/2013:03:22:19 +0900] "GET http://ads.chiquiworld.com/2009/03/ HTTP/1.1" 200 33310 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10"
85.25.226.154 - - [13/Jan/2013:03:22:20 +0900] "GET http://www.machinerymart.co.kr/pdb01/product/01.php?&com_board_category_code=c2 HTTP/1.1" 200 13721 "-" "Mozilla/5.0 (Windows NT 5.1; U; en) Opera 8.01"
108.62.61.58 - - [13/Jan/2013:03:22:22 +0900] "GET http://www.google.com/search?complete=0&filter=0&output=ie&hl=en&q=\"Leave+a+Reply\"+\"Name+(required)\"+\"Mail+(will+not+be+published)\"+\"Website\"+-site:wordpress.com+\x93powered+by+Typepad\x94+site%3A.cn+selling+my+timeshare&num=100&start=0&as_qdr=all HTTP/1.0" 302 586 "-" "Mozilla/5.0 (X11; U; Linux i686; it-IT; rv:1.9.0.2) Gecko/2008092313 Ubuntu/9.25 (jaunty) Firefox/3.8"
85.25.226.156 - - [13/Jan/2013:03:22:21 +0900] "GET http://ads.chiquiworld.com/2009/02/ HTTP/1.1" 200 32736 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10"
85.25.226.156 - - [13/Jan/2013:03:22:23 +0900] "GET http://ads.chiquiworld.com/2009/01/ HTTP/1.1" 200 33562 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10"
85.25.226.155 - - [13/Jan/2013:03:22:21 +0900] "GET http://www.myindiaguide.com/news/health/2012/08/25/your-face-tells-all-about-your-health-007404.html HTTP/1.1" 200 57524 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5"

アクセス元はこんな感じ
# cat access_log | awk '{print $1}' |awk -F. '{print $1 "." $2}' |sort |uniq -c |sort -r
 539309 85.25
  91383 184.22
  53889 184.82
  31759 216.244
  24756 64.120
  22977 66.197
  20258 188.138
  10011 174.139

Etherpadが時間当たりのアクセスをそこそこ発生させるのでフィルタ方法が難しかったけど、iptables でこれらのIPと一定以上のアクセス数をブロックするようにしてみた。

Webの運用はほとんどやったことないので、こういうのってみんなどーしてるんだろう?

0 件のコメント:

コメントを投稿