amazonaws.comからの大量スパムをブロックする方法【知っておいたほうがいいサーバー対策・続編】

前回の続編です。追記として書いた部分が長くなったので、別記事にしました。2月20日&22日追記しました。

amazonaws.comからの大量アクセスが、スパムだったのでブロックした話【知っておいたほうがいいサーバー対策】

 

被害の実態(再掲):約一日半だけで218アクセス…しかも複数のサーバーから分散アクセス…

2018/2/1午前0時~2/2 午後2時までの集計
アクセス解析画面
↑「その他のIPアドレス」もすべてamazonaws.comからのアクセスです。

↓詳細なので上記と重複しますが、こんな感じで延々とアクセスが・・・。
アクセス解析画面
アクセス解析画面
↑時間もバラバラ、数も数なので、人間ではなく機械(アプリケーション)によるアクセスですね。

 

前回も書きましたが、amazonaws.comはAmazonが行っている(主に企業向けの)レンタルサーバー等のサービスです。なので、通販会社のAmazonさんがアクセスしているわけではありません。

問題は、amazonaws.comの利用者の中に、IPアドレスを偽装するために利用したり、大量のスパムアクセスに使う人がいることです。

たとえば、Twitterに投稿されたページを大量に検索し、色んなサイトから少しずつコピーして、コピーサイトを作るのに使われていると言われています。このことは以前から指摘されてきました(詳細は前回)。

実は心当たりがありまして、どうやら海外で、当サイトの一部のように見せかけて勝手にページを作っては、検索にかかる頃には消している節があります。

というのも、GoogleのSearch Consoleのエラー画面に出てくるのは、作成した覚えのない記事名ばかりです。どれもブランドの靴や洋服名ですよね。

search console

↓スマホでも読めるよう、文字起こししてみました。

 1
lauren-ralph-lauren-esterman-boots-shoes-black-womens
404
最終検出18/01/31
 2
ralph-lauren-womens-pink-buttondown-sweater-in-small/
404
18/02/02
 3
roxy-shore-break-bandeau-top-black-bone
404
18/01/29
 4
prada-sports-leather-sneakers-shoes-for-women-prw42
404
18/02/02

 

いずれにせよ、サーバーに不当な負荷がかかるため、個人サイトにとっては迷惑でしかありません。実際にブロックする方法を色々試してみたので、今回はその方法を一挙掲載します。

※国内サイトでは網羅的な情報があまりなかったのと、サーバーによって記載方法が異なることが確認できたため、情報を補足し、一部書き直しました(2018年2月6日)。2月20日・22日さらに追記しました。

 

1.海外サイトの情報+補足

(1)記載例1:RewriteEngineで記述(mod_rewriteが有効なサーバーの場合・mixhost)

海外サイトの情報(これでamazonaws.comからのアクセスが止まった!との報告あり・ただし2009年2月の情報)をもとに、2018年現在の.htaccess(強力なやつ)を書いてみました。該当者は403エラー(アクセス禁止)になります。

