前回の記事では、初心者の方でも今すぐできるワードプレスのセキュリティ対策をご紹介いたしました。
しかし、まだ100%安全とは言い切れません。不正行為をする人間は、常にセキュリティを掻い潜ろうとします。セキュリティ対策に終わりはありません。
ただセキュリティ対策の中には、初心者の方には難しい作業もあります。失敗するとサーバーにアクセスできなくなり、ブログの編集などが行えなくなってしまう場合もあります。
まずは前回の記事を実践していただいて、今回の記事はできそうな範囲で行ってください。
前回の記事にも記述していますが、バックアップを取っていればもし失敗しても元に戻せる可能性が高くなります。今回の作業も含め、ブログに何らかの変更をするときは、まずバックアップをとる習慣をつけておきましょう。
ということで、ワードプレスのセキュリティ対策中級編を解説していきます。
ログインページのURLを変更する
前回の記事でログインページへのリンクを削除しました。しかし、まだ安全とは言い切れません。
ワードプレスのログイン画面のURLはデフォルトで「ブログURL/wp-admin」となっていて、これはワードプレスを長く利用している方であれば誰でも知っています。
もちろん、不正行為を行うハッカーも同じです。いくらサイトからログインページへのリンクを削除しても、URLを知られてしまえば関係ありません。
ということで、このログインページのURLも別なものに変更しておきましょう。
この作業には、「Login rebuilder」というプラグインを使用します。
※プラグインのインストール方法はこちら
インストールが完了したら、管理画面左メニューから「設定」→「ログインページ」をクリックしてください。

Login rebuilderの設定画面が表示されます。

「新しいログインファイル」の項目で新しいログインページ用のファイルを作ります。インストールしたてのワードプレスはこれが「wp-admin.php」となっているので、違うものに変えましょう。
今回は例として「matsumasa-login.php」とします。
続いて下にスクロールさせると、「ステータス」と「ログ保存」という項目があります。「ステータス」は「稼働中」、「ログ保存」は「すべて」にチェックを入れて「変更を保存」をクリックしてください。

データベースのプレフィックスを変更する
「データーベースのプレフィックスを変更する」と聞いても、どういうことなのか分かる方は少ないと思います。
プレフィックスとは日本語訳すると接頭辞という言葉になります。
接頭辞と言われても、正直聞きなれないですよね。例えば、
03-1234-5678
という電話番号があったとします。この番号の「03」、つまり市外局番が接頭辞「プレフィックス」です。このように、先頭に付く文字列がプレフィックスと覚えてください。
初期状態のワードプレスでは、データーベースのあらゆるテーブル(データを格納している部分)に「wp_」というプレフィックスが付いています。「wp_posts」「wp_users」などです。
このままの状態では「wp_」を辿って、重要な部分に不正アクセスされてしまう危険性があります。それを防ぐためにデフォルトの「wp_」から変更するというのが、この工程の意義です。
少し難しい作業ですが、一つずつ解説します。
- 「wp-config.php」を編集する
- データベースのテーブル名を変更する
- 「options」「usermeta」内の項目を変更する
1.「wp-config.php」を編集する
前回の記事でも触れましたが、「wp-config.php」というファイルにはワードプレスの様々な情報が記載されているファイルです。くれぐれも編集には気をつけましょう。事前にバックアップは必ず取っておきます。
wp-config.php内の「$table_prefix = ‘wp_‘;」という記述を見つけてください。大体70行あたりにあるはずです。
この「wp_」の部分がプレフィックスを指定している部分なので、これを別なものに変更しましょう。今回は例として「wp_change_」としておきます。wp-config.phpの編集は完了です。
2.データベースのテーブル名を変更する
データベースの変更は、「phpMyAdmin」というツールを使用します。こちらは新たにダウンロードやインストールは必要なく、エックスサーバーからアクセスすることが可能です。
エックスサーバーのサーバーパネルにアクセスしたら、「データベース」→「phpmyadmin(MySQL5.7)」をクリックします。
(バージョンは違う場合があります。)

クリックするとユーザー名とパスワードを要求されます。このユーザー名とパスワードは、先ほどのwp-config.php内に記述されているのでコピーしましょう。wp-config.php内の、
define(‘DB_USER’, ‘(ユーザー名)’);
/** MySQL データベースのパスワード */
define(‘DB_PASSWORD’, ‘(パスワード)’);
の記述を探してコピー、貼り付けして「ログイン」クリックします。左のサイドバーに先ほどコピーしたユーザー名があるのでクリックして、以下の画面が開きます。

