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の実行権限を外しました。
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
cgi使用可能メモリの制限
ユーザーが設置するcgiをいちいち監視してられない上、この状況は恐ろしすぎるので cgi で利用可能なメモリをApache 側で制限することにしました。
# cgi limit is 64MB RLimitMEM 67108864 67108864