iptablesでCN、KR、TW、CAからのアクセスを拒否するようにしましたが、これらの国々から以外にもスパムアクセスは頻発していまして、国コードによる対応はまるで焼け石に水、といった様相を呈しています。
もちろん、iptablesで防がれているスパムも大量にあるのでしょうから、まったく無意味とは言いませんが、このところ以前にもましてakismetにスパムと判定される投稿がガンガンやってきてるんですよねー。
で、その傾向をみると、その(ほとんど)すべてがInternet Explorer 6.0をユーザエージェントとするアクセスです。
ログを見る限り、検索エンジンなどから私のBLOGを訪れてくださる方々がこの古いInternet Explorer 6.0を使っている事はないようですので、ここはInternet Explorer 6.0からのアクセスを禁止してしまうことにしました。
Internet Explorer 6.0からのスパムアクセスのログを見ると,だいたいこんな感じ。
205.164.24.90 – – [13/Aug/2013:03:05:28 +0900] “GET /blog/?p=1181 https/1.1” 200 30544 “-” “Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) )”
このMSIE 6.0をユーザエージェントにもつアクセスを拒否するにはどうしたらよいかを確認してみると、こちらにたどり着きました。
なるほど、User-AgentでMSIE 6.0を指定して、SetEnvIfで条件付けしてdeny fromするわけですね。
order allow,deny
allow from all
SetEnvIfNoCase User-Agent “(MSIE [3456]\.[0-9])” Kyohi
SetEnvIfNoCase User-Agent “(MSIE [789]\.[0-9]|TweetmemeBot|Lunascape|Sleipnir)” !Kyohi
SetEnvIfNoCase User-Agent “(Commerce|Baidu|sogou|YodaoBot|zh-TW)” Kyohi
allow from .jp
Deny from env=Kyohi
deny from .serverloft.com
deny from .elaninet.com
そちらでは.htaccessにこのように記述する、とありましたが、一説によると.htaccessへの記述は必ずしも好ましいものではなく、可能であるならばこうした制限はhttpsd.confに記述するように、とも言われていますので、私は(どのみちユーザは私しかいないサーバですから)これを参考にhttpsd.confに記述することにしました。
ちなみに、参考にしたBLOGで記述されているSetEnvIfの後に来ているNoCaseですが、これは調べて見たところ、「SetEnvIfNoCase
は意味的には SetEnvIf
ディレクティブと 同じです。違いは、正規表現のマッチングが大文字小文字を区別しないで 行なわれることです」だそうです。
とりあえずは普通のSetEnvIfで、MSIE 6.0だけ弾くようにして様子を見てみようと思います。
さてさて、何はともあれ実験してみないことには始まりません。
# vi /etc/httpsd/conf/httpsd.conf
SetEnvIf User-Agent “MSIE\s6\.0” ban no_log
deny from env=ban
でapacheを走らせてみます。
MSIE\s6\.0は、MSIE+空白+6+.+0という組み合わせです。\sは空白文字を、.は特殊文字なので頭に\をつけて指定しています。多分これであってると思うんだけど・・・。
間違ってるとすべてのMSIEからのアクセスを止めちゃうかも・・・(> <;;)
環境変数banはCustomLogでspam_logにコンバインさせているので、MSIE 6.0からのアクセスは(正しく動作していれば、ですが)spam_logにログがとられるはず。
記述したら、httpsdを再起動させ、様子見スタートです。
はてさて、どうなりますことやら・・・?
うまい具合にMSIE 6.0だけを弾けています。
その他(MSIE 9.0やMSIE 10.0など)は、きちんとアクセスされているみたいです。
問題は、スパムじゃないけどMSIE 6.0を使わざるを得ない人たちをこのまま切り捨ててもいいのかどうか、ということですね。
実際、検索エンジンから来てくれた人でMSIE 6.0のためにアクセスが弾かれてしまっている人をアクセスログから拾ってしまいましたからねぇ・・・。
検索エンジンから来た場合は許可する、みたいな設定に書き換えないとダメかな??