実効性のあるリファラスパム対策 まとめ

最終更新日 2015.6.15

Google Analyticsの「集客 > 参照元」画面で、自サイトがどこからリンクされているか眺めて楽しんでいる個人サイト運営者さん、企業サイトの管理者さん向けです。
他所の記事では誤った認識による、効果の無い対策が紹介されているケースばかり目に付き、プロとして見過ごせなかったもので…。

設定変更の代行をご希望の場合はお問合せください。


「リファラスパム」という言葉をご存知でしょうか。「『参照元』を普段から眺めている人をターゲットにして、踏ませたい悪質サイトを参照元情報に仕込む」という非常に回りくどい攻撃手法です。これ以上の詳細はここではお伝えしませんのでググってください…。

まず第一に、Google Analyticsのトラッキングコードに手を加えます。
通常のコードではスパムのロボットにより簡単にIDを抜かれてしまうので、適宜区切って記述するようにします。
(2015/1/28追記: どのサイトにもトラッキングコードを貼らずにいた新規IDにも攻撃が確認できましたので、おそらく総当たりで仕掛けてきています。トラッキングコード書き換えによる対策は無意味かもしれません。)

変更前
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');

ga('create', 'UA-12345678-1', 'auto');
ga('send', 'pageview');

</script>

変更後
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');

var gaua = '';
gaua += 'UA-';
gaua += '12345678';
gaua += '-1';


ga('create', gaua, 'auto');
ga('send', 'pageview');

</script>

記述に間違いさえ無ければ、動作に支障はまったくありません。変更後はいちおう「リアルタイム」画面で正常動作していることを確認してください。

Google AnalyticsのトラッキングコードからIDが簡単には抜けないようにしたところで、続いては「既にIDが抜かれてしまっていて、攻撃対象にされている場合」の対策です。
他所様の解説では、.htaccessとかhttpd.confとかで「スパムがサイトにアクセスできないようにブロックする」的な対策が紹介されていますが、まったく無意味です。
IDを抜きに来るロボットを防げる可能性はあるのですが攻撃自体は「そもそもサイトにアクセスしていない」ので。
(このあたりの詳細も、攻撃手法の紹介になってしまうので省略します。)
攻撃の対策はGoogle Analyticsの設定で何とかします。

Analytics 設定画面 1:参照元

  1. 上メニュー「アナリティクス設定」
  2. 3分割されたメニューのうち左の「アカウント」の列にある「すべてのフィルタ」→「+新しいフィルタ」ボタンを押し、「ビューにフィルタを追加」画面へ行きます。
  3. フィルタ名はご自身で分かればよいので適当に。
  4. フィルタの種類を「カスタム」に切り替えて
  5. 「除外」のまま
  6. 「フィルタフィールド」には「参照」を選択。
  7. 「フィルタ パターン」に
    priceg\.com|darodar\.com|ilovevitaly|econom\.co|blackhatworth|iskalko\.ru|semalt\.com|-for-(your-)?website\.|makemoney|-seo(-|.)|cheap をコピペ。既知の攻撃サイトのリストです(2015/6/15更新)。意味不明でもいいです!
  8. 「ビューにフィルタを適用」欄は、左側に並んでいるものをすべて選択して
  9. 「追加」ボタンで右側に移動したらOKです。
  10. 最後はページ下までスクロールしてフィルタを保存してください。

さて、上記の対策一つではまだ充分ではありません。
次々と新しい攻撃サイトが登場しているので、リスト化しただけではきりがないのです。
攻撃の特徴を抑えて、未知の攻撃サイトにも対応します。

この「リファラスパム」は「ホスト名」情報を(少なくとも現時点では)必ず偽装してくる、という特徴があります。
「参照元」情報に攻撃サイトを仕込んだアクセス数と、「ホスト名」を偽装しているアクセス数は一致します。

Analytics レポート例

つまりこの特徴を元に、「ホスト名を偽装したアクセス」を排除すれば新しい未知の攻撃サイトも排除できることになります。
これも先ほどと同じくフィルタ設定で対応します。
『5. 「フィルタの種類:カスタム」「除外」』までの操作は同じです。

Analytics 設定画面 2:ホスト名

  1. 今度は「フィルタフィールド」を「ホスト名」にします。
  2. 「フィルタ パターン」に
    co\.lumb\.co|apple\.com をコピペ。ひとまず現時点では偽装ホストとしてこの2種しか使ってこないのでこれでいいです。
  3. あとは先ほどと同じ手順で、「ビューにフィルタを適用」欄は、左側に並んでいるものをすべて選択して
  4. 「追加」ボタンで右側に移動したらOKです。
  5. 最後はページ下までスクロールしてフィルタを保存してください。

結局こちらも「偽装ホストをリスト指定」するので、新しい未知の偽装ホストを使われると無効なのですが…。
正しいホスト名以外をすべて排除、という設定をしようにも否定表現が使えないので、もしやるならこうなるんです。これでもザルのような絞込みですが。

Analytics 設定画面 3:ホスト名の例

あくまでうちの例なので転記しても希望通りの動作はしません。「正規表現」が書ける人はご自身のホスト名に合わせてください。


以上で「リファラスパム対策設定」は終わりです。
注意点として、フィルタによるこの対策は「既に参照元として記録されてしまっているデータ」には排除指示が反映されません! 設定以前の日付の「参照元」チェックの際はお気をつけください!

設定変更の代行をご希望の場合はお問合せください。


ほんの一部の修正、小さな案件1件からでもご対応いたします。お気軽にご相談ください。

お問合せcontact@capriccio.tofax:078-330-8431