2007/03/05(月)攻撃されるcgiと止まるサーバ

SPAMの激しい攻撃

どうもサーバがやけに重たいなぁーと思っていろいろ調べてみたら、とあるところに設置されている cgi が大量の攻撃を受けていた。

設置者が放置している掲示板で「まあ実害はないだろう」と思ってそのままにしておいたのですが*1、気付いたらそのcgiのおかげで1GBぐらいあるハズのサーバメモリが食いつぶされて、さらにswapまで食いつぶされていた(汗)

どれくらいSPAM投稿があったかと言うと、1分間に

[Tue Mar 06 03:03:03 2007] [client 84.19.176.62]
[Tue Mar 06 03:03:11 2007] [client 221.208.14.248]
[Tue Mar 06 03:03:22 2007] [client 222.33.65.154]
[Tue Mar 06 03:03:29 2007] [client 220.212.135.69]
[Tue Mar 06 03:03:32 2007] [client 82.141.146.20]
[Tue Mar 06 03:03:46 2007] [client 165.228.131.12]
[Tue Mar 06 03:03:46 2007] [client 220.212.135.69]
[Tue Mar 06 03:03:47 2007] [client 72.232.229.118]
[Tue Mar 06 03:03:58 2007] [client 72.232.206.66]

だけのアクセス。これがずーーーーっと続くわけで(以下略)。cgiの実行権限を外しました。

*1 : 利用者のユーザー領域に設置されているものですから、勝手にどうにかするのはあまりよろしくない

Ruby cgiが攻撃をうけている?

top でプロセス監視していると、たまに立ち上がる ruby プロセス(www権限)が 500MB ほど食っている模様。犯人はどこの cgi だ……(汗)

……これまた放置された tDiary でした。各記事に2000件ほどのSPAMが付いてまして、ここに対して書き込み動作をしたときのメモリ消費が次のとおりです。

USERNAME  SIZE   RES STATE  C  TIME   WCPU COMMAND
www       644M  583M kserel 0  0:07 20.14% ruby

放置されたcgiほど恐ろしいものはないと身にしみました(汗)*2

*2 : たかだか30MBのログを処理するのにこれだけメモリを食うtDiaryもどうかと思いますが……

cgi使用可能メモリの制限

ユーザーが設置するcgiをいちいち監視してられない上、この状況は恐ろしすぎるので cgi で利用可能なメモリをApache 側で制限することにしました

# cgi limit is 64MB 
RLimitMEM 67108864 67108864