先ほど解説した「wp_」で始まるテーブルが複数あるはずです。このすべてのテーブル名の先頭部分「wp_」をwp-config.php内に記述した通りに変更します。
上部タブの中から「SQL」をクリック、以下の文を入力して「実行」をクリックしてください。
ALTER TABLE wp_comments RENAME TO wp_change_test_comments;
ALTER TABLE wp_links RENAME TO wp_change_test_links;
ALTER TABLE wp_options RENAME TO wp_change_test_options;
ALTER TABLE wp_postmeta RENAME TO wp_change_test_postmeta;
ALTER TABLE wp_posts RENAME TO wp_change_test_posts;
ALTER TABLE wp_term_relationships RENAME TO wp_change_test_term_relationships;
ALTER TABLE wp_term_taxonomy RENAME TO wp_change_test_term_taxonomy;
ALTER TABLE wp_usermeta RENAME TO wp_change_test_usermeta;
ALTER TABLE wp_users RENAME TO wp_change_test_users;
ALTER TABLE wp_terms RENAME TO wp_change_test_terms;

赤字で記述した部分は、先ほどwp-config.php内に記述した通りに変更してください。
上部タブの「構造」をクリックして、設定した通りに変更されていれば成功です。

3.「options」「usermeta」内の項目を変更する
最後にもう一仕事です。この作業を行わないと「アクセス権がありません。」とエラーメッセージが表示されてしまいます。忘れずに行いましょう。
ここまでテーブル名のプレフィックスは変更できましたが、実は「options」と「usermeta」の2つのテーブル内にもプレフィックス「wp_」が用いられています。最後にこれを変更しましょう。
先ほどと同じように「SQL」をクリックして、今度は以下の文を入力して「実行」をクリックしてください。こちらも赤字の部分はwp-config.phpで設定した通りに変更しましょう。
UPDATE wp_change_usermeta SET meta_key = ‘wp_change_capabilities’ WHERE meta_key = ‘wp_capabilities’;
UPDATE wp_change_usermeta SET meta_key = ‘wp_change_user_level’ WHERE meta_key = ‘wp_user_level’;
これでプレフイックスの変更は完了です。
パーミッションの設定
パーミッションとは、ファイルやフォルダのアクセス制限のことです。
ファイルやフォルダごとにユーザーの権限を制限することで、外部からの不正なアクセスを防ぐことができます。パーミッションは「700」や「605」のように3桁の数字で設定されています。
この設定によって、ブログの更新時に変更する必要があるファイルやフォルダは管理人に編集する権限を与える、あまり変更する必要がないファイルは読み取りだけ許可するなど細かい設定が可能です。
パーミッションの設定は、エックスサーバーのファイルマネージャ機能で行います。
※ファイルマネージャ機能の使用方法はこちら
ワードプレスのファイルがある階層にアクセスしてください。(通常は「ドメイン名/public_html/」)
パーミッションの変更方法は、
- 変更したいファイルやフォルダを選択
- 「パーミッション変更」をクリック
- 3桁の数字を入力
となります。
1.変更したいファイルやフォルダを選択
ファイル一覧の左のチェックボックスにチェックをするだけです。複数選択することもできます。

2.「パーミッション変更」をクリック
[ ファイルの操作 ]項目の「パーミッション変更」をクリックすると、パーミッション設定のページに移行します。
↓

3.3桁の数字を入力
「パーミッション:」下のテキストボックスに3桁の数字を入力して、「パーミッション変更」をクリックすると設定完了です。
この3桁の数字でアクセスを制限したり許可をしたりすることができます。
パーミッションは、以下の通りに設定してください。
- 「.htaccess」は 606
- 「wp-config.php」は 400
- その他のファイルは 604
- その他のフォルダは 705
これだけです。
パーミッションの解説
パーミッションの数字の解説もしておきましょう。少し難しいので、なんとなく理解できれば問題ありません。
3桁の数字はそれぞれ左から、所有者、グループ、他のユーザーに対する権限を設定しています。

上の画像のようにパーミッション「705」の場合、1番左の「7」が所有者(サイトの管理人)、中央の「0」がグループ(同じサーバーを利用している全てのユーザー)、右の「5」が他のユーザー(その他全てのユーザー)に割り振られた数字です。
この数字は以下の3種類の数字を足した数値です。
- 読み込みの権限を設定する数字
許可する場合は「4」、拒否する場合は「0」 - 書き込みの権限を設定する数字
許可する場合は「2」、拒否する場合は「0」 - 実行の権限を設定する数字
許可する場合は「1」、拒否する場合は「0」
上の画像を例に解説すると、
- 所有者の「7」は、すべてを許可している
4+2+1=7 - グループの「0」は、すべてを拒否している
0+0+0=0 - 他のユーザーの「5」は、読み込みと実行を許可、書き込みを拒否している
4+0+1=5
となり、「705」になります。これが「777」の場合はすべてのユーザーに対してすべての権限を与えるパーミッションとなり、「000」の場合はすべて拒否するパーミッションというわけです。
先ほどの設定で言えば「wp-config.php」の「400」は、所有者の読み込みだけ許可していて他の権限全てを拒否するパーミッションとなっています。かなり強い制限がかかっていると思っていただければ大丈夫です。
まとめ
いかがでしたでしょうか?
前回の初級編と合わせていただくと、より強固なセキュリティ対策となります。少し難しい内容ですが、是非実行してください。