htaccessを利用して特定のユーザーエージェントでのアクセスを拒否します
apache1.3での設定です
サーバーの負荷を見てみるとときおり一過性にものすごい負荷がかかるときがあります。ログを見ながら負荷の原因を調べると検索ロボットよりも行儀の悪いコメントスパムロボットが原因のようです。
連続してPOSTしてくるユーザーエージェントを見てみると一見普通のプラウザのように詐称していますが、明らかにふるまいがおかしいので多数のIPから短時間に集中してPOSTしてくることからロボットと判断しアクセス拒否することにしました。
検索ロボットからのアクセスを拒否する方法がネット上にいろいろと出ていますが、UA詐称系のロボットのアクセス拒否は載っていなかったことと、書き方に一工夫が必要だったのでメモを残すことにしました。
user-agent "Opera/9.0 (Windows NT 5.1; U; en)"からのPOST をブロックする場合、htaccessには以下のように書きます。
SetEnvIf User-Agent "^Opera/9\.0 \(Windows NT 5\.1; U; en\)" deny_ua
Order Allow,Deny
Allow from all
Deny from env=deny_ua
<Limit POST>
Order Allow,Deny
Allow from all
Deny from env=deny_ub
</Limit>
これですこし負荷を減らすことができます。