.htaccess にボットトラフィックをアクセス禁止にする設定を追加した | そう備忘録

.htaccess にボットトラフィックをアクセス禁止にする設定を追加した

ボットトラフィック

以前の記事で1日で大量のボットトラフィックからのアクセスがあった時の事を書いた。

その時はすぐには対応をしなかったのだが、その後も数回同じサイトからのアクセスがあったので、遅ればせながら .htaccss にボットトラフィックからのアクセスを禁止にする設定を追加したので記事にしておく。

その時に直ぐに対応をしなかった理由としてリファラー(参照元)のアドレスを変えてアクセスしてくるとの情報が既にあったので、リファラー指定でアクセス禁止にしてもイタチごっこになると思い、しばらく放置していた。

しかしある程度リファラーの傾向と特徴が掴めたので .htaccess の中の正規表現で指定をして弾くことにした。

2022/07/17 追記

新たに trafficlabs.site と trafficpro.store からの大量アクセスがあったので記事の最後に追記している。

リファラー(参照元)の確認方法

Google Analytics で確認した。

  • メニューから、行動ー>サイトコンテンツー>全てのページを選択する
  • 対象範囲の日付を絞り込む
  • セカンダリディメンションで よく使われるディメンションと指標の中から”参照元/メディア” を追加する

以上の事より “bot-traffic.icu” が参照元であることが分かる。

参照元を確認する

主なリファラー

認識しているリファラーは以下の通り。

いずれも同じサイト(画面ショットはあえて貼らない)に誘導される。

  • bot-traffic.icu
  • bottraffic999.xyz
  • bottraffic143.xyz

上記の傾向からみて今後も数字部分(999、143)を変えてアクセスしてくる可能性がある。

またドメインのトップレベル(icuやxyzの部分)も変えてくる様だ。

後、bot と traffic の間に “-“(ハイフン)が入るケースと入らないケースがあるようだ。

毎回リファラーを確認した後で .htaccess にアクセス禁止リファラーを追加するのも面倒なので正規表現でまとめて指定をする事にした。

除外指定の方法

以下の記述を .htaccess に追加した。

RewriteEngine on
RewriteCond %{HTTP_REFERER} bot(|-)traffic(|[0-9]{3})\.... [NC]
RewriteRule .* - [F,L]

尚、RewriteEngine on 行は既にあるので RewriteCond と RewriteRule のみを追加している。

RewriteCondとRewrireRuleの追加

パラメーターの意味。

RewriteCond

一致条件を指定する

%{HTTP_REFERER}

リファラー(参照元)を表す

(|-)

正規表現で、無し or “-“(ハイフン)を表している。

“|”(パイプ)は or 条件を表す。

“()”(カッコ)はグループを表す。

bot-traffic と bottraffic の両パターンがあったのでこの指定にした。

(|[0-9]{3})

正規表現で、無し or 3桁の数字を表している。

  • [0-9]:数字
  • {3}:3桁

数字指定が無い場合と 999、143があったのでこの指定にしているが数字の桁数が変わってくるようだと調整が必要だ。

\.

“\”(バックスラッシュ)でエスケープシーケンス(後続の文字を正規表現の文字として判断しない)を指定している。

“.”(ドット)は正規表現上で任意の1文字の意味がある。

この場合は、”.”(ドット)として認識させたいのでエスケープシーケンスを指定している。

正規表現で任意の3文字を表している。

ドメインのトップレベルが icu の時と xyz のケースがあるのでこの様な指定にした。

今後、パターンが増えないようであれば (icu|xyz) の指定でも良いと思う。

[OR]

RewriteCond を OR条件で複数記述する時に使用する。

[OR,NC]

and条件の時は [AND,NC]

[NC]

大文字、小文字を区別しない

RewriteRule

URL の変換ルールを指定する

.*

上記、 RewriteCond で一致した全てのボットトラフィックのリファラーを対象にしたいので、全てに一致する任意の文字列(0~n文字)を指定している。

  • “.”(ドット):任意の1文字
  • “*”(アスタリスク):直前の文字の0回以上の繰り返し

^(.*)$ と書いてあるサイトもあるが基本的には同じ意味。

  • “^”(キャレット):直後の文字が行の先頭 
  • “$”(ドル):直前の文字が行の末尾

リライト(URLの変換)は行わないの指定。

