Webデザイナーの小久保です。最近は昼休みに大通公園で鳩を見るのが癒しです。会社のすぐ近くが大通公園なんて最高すぎますね。
さて、晴れて弊社サイトをいじれるようになった僕ですが、Wordpressの管理画面を見ていてあることに気づきました。
随分アップデートされてないな。。。
メジャーバージョンが3つほど違うプラグインとかもゴタゴタ入っていて、こいつは結構やばめ。Web制作会社のホームページがアップデートされていないのはまずいでしょう。
「えー! Wordpressを定期的にアップデートするなんて常識でしょ(笑)」
幻聴が聴こえてきました。ただ、弊社を笑ってる人、本当に笑えますか? 外注でホームページを作ってもらって更新してたんだけど、担当者が外れてなんとなくそのままに。アップデート? しなきゃダメなの? みたいになってるところって日本全国無茶苦茶あると思います。
アップデートをしないとなぜ危険か
こんな記事が今年の初めぐらいに話題になりました。
WordPress4.7.0と4.7.1で重大なセキュリティホールが見つかり、任意の投稿内容が外部から書き換え可能になっているという話。任意ですよ? 固定ページとかも対象なんで、ECサイトなんかにフィッシングサイトのURLを紛れ込ませて偽のログインページに飛ばす、とかさせられたら完全にアウトです。そんな事をせずともjavascriptで強制的に飛ばしたらすごいでしょうね(それはすぐバレるか?)。ログインパスワード抜かれまくり、不正ログインされまくり、不正購入、顧客情報流出コンボで会社が飛びます。
いやいや、うちはECサイトじゃないし、顧客情報もない。そもそもアクセス少ないから大丈夫、とタカをくくってる皆様。弊社サイトのアクセスログをみてください。
1ヶ月でいろんな国から攻撃されております(笑) ひどいのになると24時間で2000回ブロックしてます。速攻IPブロックで永久にサイトに接続できないようにしましたが、札幌の小さなWeb制作会社のサイトでさえこうなのです。もっと攻撃されている会社なんてゴロゴロあるんじゃないでしょうか。フィッシングサイトのURLでも設置されたら信用ガタ落ちですよマジで。
なので、アクセス数の多寡ではなく、どのサイトも攻撃されうる可能性を持っているわけです。それを放置しているのは大変なリスクです。
と危険性がわかったところで、Wordpressのアップデートをしていきます。うちが4.7.0/4.7.1だったらマジで笑えないけど。
本記事の方法はすべてのケースについて有用だとは限りません。くれぐれも自己責任で実施のほどお願いいたします。万が一不具合が起こっても保障はいたしかねますのでご注意ください。
WordPressのVersionを確認
WordPressのバージョン表記はサーバーのコンソールにログインし、
/Wordpressインストール場所/wp-includes/version.php
に書いてあります。ひとまず確認してみる。
<?php
/**
* The WordPress version string
*
* @global string $wp_version
*/
$wp_version = '4.7.5';
4.7.5だった。。。まずは一安心。下記でリリース日を確認しても
リリース日は2017/5/16。わりと新しい。と言っても何が起こるかわからないので早急にアップデートしましょう。
(セキュリティホールの情報は拡散を防ぐために最低限の対策ができるまで秘匿されている場合がある)
プラグインを使ってバックアップする
アップデート前にバックアップをします。簡単にやるなら、All-in-one WP Migrationを使うのが理想。下記のサイトに使い方が動画で載っているので分かりやすい。
DBとソース含め全てを固めてローカルに保存できます。戻したい場合も管理画面からAll-in-one WP Migrationを選択、importを選んで固めたファイルを選べば簡単に戻すことができます。
ただ、これの悪いところはアップデート後にwp-adminの管理画面が開かなくなったら実行できないこと。例えばアップデートしたらなぜかサイト表示されなくなった、管理画面にも行けない! ってなったら最悪です。
(その場合はまた1からWordpressをインストールして、そこにWP Migrationで元データをimportするという面倒くさいことになる)
なので、WP Migrationプラス普通にバックアップもしておくのが良策です。
ソースファイルのバックアップをする
原始的だけれども、Wordpressのインストールフォルダ全部をtar.gzで固めておく
$ tar -zcvf バックアップ名.tar.gz WordPressのインストールフォルダ
もし何かあっても、問題のあるWordpressのフォルダをリネーム、このtar.gzを解凍すればまた以前のバージョンで動作する。
DBのバックアップをする
ただ、WordpressのアップデートはDBも変更する。たいてい後方互換を保ちながらDBは作られると思うが、ソースは前のバージョンだがDBが新しいみたいなのだと不具合が起こる可能性はゼロじゃない(管理画面が開けなくなるレベルの不具合がマジで起こる)。Wordpress本体はたくさんテストされている(はず)なのであれだが、無料のプラグイン群が何をやっているかは誰も分からない。そして不具合が起こっても怒る筋合いはない。なぜなら無料だから。
そのため、自衛のためにDBもちゃんとバックアップしておく。DBのバックアップ方法は公式が親切。
phpmyadminあたりを使って、wordpressのDBをバックアップ、何かあったらその.sqlファイルをphpmyadminからimportすれば、元のDBに戻る。
前のバージョンに戻すには
管理画面が開ける場合
All-in-one WP MigrationでimportすればDBもWordpressソース含め全部元に戻る。これが最もお手軽。
管理画面が開けない場合
WP Migrationが実行できないので、DBのバックアップをするでexportした.sqlファイルをphpmyadminなりでimportしてやる。その後、ソースファイルのバックアップをするのtar.gzを解凍して、戻してやれば全部元に戻る。そもそもWordpressが古すぎてWP Migrationが機能しなかった場合もこの方法で戻す。
アップデートを行う前に、パーミッション関係を確認する
WordPressを、さくらやロリポップなどレンタルサーバーの機能を使って自動インストールしている場合はたいてい問題ないが、自分でインストールした場合、たまにアップデート時にパーミッションでエラーになり、ひどいのになると中途半端に更新されて二度と管理画面が開けなくなる、みたいな事態が起こる(さっき起きた)。
僕が遭遇したのが、WordPressを実行しているユーザーと、Wordpressのファイルの所有者が違うケース。
まずはコンソールでWordpressが誰に実行されているか調べる。
$ ps auxw | grep httpd
apache 29955 2.2 8.1 405768 83276 ? S 10:02 0:04 /usr/sbin/httpd
Wordpressはapacheユーザーで実行されている。つまりWordpressはapacheユーザーの権限でしかファイルを書き換えられない。
次にWordpressのインストールフォルダがあるところに移動し、所有者を確認する。
$ cd wordpressのインストールフォルダの場所
$ ls -la
drwxrwsr-x 6 hoge tech 4096 7月 19 10:39 2017 WordPressのインストールフォルダ
hogeの部分がユーザー。つまりWordpressはapacheユーザーで動いているが、アップデートしようとしたら、hogeさんのフォルダをいじることになるのでパーミッションで怒られてアップデートに失敗する。そうならないために、Wordpressのインストールフォルダの所有者を下記のようにWordpressが動いているユーザー(この場合はapache)に変えておく。
$ sudo chown -R apache WordPressのインストールフォルダ
アップデートをしよう
ダッシュボードから更新を行っていきます。まずはWordpress本体をアップデート、その後サイト表示して問題ないか確認。それから1つずつプラグインを更新してはサイト表示で動作確認を行っていきます。ちなみにプラグインは
/wordpressインストール場所/wp-content/plugins
配下に一つずつフォルダ分けされて入っています。プラグインをアップデートする前にここをtar.gzでバックアップしておき、何か致命的なことが起きたら、tar.gzを解凍してフォルダを配置すれば元に戻せます。ただDBが変わってて不具合が起きる可能性もゼロではないので、にっちもさっちもいかなくなったら、おとなしく前のバージョンに戻すにはで戻しましょう。
そんなこんなで弊社サイトもアップデート完了
気持ちがいいね!
テーマのアップデートはどうすべきか
無料テーマや有料テーマをカスタマイズして利用している企業も多いんじゃないでしょうか。テーマの困るところは、ソースファイルを直に触ってカスタマイズしていた場合、アップデートするとそのカスタマイズが消えます。子テーマでカスタマイズすればうまくできるとの話ですが、この辺はまだやったことないので今度勉強してみようと思います。なので今はテーマのアップデートはしません。
(そんなテーマは滅多にないと思うけど、テーマ上でDBを直接いじってたりするとそこに脆弱性が見つかった場合に突かれる可能性も? なきにしもあらず?)
おまけ オリジナルテーマを作っちゃえばいいのでは?
僕は個人的には自社サイトのテーマぐらいは自作しよう! と思っている人間です。ドットインストールのこの辺りを見れば、簡単なやつであれば作れます。ただデザインがねえ。困っちゃいますよねえ。そんな時は? アールズでもWordpressのオリジナルテーマ作成できますので気になった方はこちらまで。(お後がよろしいようで)