security

WordPress の改ざん原因と対策

WordPress で最も重要な改ざん対策

WEB サイトを改ざん被害から守る方法

WordPress

「 WordPress の改ざん対策を WordPress Codex やその他サイトを参考に構築したが改ざん事故に遭った」とご依頼を受け点検すると、的を射ていない対策を行っていたなんてこともあります。なお、WordPress の改ざん対策は、WordPress Codex(公式オンラインマニュアル)に詳しく書かれており、これ以上に網羅された情報はないでしょう。改ざんの入口をさまざまな角度から防ぐ内容になっており、量、質ともにとても優れています。

ところが情報量が多いというのはその反面で、見る側の知識や判断力が求められます。もちろん、そもそも論としてテクニカルな話でもあります。そしてセキュリティに明るくない限り、優先順位と言いましょうか、解釈の違いが生まれてしまうことも。そこでもし重要なポイントを勘違いしてしまったら、堀のない城を建てるようなものです。落城は時間の問題です。ここはバイブルと言える情報があるのにもったいないことです。

ちなみに多層防御も含めて考えれば WordPress の改ざん対策は非常に多くなりますが、もっとも重要なのは、ログインパスワード、バージョン、テーマ及びプラグインの信頼性、PC ウイルスです。なお、phpMyAdmin は WordPress とは別物ですが、こちらのバージョン管理も重要です。そしてこれらの対策が弱かったり、抜けていれば、その他の対策を行っていても改ざん被害は時間の問題です。的を射ていない対策になってしまいます。

そこで WordPress を守る第一の壁と言いましょうか、最も重要なサイト改ざん対策をご説明します。なお、その他の対策(増強や次の壁といった多層防御)については別のコラムにし、解釈の違いが起きないよう体系的に整理していきます。

改ざん時の復旧方法については WordPress 改ざん時の復旧方法WordPress 改ざん事故でパスワードクラックされたかを調べる方法 もぜひご確認ください。

WordPress の改ざん原因と対策

改ざんの入り口になる主な原因は、「 1. ログインパスワード」、「 2. WordPress やテーマ、プラグインのバージョン」、「 3. テーマ、プラグインの信頼性」です。また WordPress ではありませんが WEB サイト全体で捉えれば「 4. PC ウイルス」、「 5. phpMyAdmin 」も重要です。そしてこの 5 項目の対策が WordPress 改ざん対策の肝になります。そしてこれらの対策が弱かったり、抜けていれば、的を射ていない対策になってしまいます。

また WEB サイトを含めてサーバ全体で捉えると、Linux( OS )や Apache、PHP、Perl といった Web サーバ、Plesk、cPanel といったコントロールパネルも大変重要です。そしてレンタルサーバであればこれらの管理はサーバ会社で行いますので、事故などが多い場合はサーバ会社を乗り換えるなど見直してください。放置することなく定期的に評価することが大切です。

なお、その他の対策(増強や次の壁といった多層防御)については別のコラムにし、解釈の違いが起きないよう体系的に整理していきます。ここでは WordPress の最も重要な改ざん対策をご説明します。

1. ログインパスワード

パスワードクラックによる事故はとても多いです。乱暴な方法ではありますが、数字や辞書などランダムにログインを試みてパスワードが一致するまで繰り返します。そんな面倒なことをする人間がいるのか? と感じるところですが、プログラミングによる方法のため仮に 1 年かかってもハッカーに負担はありません。ちなみにログインされてしまうと、アクセスログに「 wp-settings-time 」の記録が残ります。改ざん事故が発生した場合はこの値があるかを確認し原因を切り分けます。またその他のパスワードクラックとして、どこかのサイトで登録した ID、パスワードが漏えいし、それでログインを試すケースもあります。

そこで対策としては、WordPress 専用のログイン ID とパスワードを設ける。またパスワードだけではなく ID も強力なものにし、表示名を変える。admin アカウントは削除する(削除する際は「すべての投稿を以下のユーザーにアサイン」で別のユーザーに記事を引き継いでください)。これでほとんどのパスワードクラック事故は防げますが、さらに通信経路上の事故も含めて予防すればより安全です。IP アドレスによるアクセス制限と https による認証も行います。

