Cでサーバー監視のプログラムを作ってみよう その5

※このお話はすべてローカルの出来事です。

攻撃する側になってみよう

このシリーズはとりあえずこの回で一休みして、また次回からは基本的なプログラムの勉強に戻ろうと思います。

攻撃する側になってみるって事ですが、最近ちまた流行っているというと語弊があるかもしれないですけど、DoS攻撃ではなくて古典的ですがコメントスパムをやってみようかと。

BBSはKentWebさんのBBSを使ってますが、デフォルト設定だとセキュアなので、できる限り脆弱に、意図的に脆弱デフォルト設定から変更しているので、kentwebさんのBBSをちゃんと使っている利用者の方は安心してください。だがしかし、どこぞの脆弱なBBSを使っている人はかなり危険だという事を知ってください。

 

コメントスパムどうやるの

スクリプトでできます。たけけんはPerlの経験は全くといっていいくらいないのですが、今回使えるPerlのモジュールを探してちょこっとやったら作れちゃいました。たださっきも書いたように脆弱なBBSにしか使えないですが、頑張ればそこそこセキュアなBBSでもなんとかなるかもしれないです。

スクリプトは秘密ですが、とっても簡単です。

実行するとこんな感じ。

commenttest2

早朝からなにやってんのって感じですけど、脆弱なBBSにはいとも簡単に攻撃できてしまいます。

ここでポイントは、こないだ作ったLoadAverage+CPU時間高い プロセスをKILLするDaemonは動いてないってとこですかね。仮に動くように閾値を変えてみても、無駄無駄無駄~なのは想像できますか?

攻撃サーバーのスクリプトはKILLできないのです。

サーバーサイドから見ると対策できる事と言えば、iptablesとかファイアウォールを使うとか、一時的な改善策の話になってきて、BBSを守るという事については、サーバーからはなかなか難しいというのを実際に攻撃をしてみて実感したのです。

 

弾幕うすいぞ、管理者なにやってんの

たぶんこういう考え方をするかもしれないけど、コメントスパムっていうよりもDoS攻撃に近い感じになったら話の本筋が変わってしまうので、あくまでコメントスパムというレベルで、長文のスパムを作ってみた。

commenttest3

有名なコピペらしいけど、これを使ってみた。

これを書き込むスパムを数10個立ち上げてみたら、攻撃側の負荷の方が高くなってしまった(笑)

こっちが受けている方
last pid:  2824;  load averages: 29.30, 19.39, 10.98 

こっちが攻撃している方
top - 00:20:15 up 3 days,  8:13,  3 users,  load average: 58.31, 50.42, 24.10

数値で見るとかなり高いように見えますけど、受けている方のサーバー本体はかなり余裕があります。どういう事かというと、やっぱりBBSは守れないという事です。

ではせっかくハイパーバイザーをこないだ作ったとこなので、4個のサーバーから負荷分散して1台に一気にやってみました。

受けている側のサーバーのtopとvmstatを載せます。

top - 03:19:24 up 3 days, 21:01,  2 users,  load average: 37.74, 22.02, 14.06

14662 apache    20   0 39416 7676 3604 R  3.3  0.8   0:00.02 regist.cgi
14663 apache    20   0 39284 7596 3604 R  3.3  0.8   0:00.02 regist.cgi
14664 apache    20   0 39284 7612 3604 R  3.3  0.8   0:00.02 regist.cgi
 6543 apache    20   0  251m 6516 1364 S  1.7  0.6   0:00.24 httpd
