不要なロボット巡回と不正アクセスへの対策

ボチボチと当サイトのアクセス数が増えてきましたが、
招かざる客も混じってる事に気がつきました。

そのお客は無駄にサーバーの負荷を上げていたので、
その対策を行いました。

備忘録として方法を残しておきます。

サーバーの負荷が急上昇

サーバー負荷上限の目安を超える値を
何度か記録してしまいアワアワ^^;

生ログを見てると何これ?ってアクセスが沢山ありました。

とりあえずこれは要らないと思う巡回ロボットからのアクセスを
ピックアップ。

それと脆弱性が発見されたプラグイン『Yuzo-Related Posts』を狙ったアクセスや(当サイトでは不使用です
ログインを試みるアクセス(当サイトでは通常のログインURLを変更しています
スパムコメントを残そうとしている感じのアクセス(日本語の無いコメントは弾いてます
などのIPをピックアップしてみました。

IP検索すると国別ではロシアが多かったです。
あとはフランス、ウクライナ、中国。

とりあえずアクセスできないように、
.htaccessファイルを編集してみます。

.htaccessファイルの編集

ファイルの先頭に下記のコードを書いてみました。


SetEnvIf User-Agent "AhrefsBot" bye_bot
SetEnvIf User-Agent "bidswitchbot" bye_bot
SetEnvIf User-Agent "BLEXBot" bye_bot
SetEnvIf User-Agent "GrapeshotCrawler" bye_bot
SetEnvIf User-Agent "integralads" bye_bot
SetEnvIf User-Agent "jet-bot" bye_bot
SetEnvIf User-Agent "Linguee" bye_bot
SetEnvIf User-Agent "ltx71" bye_bot
SetEnvIf User-Agent "Mappy" bye_bot
SetEnvIf User-Agent "MegaIndex" bye_bot
SetEnvIf User-Agent "MJ12bot" bye_bot
SetEnvIf User-Agent "proximic" bye_bot
SetEnvIf User-Agent "SemrushBot" bye_bot
SetEnvIf User-Agent "SeznamBot" bye_bot
SetEnvIf User-Agent "SMTBot" bye_bot
SetEnvIf User-Agent "trendictionbot" bye_bot
SetEnvIf User-Agent "Yandex" bye_bot
SetEnvIf User-Agent "YandexMobileBot" bye_bot
#SetEnvIf User-Agent "Cloudflare-AMPHTML" bye_bot

<RequireAll>
    Require all granted

#弾きたいIPに応じて増やす
    Require not ip  xxx.xxx.xxx.xxx

#bye bye BOT
    Require not env bye_bot

</RequireAll>

あまり馴染みの無い(私だけ?
ロボットは弾く対象にしました。

Yandexはロシアの大手検索エンジンの様です。
今回ロシアからの不要なアクセスが多かったので、
巡回ロボットを弾く対象にしてみました。

巡回ロボットではありませんが、Cloudflare-AMPHTMLから
何故か同じURLに5秒毎くらいでアクセスがあるので、
これも弾く対象にしました。
AMPページのキャッシュを残す巡回だったら、
違うURLにアクセスするはずですよねぇ・・・
これ何でしょうねぇ^^;
(確実では無いので上記ではコメントアウトしてます。

対策後は

相変わらずアクセスはありますが、
アクセスしても403扱いなので、
CPUの負荷率は半分以下に低下しました。

怪しいIPは弾く対象に日々追加してますが、
これはイタチごっこですねぇ。

最近は生ログチェックが日課となってしまいました。
おかげで時間とられてます^^;

何とかならんかねぇ・・・

追記

Cloudflare-AMPHTMLからの連続アクセスは
やっと納まりました。
同じURLにまだ1日に何度かやってきますけどね。
弾く対象から一旦外しても良いのかな。

それとマメに不正アクセスのIP追加していますが、
リクエスト数が激減しCPUの負荷率も低い値で安定しています。

生ログ見てるとアクセス方法がある程度同じで、
不正アクセスのテンプレでも出回ってるのかなって印象です。

追記2

怪しいIPですが、ほとんどの場合は同一IPで再度アクセスする事は無い感じです。
変わっている場合が多いです。
そのためIPを個別に設定しても徒労に終わる可能性大です^^;

アマゾン ウェブ サービスからのアクセスが異常に多いのと、
(AWSからのアクセスはIPがコロコロ変わるので絞りきれません)
不可解な行動が多いアクセス源のIPは共通のホストだったりしたので、
ホスト指定で弾く指定をしてみました。


    Require not host amazonaws.com
    Require not host clients.your-server.de
    Require not host kyivstar.net

前記のIPで弾くコードの前後に入れればOKです。
さてどうなるかな。

追記3

IFTTTを利用して、ブログの更新時にツイッターなどへ
勝手に更新情報を飛ばすようにしています。

が、IFTTTはAmazon AWSを使ってアクセスしてました。
なので上記コードでAWS拒否していると、
IFTTTの自動更新が出来ない^^;

ユーザーエージェントにcurlが含まれるアクセスが、
IFTTTからのアクセスっぽいのですが、
これだけ許可するってのが、どうも上手くいかない・・・

あとFeedlyもAWSからのアクセスをしているため、
弾いてますが、
それ以外にも固定IPからのアクセスもあるので、
こっちは大丈夫?

追記4

AWSからのアクセスは解放しました。
数日チェックしてますが、今のところ負荷率が上がること無く順調。

Broken Link Checkerと言うリンク切れをチェックしてくれる
プラグインを停止させると
さらに負荷率は下がりました。

追記5

Qwantと言うクローラーが目立ってきたので、
こちらも一旦拒否扱いにしました。

ユーザーエージェントはこんな感じです。

Mozilla/5.0 (compatible; Qwantify/Bleriot/1.1; +https://help.qwant.com/bot)

相変わらず負荷率は低い値で安定しています。

是非フォローしてください

最新の情報をお伝えします

やーまん
  • やーまん
  • 山奥に移住し、自然に囲まれ暮らしています。
    日々の事で感じた事や考え方などを備忘録として残しています。

コメントする

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

CAPTCHA


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