mod_secutiryを使ってApacheでTrackback Spamを弾く
MTのTrackback Spam対策にmod_securityを使って英数字のみのTrackbackを弾くようにしてみた。
mt-tb.cgiが動く前にApacheとかProxyとかでSPAMを判定できるとサーバに優しいし、かなり良いんじゃないかと思う。
mod_secutiryを
# apxs -cia mod_security.c
でインストールして、
<Files "mt-tb.cgi"> SecFilterEngine On SecFilterScanPOST On SecFilterDefaultAction "deny,log,status:406" SecFilterSelective POST_PAYLOAD "^[\x00-\x7F]+$" </Files>
と設定。
フィルタリングされていると、
[Wed May 17 18:33:37 2006] [error] [client 213.178.208.228] mod_security: Access denied with code 406. Pattern match "^[\\\\x00-\\\\x7F]+$" at POST_PAYLOAD [severity "EMERGENCY"] [hostname "nomadscafe.jp"] [uri "/mt32/mt-tb.cgi/844"] [Wed May 17 18:33:41 2006] [error] [client 213.178.208.228] mod_security: Access denied with code 406. Pattern match "^[\\\\x00-\\\\x7F]+$" at POST_PAYLOAD [severity "EMERGENCY"] [hostname "nomadscafe.jp"] [uri "/mt32/mt-tb.cgi/1122"] [Wed May 17 18:34:23 2006] [error] [client 213.178.208.228] mod_security: Access denied with code 406. Pattern match "^[\\\\x00-\\\\x7F]+$" at POST_PAYLOAD [severity "EMERGENCY"] [hostname "nomadscafe.jp"] [uri "/mt32/mt-tb.cgi/1079"]
こんな感じのログが残ります。
参考:
・株式会社ソフテック -
mod_securityでWebサーバを守る(第1回)
・Journal InTime -
mod_securityでreferer spamよけ(2)