さて、昨今はWordPressを狙った不正ログイン及びスパマーが激増しています。他のユーザーの皆さんも大なり小なりセキュリティー対策をしていると思いますが、いったいどれを使用したらいいのやら…と困っている人もいるのではないでしょうか?
今回はWordPressのセキュリティ対策を高める20の方法をご紹介します。
ハッキングの8割はWordPress
当然と言えば当然かもしれません。今やオープンソースのWordPressが主流であり、個人的なプログから大企業まで使用しています。もっとも普及しているものがターゲットになるのは自然なことなのかもしれません。これはOSでも同じことが言えます。
最も普及しているOSはWindowsなので、MacやLinuxよりも被害が大きいわけです。もしかして、まだWindows XPやWindows 7を使ってませんよね?これらのバージョンはすでにサポートが切れています。更新ファイルも配布されていないので、セキュリティ的には非常に危ない状態です。もし過去のバージョンのOSを利用しているのであれば、早急に最新版のWindows 10に乗り換えましょう。
さて、少し話がそれましたが、下記の表を見てください。
これはWordPressに対するハッキングのグラフです。現在WordPressはサイト運営の中心的な存在となっているので、ハッキングの数もあり得ないぐらいになっています。WordPressだけで約8割を占めているので、いかに多いかが見て取れると思います。
ネット上でも、「WordPressがハッキングされた」「ステロイド剤を販売するサイトに誘導された」「投稿記事をぐちゃぐちゃにされた」などの被害が多数報告されています。せっかくSEO対策で評価を高めても、悪意ある第三者にハッキングされてしまえば、すべては水の泡となります。そうならないためにも、日頃からWordPressのセキュリティを高め、体制を整えておく必要があります。
この記事では、WordPressのセキュリティを高める方法をいくつかご紹介しています。かなり専門的な内容を含みますが、一つ一つ理解しながらステップbyステップで実践してみましょう!
参照・引用:Website Hacked Peport
WordPressが狙われる手法トップ5
WordPressは非常に便利なCMSですが、万能ではありません。下記は、WordPressが狙われる最も代表的な例です。
- コメントスパム
- 管理画面への侵入
- サードパーティ製のプラグインに対する悪用
- Pingback機能の悪用
- ブルートフォースアタック
まず大切なのは、上記のようなハッキングやクラッキングの手法があることを知ることです。これを知った上で、それぞれのセキュリティを高める対策を行っていきます。
セキュリティー対策を高める20の方法
WordPressのセキュリティー対策を高めるためには、ある程度WordPressの仕組みを理解する必要があります。やみくもに対策を行っても、たいした効果は得られません。対策は色々とありますが、「WordPressの本体に対するセキュリティ」や「管理画面への不正アクセス」を実施するだけでも結果は違ってきます。
ただし、データベースに対するセキュリティの項目は注意が必要です。
データベースをイジリ過ぎると、最悪WordPressそのものが起動しなくなります。必ずバックアップを取った上で、対策を行いましょう。
WordPress本体や機能のセキュリティを高める
WordPress本体のファイルや機能からセキュリティを高める設定方法です。ほとんどのものはレンタルサーバーの管理画面から行うことができるので、公式ページを覗いてみてはいかがでしょうか。公式ページのサポート情報を最大限活用しましょう。
- WordPress本体は常に最新バージョンに更新する。
- wp-config.phpのアクセス制限をする。
- xmlrpc.phpのアクセスを制限する。
- phpエラー情報を隠す。
- 検索エンジンから致命的な情報を隠す。
- ファイルのパーミッションを確認する。
データベースのセキュリティを高める
データベースのテーブルのプレフィックス(接頭辞)を修正することで、セキュリティを高める方法です。初心者には非常に難易度が高い作業となるので、事前にしっかりと下調べした上で実行してください。バックアップも行う必要があります。
- データベースのプレフィックスを変更する。
管理画面の不正アクセスを防ぐ
悪意あるハッカーからの不正アクセスを防ぐ方法です。簡単なものから複雑なものまでありますが、管理画面の不正侵入を防ぐことは、あなたのサイトを守る最も基本的なセキュリティ対策です。少しづつ読み進めながら実行していきましょう。
- ユーザーIDとパスワードを複雑なものに。
- ユーザー情報を隠す。
- htaccessを利用したBasic認証。
- プラグイン「Crazy Bone」の利用。
- プラグイン「Limit Login Attemps」の利用
- セキュリティ系プラグインで防御する。
スパムを防ぐ
悪意あるスパムを防ぐための方法です。スパムの脅威は近年ますます増大しており、日々あらゆるスパムによってあなたのサイトが脅威にさらされています。スパムを防ぐことで、サイトの評価が低下することを防ぐこともできます。
- プラグイン「Akismit」の利用。
- コメント機能を無効化 or スパム対策をする。
- pingback機能を無効にする。
WordPress本体は常に最新バージョンに更新する
この方法はもっとも簡単にできるセキュリティ対策の一つです。WordPressは非常に便利な存在ですが、万能ではありません。必ずどこかに脆弱性を含んでいます。WordPressの運営チームは、日々の研究や報告などによって見つかった脆弱性に対して、つねに改善を行っています。WordPress本体が頻繁にアップデートをしているのはこのためです。
WordPress本体にアップデートの更新通知が届いたら、必ず最新版に更新するようにしましょう。
wp-config.phpのアクセス制限
WordPressは多くのphpファイルで構成されています。本体をインストールした時に、サーバーに多くのphpファイルがあることを目にしたことがあると思います。どのファイルも重要ですが、wp-config.phpも重要なファイルの一つです。
このファイルには、下記の情報が記載されています。
- MySQLなどのデータベースの接続情報
- サイトの基礎になる構成情報
ご存知のとおり、WordPressはデータベースに情報を格納し、アクセスすることで記事やページを表示しています。つまり、このファイルに誰でもアクセスできるということは、WordPressにとって最も致命的なことなのです。
wp-config.phpのアクセスを制限する記述
アクセスを制限するためには、下記のコードを.htaccessに記述します。パーミッションはレンタルしているサーバーの公式ページを参照してください。
<files wp-config.php> order allow,deny deny from all </files>
レンタルサーバー名 | 推奨パーミッション |
---|---|
Xサーバー | 644 |
さくらサーバー | 604 |
ロリポップ | 604 |
xmlrpc.phpのアクセスを制限する
xmlrpc.phpファイルはスマホアプリや外部システムから、リモートで記事の投稿や画像のアップロードを行う際に利用するphpファイルです。このxmlrpc.phpファイルは、前述のとおり、スマホなどでリモートアクセスする人にとっては不要なファイルだと思います。また、このファイルは主に悪意あるハッカーなどに標的にされやすいのも特徴的です。
xmlrpc.phpファイルを削除しても良いのですが、WordPressのアップデートのたびに復活してしまいます。そこで、このファイルへのアクセスを制限しておきましょう。
xmlrpc.phpのアクセスを制限する記述
<Files "xmlrpc.php"> order deny,allow deny from all </Files>
Xサーバーを利用している場合の対処
Xサーバーを利用している場合、管理画面から簡単にxmlrpc.phpのアクセスを制限できます。Xサーバーの管理画面にログインし、「WordPressセキュリティ設定」>「XML-RPC APIアクセス制限」の項目を「ON」に切り替えてください。これだけでOKです。
ただし、必ず自身のサイトがキチンと表示されるか確認を行ってください。万が一、「ページが表示されない」「ログインできない」などの異常があった場合は、再び管理画面にログインして「OFF」にしてください。
phpエラー情報を隠す
WordPressではphpで何らかのエラーが発生すると、ブラウザにエラーコードを吐き出すようになっています。例えば「HTTP ERROR 500」や「PHP Fatl error:get_header() in /xxx / public_html / wp / wp-content / function.php on line 15」などのような記述です。
これは「funciton.phpの15行目で何かしらのエラーが発生していますよ!」と教えてくれるものですが、このようなエラーメッセージは私たちサイト運営者にとっては有益な情報ですが、悪意あるハッカーにとってもまた有益な情報になり得るのです。
これらのエラー情報には色々な情報を含んでいるため、攻撃のヒントを相手に与えることになってしまうでしょう。
エラー情報を表示させないようにする記述
どのレンタルサーバーにもphp.iniというファイルがあります。php.iniファイルとは、PHPプログラムの全体的な動作や環境を設定するための重要なファイルです。下記のコードを記述してください。
display_errors = Off
各レンタルサーバーのphp.iniの参照ページ
下記は各レンタルサーバーの公式のPHP設定の詳細ページです。設定の方法から注意点まで記載されているので、初めての人は一読しておきましょう。
- Xサーバー / php.ini設定について
- さくらサーバー / スタートアップ設定
- ロリポップ / PHP設定
ファイルのパーミッションを確認する
パーミッションとは「権限」のことです。サーバーに設定されたすべてのフォルダ、ファイルにはこの権限が付与されています。デフォルトでは、契約しているレンタルサーバーが推奨するパーミッションになっているはずですが、何らかの原因で適切ではない権限となっている場合は注意が必要です。
一度、サーバーのフォルダやファイル群を見直し、適切なパーミッションになっているか確認しておきましょう。
ファイル名 | 適切なパーミッション |
---|---|
.htaccess | 604 / 644 |
wp-config.php | 400 / 444 |
ディレクトリ | 705 |
その他のファイル群 | 604 / 644 |
※wp-config.phpで400 or 444にするには、自身がオーナー権限である必要があります。
検索エンジンから致命的な情報を隠す
Googleなどの検索エンジンに特定のコードを入力すると、情報がブラウザに表示されてしまうことがあります。これらはディレクトリリスティングと呼ばれるもので、有効になっていいれば情報が丸見えになってしまうものです。
- site:自分のドメイン index of
- site:自分のドメイン error
- site:自分のドメイン sql
- site:自分のドメイン test
このように「システムの構造が見える」ということは、攻撃者に攻撃の糸口を与えてしまう結果になってしまいます。また、これらの手法はエクスプロイトと呼ばれており、エクスプロイトキットという専用のハッキングツールまであるくらいです。セキュリティの基本はシステムの構造を極力他者に知られないようにすることが基本となります。
多くのレンタルサーバーではすでにApache(アパッチ)に対策を行っているので、ユーザーは特に何もする必要はありません。しかし、必ずレンタルサーバーの公式ページを確認し、情報を把握しておく必要はあります。不要な情報をブラウザに晒さないようにしておきましょう。
※無料レンタルサーバーなどはどうか分かりません。
エクスプロイトを防ぐためには
- Apacheのセキュリティがしっかりしているサーバーを選ぶ。
- テスト用のページが公開されないようにする。
- ウェブマスターツールを定期的にチェックする。
- Googleアナティリクスを定期的にチェックする。
- サイトを長期間放置せず、定期的に監視する。
データベースのプレフィックスを変更する
WordPressはデータベース(phpMyAdmin)に情報を格納することによって、ホームページを管理しています。このデータベースには、「著作者の情報」や「記事の内容」、「ログイン情報」まで重要なデータが格納されています。また、データベースの各テーブルにも管理しやすいように名前が付けられています。例えば以下のようなものです。
- wp_posts・・・記事の情報を格納。
- wp_users・・・ユーザーIDやパスワードなどログイン情報を格納。
- wp_comments・・・コメントを格納。
テーブルの名称を良く見てみると、「wp_テーブル名」をなっていることが分かると思います。この「wp_」がプレフィックス(接頭辞)と呼ばれるものです。WordPressをインストールした初期の段階では、このプレフィックスは「wp_」と決まっています。
前述したように、セキュリティの基本はシステムの情報と構造を他者に分からないように極力隠ぺいすることです。多くのセキュリティサイトで「プレフィックスを変更するように!」と言っているのはこのためなのです。
プレフィックスを変更する前の注意点
テーブルのプレフィックスを変更する前に、以下の点に注意する必要があります。
- 必ずWordPress本体とデータベースのバックアップをとること
プレフィックスを変更する方法
テーブルのプレフィックスを変更するには、以下の方法があります。
プラグインを使ったほうが楽ですが、プラグインは英語で記述されています。参考サイトなどを見ながら読み進めることをおすすめします。
- phpMyAdminから直接(クエリを発行して)書き換える。
- プラグイン「All In One WP Security & Firewall」を使って書き換える。
phpMyAdminから直接プレフィックスを変更する手順
ここでは簡単な手順しか説明していません。参考になりそうなサイトは下記にリンクしておきます。
- レンタルサーバーの管理画面にログインする。
- phpMyAdminにアクセスする。
- テーブルを変更するクエリを発行する。
- wp-config.phpのプレフィックス情報を「$table_prefix = ‘example_’」に変更する。
※KA Partner:WordPressの接頭辞を変更する方法と注意点
プラグインを使って書き換える手順
ここでは簡単な手順しか説明していません。参考になりそうなサイトは下記にリンクしておきます。
- プラグイン「All In One WP Security & Firewall」をインストール有効化する。
- 設定からプレフィックスを変更する。
- 必要に応じてwp-config.phpの「$table_prefix = ‘example_’」を変更する。
※ノーマ―ブログ:WordPressのプレフィックスを簡単に変更する方法
ユーザーIDとパスワードを複雑なものにする
WordPressにログインするためには、ユーザーIDとパスワードを入力する必要があります。しかし、まったく手を加えていないユーザーIDや単純なパスワードを使用している場合は注意が必要です。
第三者に容易に推測されるだけはなく、管理画面に侵入されれば、中身のデータは改ざんされてしまうでしょう。また、WordPressのニックネームにも注意が必要です。ニックネーム変更していないとユーザーIDがそのままブラウザで表示されてしまいます。
試しに「site:example.com」(example.comは自分のサイトドメイン)コードをGoogleのブラウザで検索してみてください。ログイン時に使用するユーザーIDがそのまま表示されていませんか?そのままでは非常に危ない状態です。
ユーザーIDやパスワードを強固なものに設定し、ニックネームを修正する必要があります。
- ユーザーIDとパスワードを強固なものに設定する。
- ニックネームは必ず変更しよう。
ユーザーIDとパスワードを強固にする
ユーザーIDとパスワードは、LUFTTOOLSを使用して生成しましょう。ただし、忘れないようにどこかに控えておくことをお勧めします。
※LUFTTOOLS:ユーザーIDとパスワードのランダム生成
ダメな例
ユーザーIDやパスワードに使用してはいけないダメな例です。単純な単語のみや、メールアドレスなどを使用するのは止めましょう。簡単に推測できるものはダメです。
- 誕生日・電話番号・メールアドレスなどはダメ
- adminなど
- 単純な単語のみ
- 123などの数字のみ
- 自分・親・親戚の名前
- password123など
良い例
下記は良い例です。記号・数字・大文字・小文字などを混ぜて複雑なものを作りましょう。
- ユーザーID:KmbcT9-$GThG
- パスワード:Ts9CVqhBhdCg
ニックネームの変更
WordPressの管理画面からニックネームを変更する必要があります。「WordPress管理画面 > ユーザー > あなたのプロフィール」を選択し、任意のニックネームを入力してください。あとは、ブログ上の表示名を変更するだけOKです。
htaccessを利用したbasic認証
basic認証とは、ほとんどのウェブサーバで利用できる簡単なユーザー認証の仕組みです。もともとWordPressにもログイン機能はありますが、このbasic認証と組み合わせることで、セキュリティ効果をさらに高めることができます。
basic認証の特徴
- 一度認証すると、ブラウザが終了するまで有効になる。
- ユーザーIDとパスワードはブラウザが記録できる。
- 特定の領域に認証制限をかけられる。
basic認証の作成手順
- テキストファイルを作成する。
- basic認証のコードを記述する。
- .htaccessにリネームする。
- .htaccessを所定の場所へアップロード。
- パスワード暗号化サイトから.htpasswdを作成する。
- basic認証で指定した場所にアップロードする。
- wp-login.phpの管理画面にログインしてみる。
テキストファイルを作成する
デスクトップ上で右クリック > 新規作成 > テキスト ドキュメントから、新規テキストファイルを作成します。
basic認証のコードを記述する
下記のコードをコピーして貼り付けます。
<Files “wp-login.php”>となっているのは、WordPressの管理画面に対して認証するようにしているからです。
AuthName「あなたのサイト名」は、任意の文字列で構いませんが、半角英数字で記述する必要があります。
AuthUserFileはパスワードファイルの格納場所です。任意のパスにしてください。
<Files "wp-login.php"> AuthType Basic AuthName "あなたのサイト名" AuthUserFile /home/xxxxxx/example.com/フォルダ名/.htpasswd Require valid-user Satisfy all </Files>
.htaccessにリネームする
ファイルを選択し、右クリック > 名前の変更から、ファイル名を「.htaccess」に変更します。先頭にドットが付くので、注意してください。ファイル名を.htaccessに変更してしまうと、ファイルは開けなくなるので、ファイル名をもう一度別の名前に変更してから中身を修正しましょう。
.htaccessを所定の場所へアップロード
作成したファイルを、「wp-login.php」と同じ場所にアップロードします。下記は同じ場所にアップロードしたものです。
パスワード暗号化サイトから.htpasswdを作成する
基本認証用パスワード暗号化サイトから、.htpasswdを作成します。IDとPasswaordに任意の半角英数字の文字列を入力します。忘れないように控えておいてください。
ユーザーIDとパスワードが対になったものができます。下記のコードをコピーし、.htaccessを作った時と同じ手順でテキストファイルを作ります。
basic認証で指定した場所にアップロード
指定した場所へ.htpasswdをアップロードします。
私の場合では、サイト名をファイルの直下に「htpasswd」のフォルダを作り、そこに格納しています。
wp-login.phpの管理画面にログインしてみる
WordPressの管理画面にログインしてみましょう。下記のようなbasic認証が起動するはずです。「パスワード暗号化サイトから.htpasswdを作成する」の項目で入力したユーザーIDとパスワードを使って認証してみましょう。
これでbasic認証は完了です。
※暗号化されたパスワードではありません。ご注意ください。
Crazy Bone (狂骨)で不正アクセスを監視
Crazy BoneはWordPressへの不正アクセスを監視するプラグインです。このプラグインの優れているところは、「国の情報」「IPアドレス」「ログインしたブラウザ」などのログイン履歴を簡単に確認できることです。不正ログインをみつけたら、直ちに対策をとらなければなりません。早めに対処することで、重大なトラブルからWordPressを守ることができます。
万が一のためにインストールしておきましょう。
- 関連記事:Crazy Bone (狂骨) で不正ログインを発見せよ!
- ダウンロード:WordPress.org 公式プラグイン
Limit Login Attemptsでブルートフォースアタックを防ぐ
現在、WordPressによるブルートフォースアタックが頻繁に行われています。ブルートフォースアタックとはとにかくIDをパスワードを手当たり次第に推測して打ち込み、侵入を試みることです。つまりはトライ&エラーでWordPressへ侵入しようとしています。
これを防ぐために、「Limit Login Attempts」のプラグインを使用しています。「Limit Login Attempts」では、ログインに規定回数失敗すると一定時間ログインすることができなくなります。いわば、ログイン画面での侵入者のトライ&エラーをしにくくするプラグインなのです。また、管理者に「誰かが不正ログインをしようとしているゾ!」と、メールで通知してくれます。
- ダウンロード:WordPress.org 公式プラグイン
総合的なセキュリティプラグインで防御
WordPressにはセキュリティ系のプラグインが多数ありますが、どれも英語表記となっています。翻訳ファイルを使用しても構わないのですが、SITEGURD WP Pluginは国産のセキュリティプラグインなので、簡単に利用することができます。特徴は以下の通りです。
- 不正ログインの防御
- 管理ページへの不正アクセス
- ログインロック
- ログインアラート
- XMLRPC防御
- スパムを防ぐ
- 画像認証
個別のセキュリティプラグインは多数ありますが、国産でしかもオールインパッケージのものはなかなか無いので、重宝すると思います。ただし、これはWordPressの鉄則ですが、他のセキュリティ系プラグインと併用することは避けたほうが良いでしょう。思わぬコンフリクト(衝突)が起こるため、注意してください。
2週間ほど利用してみて、問題なければ使ってみましょう。
参照:JP-Secure「SITEGURD WP Plugin」
Akismetを利用してスパムを防ぐ
ご存知スパムコメント対策のプラグイン。WordPressを運営していれば必ずスパムコメントがやってきます。この「Akismet」を使用することによってほとんどのスパムを見分けることができます。認証画面が英語などやや難しですが、参考サイトなどがたくさんあるため困ることはないでしょう。
ただ、APIキーの取得がやや面倒ですが…。WordPressには最初からインストールされています。あとは設定で認証するのみです。
ダウンロード:WordPress.org 公式プラグイン
コメント機能を無効化する
コメント機能を利用しない場合は、無効にしておくほうがいいでしょう。コメントが大して無いにも関わらず、そのまま放置しておくと、スパムの格好の餌食となってしまいます。よくコメント欄にルイ・ヴィトンやレイバンなどのブランド広告のスパムがありますが、非常に鬱陶しいものです。
コメント機能を無効化するには、以下の通りです。
- WordPress管理画面 > 設定 > ディスカッションから、「新しい投稿へのコメントを許可する」のチェックを外す。
pingback機能を無効にする
近年、pinback機能を悪用した事例が多数報告されているようです。pingback機能は、自分の投稿に対してリンクが張られたことを知らせる機能ですが、悪意あるサイトがわざとこの機能を利用してサイトに誘導したりしているようです。
pingback機能を無効にするには、以下の通りです。
- WordPress管理画面 > 設定 > ディスカッションから、「新しい記事に対して他のブログからの通知(ピンバック・トラックバック)を受け付ける」のチェックを外す。
まとめ
WordPressのセキュリティを高める方法は以下の通りです。
- WordPress本体は常に最新バージョンに更新する。
- Google アナティリクスを利用してサイトの挙動を監視する。
- wp-config.phpのアクセスを制限する。
- xmlrpc.phpのアクセスを制限する。
- phpエラー情報を隠す。
- 検索エンジンから致命的な情報を隠す。
- ファイルのパーミッションを確認する。
- データベースのプレフィックスを変更する。
- ユーザーIDとパスワードを複雑なものに。
- ユーザー情報を隠す。
- htaccessを利用したBasic認証。
- プラグイン「Crazy Bone」の利用。
- プラグイン「Limit Login Attemps」の利用
- セキュリティ系プラグインで防御する。
- プラグイン「Akismit」の利用。
- コメント機能を無効化 or スパム対策をする。
- pingback機能を無効にする。
本当はあまりプラグインを使用せずに対策することも可能ですが、かなり専門的な内容になるため、この記事では割愛しています。セキュリティを高める方法はまだまだ沢山ありますが、初心者の方は上記の対策を一つずつ行っていきましょう。何もしないよりは、ずっとセキュリティを高めることができるはずです。
記事を100記事も書いた後で、不正ログインされて台無しになった!なんてことにならないように、しっかりと対策を行っておきましょう。
みんなが良く読んでいる記事
他の人が参照しているWordPressの関連記事
- グリッドレイアウト おすすめ 15テーマ 2016
- WordPress seo by Yoast サイトマップ エラーの解決法
- WordPressを簡単に高速化する方法
- WordPress カスタマイズ の便利機能
- SEO 効果を高める11の方法
- セキュリティ を高める3つのステップ
- WordPressの再構築と子テーマの作成
- Xサーバー WordPress を自動インストール
- これさえあれば大丈夫! WordPress厳選プラグイン
- 速度でお悩み? WordPress 高速化 させる5つの方法
- どゆーこった?! WordPressのテキスト編集がおかしい ?!
- 何選べばいいの? WordPress レンタルサーバー 4社 徹底比較!