apache2.4でBOTからのアクセスを排除

私は何か数字が動くものを見るのが好きでgoogle analyticsのリアルタイム情報をよく見ているのですが、そこで不思議なアクセスに気づきました。
リファラがよくわからないサイトになっていて、サイトトップを表示しているものたちです。

どうやらこれがbotらしいということなので、アクセス制御を行ってみようと思います。

排除すべきアクセス

まずは排除すべきアクセスですが、私のサイトにアクセスしていた不思議なリファラを検索したら以下のページがでてきました。
https://w3g.jp/blog/block_referer-spam-bots

こちらにたくさんの怪しげなアクセスが列挙されていましたので、これを参考に設定を行ってみます。

apache2.4での設定方法

参考とさせていただいたサイトの設定方法を見たところどうやらapache2.2系のようです。
CentOS7以降はyumではデフォルトで2.4以降が入るのため、微妙に設定方法が違います。

今回はapache2.4系の方法で設定してみたいと思います。

# set env用設定ファイル作成  
[root@metal ~]# vi /etc/httpd/conf.d/drop-spams.conf  
  
# サイト設定の修正  
[root@metal ~]# diff /etc/httpd/conf.d/virtual-wordpress.conf.2015-11-11 /etc/httpd/conf.d/virtual-wordpress.conf  
7a8,12  
>   
>     <RequireAll>  
>       Require all granted  
>       Require not env spambot  
>     </RequireAll>  
21a27,31  
>   
>     <RequireAll>  
>       Require all granted  
>       Require not env spambot  
>     </RequireAll>  
[root@metal ~]# apachectl configtest  
Syntax OK  
[root@metal ~]# systemctl restart httpd  

まずは参考サイトにあったSetEnvをひたすら記述するファイルを作成して、排除したいspambotを管理します。
次に、virtual host設定をしてあるファイルに対してRequire設定を行います。

まずall grantedで全てのアクセスを許可して、そのあとにspambotになるものについては拒否しています。
diffの設定が二つあるのはhttp, httpsの両方に設定を行っているためです。
これ正直httpsの方だけで十分ですよね。

あとがき

最近バタバタしており、更新ができていなかったので簡単にですが更新。
現在Redmineの調整をしたり、OpenVPNの導入を行っているところです。
その前にDDNS設定が必要だったりと、しばらくは更新するための手順蓄積が必要そうです。