アクセスログログインが成功するとアクセスログに「 wp-settings-time 」の記録が残ります。ユーザー名もわかります。画像は admin アカウントです。
すべての投稿を以下のユーザーにアサインadmin アカウントで記事を書いている場合は「すべての投稿を以下のユーザーにアサイン」で別のユーザーに記事を引き継いでください。
Basic 認証wp-admin ディレクトリに .htaccess を設置する。IP アドレスが固定ではない場合、Basic 認証でも良いでしょう。
define('FORCE_SSL_LOGIN', true);https 認証は wp-config.php に「define('FORCE_SSL_LOGIN', true);」を追記します。サーバ設定によっては url を指定するなど、チューニングが必要になることもあります。

2. WordPress やテーマ、プラグインのバージョン

WordPress やテーマ、プラグインのプログラムに欠陥が発見されれば、修正され配信されます。そして古いバージョンのままで運用すると、欠陥を抱えたままであり改ざんの入り口になります。ちなみに当社サイトのアクセスログを見ると「 timthumb.php 」の記録が多くあります。これは過去に脆弱性のあったものですが、そういうファイルが在る無し関係なく、プログラムで無差別に攻撃しています。こちらも数うちゃ当たるの世界です。もし存在するなら… 事故発生です。

たとえば、画像などをアップするときは WordPress の管理画面にログインしそこで作業します。ところがもし管理画面にログインしなくても画像をアップできてしまう欠陥があるなら… 改ざんするためのプログラムをインストールし放題です。またプログラミングの処理でコマンドを挿入できてしまうような、クロスサイト○○脆弱性や○○インジェクション脆弱性がある場合も、コマンドを送りつけて改ざんされてしまいます。

そこで対策としては、WordPress やテーマ、プラグインのバージョンを最新にします。改ざんされてしまう欠陥がなければ、もちろん改ざんはできません。

WordPress 管理画面更新が必要なときは該当件数が表示されます。画像は最新の状態のため件数が表示されていません。

3. テーマ、プラグインの信頼性

既にある優れたプラグインを加工したり、プログラムの一部として取り込むなど、既存のプラグインを使い回しているケースもあります。たとえば上記「 timthumb.php 」も実は、いろいろなプラグインで使い回していて問題になりました。利用者側は組み込まれていることを知らないのですから、事故に遭うまで存在に気付きません。

そして大前提としては、うかつなインストールはリスキーです。特にプラグインについては、たくさん入れているケースをよく見かけます。本当にその機能が必要かどうか、また信頼性についても調べた上でインストールするかを判断してください。

対策としては、アップロードしたときに整形してくれたり、コメントの拡張機能といった「情報やデータを受け付ける」入力系プラグインは本当に必要であるか確認してください。そしてインストールするのであればソースを確認します。もしソースを確認できない場合は利用しないことがベストです。どうしてもという場合は、「利用者数が多い」、「不具合が見つかればバージョンアップしている」といった信頼性を徹底的に調べてください。なお、twitter や Facebook のいいね!ボタンやサイトの表示を整えるような出力系のプラグインはあくまでも出力であり受け付けないので問題ありません(ただし、機能とは関係のないソースも含まれていたらアウトですので利用者数の多さくらいはチェックしてください)。ちなみにプラグインの機能によっては php ファイルを叩かれないように制限するという方法もあります。

4. PC ウイルス

FTP アカウント情報がウイルスによって漏えいし、FTP 経由で改ざんされてしまう事故もあります。ちなみに FTP でログインされてしまうと、xferlog や ftp.log (レンタルサーバによって名称が変わる)、コントロールパネルに自分以外の IP アドレスが残ります。ちなみに改ざん事故が発生した場合は、FTP からの改ざんなのかを確認し原因を切り分けます。

対策としては、パソコンのウイルス対策をしっかり行います。またウイルスはパソコンから出ていく通信を監視し、FTP であれば漏えいします。そこで FTP 通信を暗号化する SFTP を使うとさらに安全です。なお、通信経路上の事故も含めて考えれば FTP は使わないほうが良いでしょう。

5. phpMyAdmin

phpMyAdmin は、WordPress とは直接関係しません。しかし、WordPress で使うデータベースを管理するソフトです。そのため、メンテナンスなどで導入しているケースもあります。phpMyAdmin は過去のバージョンで致命的な欠陥があり、そのバージョンを狙った攻撃が非常に多くあります。

対策としては、もし phpMyAdmin を使っている場合はバージョンアップして最新のものを使ってください。導入時だけ使っていて、今は使っていないという場合は削除してください。