RewriteEngine On
RewriteCond %{HTTP_REFERER} ^http(s)?://.*amazonaws\.com [NC,OR]
RewriteCond %{REMOTE_HOST} ^.*\.compute-1\.amazonaws\.com$ [NC,OR]
RewriteCond %{REMOTE_HOST} ^.*\.compute\.amazonaws\.com$ [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^AppEngine-Google [NC]
RewriteCond %{HTTP_USER_AGENT} ^Wget[NC]
RewriteRule ^(.*)$ - [F,L]

※amazonaws.comのURLがhttps、httpどちらでも対応するよう書き直しました。compute-1.amazonaws.comcompute.amazonaws.comからのアクセスをはじくよう、書き直しました。

※この他にブロックしたいものがあれば適時追加して下さい。(記載例:同様に悪用されているGoogleAppEngineとWgetをブロック)

RewriteCondで始まる行の最終行は、[NC]で締めくくるのがポイントです。

▼具体的な手順は下記の記事が大変参考になります。
しつこくアクセスしてくるBotからのアクセスを拒否する方法(MJ12Bot編)|Wordpress初心者な技術屋の忘備録

 

なお今回参考にさせていただいた海外サイトの記述はこちらです(2009年2月記事)。

▼Block amazonaws.com with .htaccess?
https://www.webmasterworld.com/webmaster/3848988.htm

RewriteEngine On
RewriteCond %{HTTP_REFERER} ^http://.*amazonaws\.com [OR]
RewriteCond %{REMOTE_HOST} ^.*\.compute-1\.amazonaws\.com$ [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "AISearchBot" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "woriobot" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "heritrix" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "NetSeer" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "Nutch" [NC]
RewriteRule ^(.*)$ - [F]

補足:GoogleAppEnginのブロックについて海外サイトの情報

How to block Google App Engine?およびUser agent DB

RewriteEngine on 
RewriteCond %{HTTP_USER_AGENT} ^AppEngine-Google [NC]
RewriteRule ^(.*)$ - [F,L]

 

(2)記載例2:さくらインターネット、スターサーバーの場合[スターサーバーのようなApache2.4.x のサーバーはこれが効きます]・・・補足

SetEnvIf Referer "http(s)?://.*amazonaws\.com" deny_ua
order allow,deny
allow from all
deny from env=deny_ua

前回ご紹介した記述(order deny,allow
deny from .amazonaws.com)で効かない場合は、この方法か、次項に記載するIPブロックが確実でした。

後日確認したところamazonaws.comとしてではなくIPアドレスでアクセスしてくる場合があったので、IPブロックと併用することをお勧めします。

下記のように複数記述することもできます。(参考:htaccessでSetEnvIf:ディレクトリを跨いでも有効。正規表現や複数のor条件をまとめる

SetEnvIf Referer "http(s)?://.*amazonaws\.com" deny_ua
SetEnvIf User-Agent "^(AhrefsBot|AppEngine-Google|FeedWordPress|MJ12bot|YodaoBot|Wget)" deny_ua
order allow,deny
allow from all
deny from env=deny_ua

ただし、数が多くなるとサーバーに負担がかかり500エラー(内部エラー)が発生しますので、ご注意を!

実験:月額1000円未満のサーバーで、3サイトそれぞれに、SetEnvIfを30ほど複数記述でまとめてみたところ、どのサイトも500エラーになりました。

サーバーのスペックにもよりますが、最初は5,6個程を、まとめ記述ではなく、原則通り一つずつ書いて様子見するのが確実です。

 

2.IPブロック!

サーバーによっては、ドメインでのブロックができない場合があります。そのときはこちらを試してみてください。アクセス解析を見ると・・・

例:ec2-52-203-149-159.compute-1.amazonaws.com

この52-203-149-159が、実はIPアドレスなのです。(52.203.149.159)
参考:https://qiita.com/yKanazawa/items/db6627a999bbfdd8d10b

amazonaws.comをはじくと、後日amazonaws.comとしてではなくIPアドレスでアクセスしてくる場合が確認できたので、確実にブロックしたい方は、アクセス解析でamazonaws.comのIPアドレスを控えておいて、IPブロックすることをお勧めします。

私の場合、アクセス解析でよくよく見ると、「52.203.」で始まるものがちらほら。しかも「52.201.」、「52.202.」と連番になっていました。

52.203.***.***をすべてブロックするには、下記のように.htaccessに記述します。

order deny,allow
deny from 52.203.0.0/16

※「52.203.***.***をすべて含む範囲」=52.203.0.0- 52.203.255.255=52.203.0.0/16
※ 52.203.0.0 – 52.203.255.255(IPアドレス)から52.203.0.0/16(サブネットマスク)への変換は、ネットマスク変換スクリプトを使うと便利です。

後はこんな感じで、残りを書きます。(実際に遭った数の三分の二程度を書いてみました。「こういう、おかしなアクセスはやめましょう。」ということで。)

order deny,allow
deny from 52.201.0.0/16
deny from 52.202.0.0/16
deny from 52.203.0.0/16
deny from 52.205.0.0/16
deny from 52.207.0.0/16
deny from 54.82.0.0/16
deny from 54.83.0.0/16
deny from 54.84.0.0/16
deny from 54.85.(以下省略)
deny from 54.86.
deny from 54.88.
deny from 54.89.
deny from 54.92.
deny from 54.144.
deny from 54.145.
deny from 54.146.
deny from 54.147.
deny from 54.152.
deny from 54.157.
deny from 54.158.
deny from 54.159.
deny from 54.160.
deny from 54.161.
deny from 54.162.
deny from 54.164.
deny from 54.165.
deny from 54.166.
deny from 54.172.
deny from 54.173.
deny from 54.174.
deny from 54.175.
deny from 54.183.
deny from 54.197.
deny from 54.198.
deny from 54.199.
deny from 54.204.
deny from 54.205.
deny from 54.208.
deny from 54.209.
deny from 54.210.
deny from 54.211.
deny from 54.221.
deny from 54.226.
deny from 54.227.
deny from 54.234.
deny from 54.236.
deny from 54.237.
deny from 54.242.
deny from 54.250.
deny from 75.101.0.0/16
deny from 107.20.0.0/16
deny from 107.21.0.0/16
deny from 107.22.0.0/16
deny from 107.23.0.0/16
deny from 174.129.0.0/16
deny from 184.73.0.0/16
deny from 204.236.0.0/16

海外から、こんなのがたくさん送られてきたら、たまったもんじゃないですね。サーバーの裏側ではこういうこともあるということで、何かのときの参考にしていただければ幸いです。

 

3.付録:役に立つサイト

IPアドレス⇔ホスト名の検索
https://www.iphiroba.jp/(IPひろば)
たとえば、52-203-149-159と入力すると、ec2-52-203-149-159.compute-1.amazonaws.com と教えてくれます。逆引きも可能です。

ネットマスク変換スクリプト
http://www.geocities.co.jp/SiliconValley/7695/mask.html
IP アドレスの範囲を入力するとサブネットマスクに変換してくれます。
例:192.244.0.0 – 192.244.255.255 →192.244.0.0/16

ボットやクローラーの場合:悪質なものかどうかを判定してくれるサイト
https://www.distilnetworks.com/bot-directory/category/crawler/
海外サイトです。「Search the Bot Database」の箇所に入力すると、Good Bot(緑色)かBad Bot(赤色)か表示してくれます。

http://code.w3l.se/useragents/block.php(User agent DB)
「Blocklist」も列挙した海外のデータベースサイトです。サーバーにアクセスしてくるボットやクローラーが何なのか、検索しても日本語の情報が出てこないとき、放置しておいてもいいのか判断がつかないときに、参考になります。

 

こんな記事も書いています。

▼姉妹記事:GoogleAppEngine・FeedWordPressを悪用したコピーサイトの作成防止…mixhost、さくら、スターサーバーで検証済み

初めてのワードプレス(15)画像の直リンク禁止と自動コピーサイト作成阻止法(.htaccessで出来る盗用対策)

▼前回記事

amazonaws.comからの大量アクセスが、スパムだったのでブロックした話【知っておいたほうがいいサーバー対策】

 

にほんブログ村 写真ブログ 地域の歴史文化写真へ にほんブログ村

滋賀県ランキング



コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)