ボットトラフィックなのでURLをリライトする必要は無いので “-“(ハイフン)を指定している。

[F]

アクセス禁止(403-Forbidden)の指定。

ボットトラフィックはアクセス禁止にする。

[L]

以降のルールを無視する。

今後、この下に RewriteCond を追加する事があってもボットトラフィックにはそのルールを適用する必要が無いのでこの指定をしている。

尚、[F]を指定すれば、”以降のルールを無視する” となるので L を指定する必要は無いのだが明示的に分かるように指定した。 

apache の再起動

.htaccess を修正して保存した後、以下のコマンドで apache を再起動する。

sudo service apache2 restart

その他

尚、正規表現はこちらのサイトで事前チェックをさせて貰ったが、とても助かっている。ありがたい。

この設定でしばらく様子をみたいと思う。

以上で、今回の記事は終了とする。

新たな除外先を追加

2022/07/17 追記

ここ数日、新たなボットトラフィックが発生するようになってしまったので除外するアクセス先を追加した。

  • trafficlabs.site
  • trafficpro.store

からの大量のアクセスがあった。

trafficlabs.siteとtrafficpro.storeからのアクセス

RewriteCond に OR 条件を追加して上記2つのアドレスを追加した。

RewriteCond %{HTTP_REFERER} bot(|-)traffic(|[0-9]{3})\.... [OR,NC]
RewriteCond %{HTTP_REFERER} trafficlabs.site [OR,NC]
RewriteCond %{HTTP_REFERER} trafficpro.store [NC]
RewriteRule .* - [F,L]
条件の追加
最後に

この記事が何処かで誰かの役に立つことを願っている。

尚、当記事中の商品へのリンクはAmazonアソシエイトへのリンクが含まれています。Amazonのアソシエイトとして、当メディアは適格販売により収入を得ていますのでご了承ください。

souichirou

やった事を忘れない為の備忘録 同じような事をやりたい人の参考になればと思ってブログにしてます。 主にレゴ、AWS(Amazon Web Services)、WordPress、Deep Learning、RaspberryPiに関するブログを書いています。 仕事では工場に協働ロボットの導入や中小企業へのAI/IoT導入のアドバイザーをやっています。 2019年7月にJDLA(一般社団法人 日本デイープラーニング協会)Deep Learning for GENERALに合格しました。 質問は記事一番下にあるコメントかメニュー上部の問い合わせからお願いします。

4件のフィードバック

  1. 通りすがり より:

    広告を開始した翌日に似たURLからアクセスが大量発生しており、検索してこちらに辿り着きました。
    対応方法を記載いただきありがとうございました。

    • souichirou より:

      通りすがり さん こんにちは

      似たようなアクセスを受けている人は結構居るのですね。
      コメントありがとうございます。
      お役に立てたようで何よりです。

  2. KIBEKIN より:

    お疲れ様です、以前の記事でコメント欄で情報提供したKIBEKINです。
    こちらでも.htaccessで正規表現を用いてbottrafficに対する拒否設定を行い、しばらく様子を見ていました。結果今日に至るまで、bottraffic(3桁またはなし).(不定トップレベルドメイン)のアクセスをアナリティクスで監視していますが、確認できていないので効果があるものと思われます。ただ、連続でリファラスパムをすると怪しまれるためにまだアクセスが来ないだけというのも否定できないため、現在も監視中です。
    私の方では、ここに書かれている情報を参考に.htaccessに以下の形で改良しました。

    RewriteCond %{HTTP_REFERER} ^http(s)?://(www\.)?bot(|-)traffic(\d)?(\d)?(\d)?\…. [NC]
    RewriteRule ^.*$ – [NC,F,L]

    おそらくこれでほぼ完全に防ぐことができると思います。リファラスパムは面倒なものですが、お互い頑張っていきましょう。以上、ありがとうございました。

    • souichirou より:

      KIBEKIN さん コメント&情報提供ありがとうございます。

      bottraficですが忘れた頃に来るようですね。
      自分の方も今の所、来ている様子は無いです。

      改良版の提示ありがとうございます。
      traficの後の数字の部分の正規表現での判断が上手いですね?
      この形だと桁数に縛られませんね。なるほど。

通りすがり へ返信する コメントをキャンセル

名前、メール、サイト欄は任意です。
またメールアドレスは公開されません。