海外からWordPressにイタズラされるので、不正アクセス対策をしました。

ドーモ、読者=サン。さくらい(@sakutomo0615)です。

先日、私がWordpressのテーマ改修&テスト用のサーバーが海外から攻撃(?)を受けました。

かなりムカついたのと、これは皆さんにも注意&対策をしておいてもらわないとイカンなと言う事で、顛末を記事にしてみたいと思います。

あらすじ

WordPressの改修をやっていた経緯

去年くらいからとある病院のWebサイトをWordpressに切り替えると言う事で、テーマのデザインやらカスタマイズやらjQueryの積み込みとかを委託でやっておりました。

ちょうどインドのグルガオンに留学していた時期だったんですが、サーバーは予めIDCフロンティアのクラウド上に作っておいたので、インドからリモートで作業をやっていたんですよね。

良いよね?IDCフロンティア♪

月500円くらいでお手軽にテスト用サーバーが作れるので、いつも重宝しております。

もう半年くらい前に作ったサイトなので、あとはエンドユーザーの確認待ち&本番サーバーへの移行を残すのみとなっております。

何かちょいちょいMySQLが止まるんだけど?

まぁ、決まった人間しか使わないサーバーだったので、数ヶ月に1〜2回くらいの頻度でMySQLが停止すると言った事はありました。気が付いたら、その都度リモートでログインして、サービスを手動で起動してたんですが、最近MySQLが停止する頻度が激増したんですよね。

 

もうじき使わなくなるサーバーなので、どうしようかと思ったんですが、いちいちログインしてサービスを起動するのも面倒だったので、シェルスクリプトを書いて自動再起動を設定しておきました。

スクリプトはこんな感じです

cronで15分に1回サービスのステータスを監視。

/etc/init.d/mysqld status |grep “pid” で戻りが0ならステータスOKをログに記述。

1ならサービス再起動でログに記述

と言う、オモチャみたいなスクリプトですがね(笑)

 

サービス監視し始めたら、今度はOOM Killerされまくるんだけど?

ここでようやく『何か不正アクセスされてんじゃね?』って事に気がつきます。(気づくのおせーよw)

いくつかログファイルを見ると、どうやらxmlrpcにDoSっぽいアクセスを受けているようです。発信元の国は中国でした。(またかよw)

もうそろそろデータセンター関係者の頭を悩ませる『靖国神社の季節』ですからね。

最近は落ち着きつつあるんでしょうけど、3〜4年前なんかは『首相が靖国神社に参拝するか?』みたいなニュースが流れると、どういうワケかレフトスタンドの方々を支援してる国からの怪しげなアクセスが大増量になります。

 

海外不正アクセスを遮断すべきファイルは?

WordPressのセキュリティー対策をするにあたって、1番狙われやすいのがwp-cron.phpxmlrpc.phpです。それとwp-login.php(ログイン画面)ですね。

この3ファイルが一体何に使われているのかを説明しておきます。

wp-cron.php

予約投稿やテーマの自動アップデートを定期的にチェック、E-Mail通知などのスケジューリング機能を制御しています。

まぁ、完全に無効化しても良いのですが、少なくとも海外からこのファイルにアクセス出来る必要は全くありません。

 

xmlrpc.php

これはWindows LiveWriterのようなブログエディターを使っている人は無効化するワケにはいきませんね。

外部のブログエディターが記事データの更新を送信する際に必要となるファイルです。ただし、『海外からアクセスするのか?』って言うと、そんな事はないのでこのファイルこそ海外不正アクセス防止の対象にしておきます。

 

wp-login.php

wp-login.phpはご存知ログイン画面の実行ファイルです。辞書攻撃(adminアカウントとかで、アカウントとパスワードを何度も高速でトライ&エラーを繰り返して、Wordpressの乗っ取りを試みる)の標的になりやすいファイルです。当然ですが、海外在住者がWeb管理画面にログインする必要がないのなら、このファイルも海外不正アクセスの防止対象にしておきましょう。

 

今回はこの3ファイルに対して、海外からのアクセスを禁止します。

(逆に言うと、日本のIPアドレス以外のアドレスからのアクセスを禁止とします)

 

セキュリティ対策時のデメリットと注意点

ae35aa66eb5c3a6fa97a90e7880e2835_s

さて、海外からの不正アクセスを遮断するワケですが、何でもかんでも遮断をするワケにもいきません。

  1. GoogleやBingのクローラーは海外にあるので、全てのファイルで海外アクセスを遮断してしまうと、SEO的に非常にマズいです。(なので今回は3ファイルに絞りました)
  2. ①とも関連しますが、海外に居住している人も日本のWebサイトやブログは見ます。なので、記事は普通に読めるようにしておかないといけません。
  3. 海外旅行に出かけた際には、Web管理画面とxmlrpc(ブログエディター)を遮断している事を覚えておかないといけません。(さすがにこれは大丈夫だと思うけど)

 

対策手順

方法は至って簡単です。こちらの行を.htaccessに追記すればOKです。

この.htaccessは何か?と言うと、日本以外の国のIPアドレスから3ファイルへのアクセスを遮断しています。

日本国内のIPアドレスのみアクセスを許可しています。ちょっとアクセス制限としては緩いですが、海外からのイタズラの方が圧倒的に多いので、これでも十分に機能はします。

コピペはこちらからどうぞ(GitHub)

これを施して以降は、私の開発テスト用サーバーのMySQLも止まらなくなりました。

めでたしめでたし・・・(^O^)/

 

 

参考としたWebサイトたち

海外からのアクセスを制限する方法 | ヘテムルブログ

WordPressのセキュリティ対策 xmlrpc.phpとwp-cron.phpの無効化 | モバイル・スマホ対策のSEO塾.com

ABOUTこの記事をかいた人

櫻井智行

ネットワーク・サーバー系のフリーのインフラエンジニア。得意分野はデータベース・ネットワーク・負荷分散あたりです。30歳の頃に独立しましたが、それまでに巻き込まれた様々なデスマーチと火消しの実績からトラブルシュート案件ばかりが依頼される様に・・・。 ビットクリア設立後は趣味の炎上・デスマーチ観察を軸にデスマーチソムリエとして小田原市・東京を中心にグローバルに活動中。