13038 root      20   0 15028 1396 1008 R  1.7  0.1   0:00.09 top
14655 apache    20   0 39416 7708 3612 R  1.7  0.8   0:00.02 regist.cgi
14660 apache    20   0 39416 7712 3612 R  1.7  0.8   0:00.01 regist.cgi
14661 apache    20   0 39416 7644 3604 R  1.7  0.8   0:00.01 regist.cgi
14665 apache    20   0 39284 7576 3604 R  1.7  0.7   0:00.01 regist.cgi
14668 apache    20   0 39284 7548 3604 R  1.7  0.7   0:00.01 regist.cgi
14669 apache    20   0 39152 7376 3604 R  1.7  0.7   0:00.01 regist.cgi
14677 apache    20   0 39152 6956 3292 R  1.7  0.7   0:00.01 regist.cgi
14678 apache    20   0 34288 4760 1936 R  1.7  0.5   0:00.01 regist.cgi
14693 apache    20   0 34024 4496 1928 R  1.7  0.4   0:00.01 regist.cgi
14694 apache    20   0 31796 4332 1912 R  1.7  0.4   0:00.01 regist.cgi
14697 apache    20   0 31796 4228 1884 R  1.7  0.4   0:00.01 regist.cgi
14698 apache    20   0 31796 4296 1912 R  1.7  0.4   0:00.01 regist.cgi
14709 apache    20   0 29596 4168 1868 R  1.7  0.4   0:00.01 regist.cgi
14711 apache    20   0 29596 4080 1868 R  1.7  0.4   0:00.01 regist.cgi
14712 apache    20   0 29332 3860 1856 R  1.7  0.4   0:00.01 regist.cgi


40  0  13604 372400  61708 298988    0    0     0   200 1356 1541 79 21  0  0  0
41  0  13604 398444  61708 299084    0    0     0     0 1525 2239 74 26  0  0  0
40  0  13604 390444  61708 299176    0    0     0     0 1347 1654 78 22  0  0  0
45  0  13604 382508  61708 299280    0    0     0     0 1459 2016 77 23  0  0  0
42  0  13604 411076  61708 299356    0    0     0     0 1426 1812 77 23  0  0  0
45  1  13604 378708  61716 299468    0    0     0   200 1423 1969 77 23  0  0  0
43  0  13604 404620  61716 299544    0    0     0     0 1462 1961 76 24  0  0  0
41  0  13604 364220  61716 299608    0    0     0     0 1332 1729 82 18  0  0  0
51  0  13604 402416  61716 299732    0    0     0     0 1535 2215 75 25  0  0  0
40  0  13604 374016  61716 299840    0    0     0     0 1317 1623 79 21  0  0  0
44  0  13604 396192  61724 299964    0    0     0   200 1538 2232 74 26  0  0  0
42  0  13604 389740  61724 300020    0    0     0     0 1369 1633 78 22  0  0  0

topでもRunばっかりですが、実際に軽いです。vmstatを見ると余裕そうに見えますが、実際に余裕があります。どれだけの攻撃をしたかというと、VM4台で1台につき10個のスクリプトを立ち上げています。

 

という感じで、簡単にまとめると

BBSとかコンテンツを守るにはコンテンツ側で対策しないと運営は難しいという事ですな。今回サーバー監視のプログラムを考えるうえで、ユーザーサイドのプログラムを考えるとなかなか難しいゾという事が発覚しました。

もっと高負荷でサーバーじたいに負荷をかける攻撃だったり、ネットワークに(ネットワークになったら完全にユーザーの域を超えているけど)負荷をかける攻撃だったりはサーバーサイドの対策に任せておけばいいけど、ウェブコンテンツはウェブ管理者が守らないといけない。

コメントスパムなら防ぐ手立てはたくさんあるけど、Wordpressのゼロデイ攻撃なんか防げたもんじゃないが、やられちゃうとそのサーバーが攻撃側のサーバーになってしまって、そうなってしまったらどうしようもない。

どうしようもないんで、できるだけ頑張ろうというところまでならサーバー監視でもできそうかも、なんとかなるかもなのでそのラインでいこうかな。と、今思った。

BBSの対策を何個か載せておくので、参考にだうぞ。

Geekなページ コメントスパム対策

みんなのSHIFTWEB  コメントスパム対策 REFERER編

Hail2u.net  コメント・スパム対策いろいろ

 

リンクかよ!って思ったかもしれないけど、BBSに限らず参考になるので読むのがいいかと。RefererなんかはDL対策にもいいし。応用が利くやつはどんどん覚えるのがイイね。

 

てなわけで、Cでサーバー監視のプログラムを作ってみようシリーズはいったん休憩です。

 

Similar Posts:


Leave a Reply

Your email address will not be published. Required fields are marked *