WordPressは今やブログをやサイトを構築するシステムとしてメジャーな存在で、無料ブログからの移転先としても定番になっていますよね。
ただ利用者が多ければそれだけハッキングや乗っ取りのリスクも高くなるので、WordPressを利用する上ではセキュリティ対策が必須になってきます。
WordPressは初心者でも簡単に導入できる半面、セキュリティを怠ると取り返しのつかないことになります。
そこで今回は、WordPressをハッキング・乗っ取りから守る方法をまとめましたので、必ず対策は行っておきましょう。
WordPressにセキュリティ対策が必要な理由
CMSとは
コンテンツマネジメントシステムの略称で、難しい専門知識がなくてもテキストや画像を使って簡単にWebサイトを管理・更新できるシステムのこと。
オープンソースとは
ソフトウェアを構成しているソースコードが公開されていて、商用・非商用問わずに誰でも利用もしくはコードを改変して再配布できるもの。
つまり、WordPressは容易に使いこなせる上に中身が丸裸な状態なので、脆弱性(コンピュータの不都合やバグなど)が見つかりやすい傾向があります。
なのでハッカーに悪意的な攻撃を受ける可能性が高い環境下にあるということですね。
被害を受ける可能性があるのは以下のような内容になります。
- 個人情報が外部へ流出
- WordPressへの不正アクセス
- ブログ・サイト内のデータ改ざん及び削除
- スパムによる迷惑メールの大量送信
例えばセキュリティ性の低いWordPressサイトだと容易に侵入を許すだけでなく、今まで頑張って作成してきた記事などをすべて削除されるかもしれません。
WordPressではセキュリティ対策も兼ねて定期的にアップデートを行っていますが、それだけではハッキング・乗っ取りなどの脅威から守るには不十分です。
企業サイトはもちろんですが個人サイトであっても、自らしっかり対策を行ってセキュリティを強化しておきましょう。
WordPressをハッキング・乗っ取りから守るには
- WordPress・プラグイン・テーマを最新版にする
- スパムコメントを遮断して排除する
- ログイン画面へのアクセスログを記録しておく
- ログイン・管理画面へのIP制限をかける
- ログイン認証の条件を強化する
- データベースへのアクセスを不可にする
- データベース内のテーブル名称を変更する
- パーミッション(アクセス権限)を厳しく設定する
- 定期的な自動バックアップを行う
- 管理者アカウントの追加は最小限にする
- デフォルトアカウントは使用しない
- サイトを常時SSL化する
一概にセキュリティ対策といっても、このように色々な方法でWordPressを強化することができます。
たしかにWordPressにまだ使い慣れていない方は、どうやってセキュリティ対策の設定をすればいいかもわからないですよね。
ですが、ハッカーはそんなことはお構いなしに、いつどんなときに攻撃をしかけてきてもおかしくありません。
結論から言うと「上記の項目すべてをやっておくに越したことはない」ですが、実際にすべて設定しようとすると結構な手間がかかります。
なので、WordPressで運営していくなら最低限はやっておきたい対策に絞って紹介したいと思います。
WordPressで必須なセキュリティ対策
対策①:ログイン・管理画面へのIP制限をかける
外部から不正アクセスをしようとする場合は一度ログインを行う必要がありますが、このアクセスを自分のPCだけに制限することでセキュリティを高めることができます。
それと万全を期すためには、管理画面へのIP制限も行っておく方がいいでしょう。
このIP制限を設定するには、WordPressの以下のファイルを対象に編集することになります。
IP制限をかけるにはPCのIPアドレスを知る必要がありますが、CMANのサイトですぐに確認できます。
「.htaccess」ファイルはFTPソフトでサーバーと接続後に、「対象ブログURL」⇒「public_html」と移動した先にあるかと思います。
この同じ階層に「wp-login.php」と「wp-admin」もあるかを確認しておきましょう。
「.htaccess」ファイルをPCのメモ帳などのエディタで開いたら、以下のコードを追記します。
<files "wp-login.php|wp-admin"> order deny,allow deny from all allow from 12.34.567.890 </files>
複数のIP制限を設定したい場合は「Allow from」を追加していきます。
これで編集内容を保存すれば、自分のPC以外からはWordPressのログインや管理画面へのアクセスができなくなります。
インターネットのプロバイダ(OCNなど)によってIPアドレスが固定ではなく、一定間隔で変化する「動的IP」の場合は、上記設定だと変化時にアクセスできなくなります。
動的IPについては以下の設定内容が必要になります。
自分のIPアドレスが固定なのか動的なのかは、以下のサイトで先程確認したIPアドレスを検索すればわかります。
- aguseで調べる
そうすると検索したIPアドレスに関連する情報が表示されるので、その中にある「ネットワークセグメント」を確認します。
この範囲を一括してIP制限するには、「CIDR(サブネットマスク表記)」で記述する必要があります。
CIDRの記入例
IPが「69.0.0.0 – 69.255.255.255」の場合
⇒69.0.0.0/8
IPが「69.50.0.0 – 69.50.255.255」の場合
⇒69.50.0.0/16
IPが「69.50.30.0 – 69.50.30.255」の場合
⇒69.50.30.0/24
詳細は「CIDR表」を確認
つまり、IPアドレスの範囲に含まれている「アドレス数」によって、「IPアドレス/1~32」で表記することができます。
自分のPCのCIDRがわかったら、あとは「.htaccess」ファイルに追記するだけです。
<files "wp-login.php|wp-admin"> Order deny, allow Deny from all Allow from 69.0.0.0/8 </files>
これでログイン・管理画面へのIP制限については以上になります。
対策②:データベースへの外部アクセスを不可にする
データベースをアクセス不可にする理由は、WordPressのアカウント情報がここで管理されているからです。
ここの情報が悪質な人に渡ってしまうと、データベースが直に操作されて非常に危険な状態になってしまいます。
こうしたリスクを回避するためには、データベースを管理する「wp-config.php」ファイルへの外部アクセスを不可にする設定が必須です。
そこで先程追記した「.htaccess」ファイルが「wp-config.php」の階層にあるか確認し、「.htaccess」内に以下のコードを追記します。
<files wp-config.php> order allow,deny deny from all </files>
これで編集内容をファイルに保存すれば、外部からWordPressのデータベースへアクセスすることはできなくなります。
パーミッションとは、サーバーに設定されているアクセス権限のことで、どんなユーザーにどういった行動を許可するかを決めることができます。
ユーザーの対象
User:所有者
Group:グループ
Other:その他のユーザー
行動の権限
read:読み込み
write:書き込み
execute:実行
none:許可しない
このパーミッションの設定は、FTPソフトでWordPressの各ファイルごとに変更することができます。
「wp-config.php」ファイルのパーミッション変更は、FTPソフトで接続後に対象ファイルを右クリックして「属性変更」を選択します。
そうすると「現在の属性」が確認できるので、ここでチェックを入れるか外すかで属性の数値を変更できます。
パーミッション設定として安全性が高いと推奨されているのは、
- 400:オーナー(所有者)のみ呼出(読み込み)にチェック
- 600:オーナーのみ呼出+書込にチェック
「400」が最も安全ですが、共有サーバーだと上手く設定できないこともあるようなので、その場合は「600」に設定しておきましょう。
対策③:スパムコメントを遮断して排除する
スパムコメントはユーザーの意思に関係なく、大量に送信されてくる迷惑極まりないものです。
こうした迷惑コメントはブログの規模が大きくなっていくにつれて、1日に届く量もかなり多くなってきます。
そこで活用したいのが「Akismet」というスパム対策プラグインです。
このプラグインは有効化しておくだけで、スパムと思われるコメントを自動的に判別して脅威から守ってくれる優れものですね。
Akismetは常に稼働させておく必要がある必須プラグインなので、忘れずに有効化しておくようにしましょう。
ただ、APIキーを設定する必要があって少し手間がかかるので、もし設定方法がわからないという方は以下の記事を参考にして頂ければと思います。
対策④:デフォルトアカウントは使用しない
アカウントを何も変更せず、デフォルトのまま使用すると「admin」というアカウントが設定されています。
1つ確かなことは「admin」の存在はとにかく危険性が激高だということ!
なぜかと言うと「ブルートフォースアタック」の格好の餌食になるからです。
ブルートフォースアタックとは、パスワードや暗号を解読するハッキング手法の1つで、考えられるものをすべて試していく総当たり攻撃とも言われています。
ここで非常に攻撃対象になりやすいのが「admin」というアカウント名なんです。
アカウント名が容易にわかるということは、パスワードさえ解読できれば簡単にWordPressへログインできてしまうわけです。
このアカウント名は、サーバーからWordPressをインストールする際の設定時にある「ユーザ名」を指します。
基本的には任意のアカウント名を設定されている方が多いかと思いますが、ここはデフォルトの「admin」にならないよう必ず設定しておきましょう。
また、WordPressの「ユーザー一覧」に使用していない「admin」アカウントが残っている場合は、これも危険な状態なので必ず削除しておいて下さい。
adminを使用中の場合は新規ユーザーを追加して、新しいアカウントでログインし直さないとadminを削除できません。
ただし、adminのアカウントで記事を更新していた場合は、削除時に「すべての投稿を以下のユーザーにアサイン」を選択して、必ず追加したアカウントへ記事を移行して下さい。
ここで選択を間違えると今までの記事がすべて消えてしまうので要注意!(設定前のバックアップ推奨)
対策⑥:定期的な自動バックアップを行う
WordPressのセキュリティ精度をいかに高めても、完璧に安全だと言える環境を作るのは難しいでしょう。
セキュリティも日々強化されていますが、それと同時にハッキングや乗っ取りなどの手法も進化し、抜け穴を見つけるためにしぶとく攻撃を続けてきます。
もし万が一に不正アクセスなどでデータの改ざんなどが行われてしまったときに、バックアップデータがあれば復元できますよね。
そこで便利なのが「BackWPup」プラグインです。
「BackWPup」プラグインでは、WordPressに欠かせない以下の2種類のバックアップを取ることができます。
- サーバー上のデータ:ファイル関係・プラグインなど
- データベース上のデータ:各記事・カテゴリーなど
バックアップはセキュリティ面だけじゃなく、間違えてデータを消してしまったり、不都合によって問題が発生してしまったときにも役立ちます。
「BackWPup」プラグインの詳しい設定方法や使い方は、以下の記事内で詳しくまとめています。
対策⑦:サイトを常時SSL化する
SSLとはSecure Sockets Layerの略称で、インターネット上でやり取りするデータを暗号化して送受信する仕組みのこと。
サイトURLが「https」から始まり、鍵マーク付きの「保護された通信」と書かれているのがSSL化されたサイトです。
SSL化によるセキュリティ面のメリットは主に以下の3つです。
- 情報の漏えいを防ぐことができる
- なりすましの対策ができる
- データ改ざんの防止になる
暗号化通信によるセキュリティ対策は今や当たり前のことですね。
この他にもユーザーに安心感を与えることができたり、SEO的にも多少のプラス効果があったりと嬉しい要素があります。
ブログやサイトの常時SSL化の設定は無料で簡単にできるので、できるだけ早めに導入しておくことをおすすめします。
ブログやサイトをすでに運営している方でまだSSL化していない場合は移行への作業が必要になりますが、私も途中からSSL化したので以下の記事が参考になるかと思います。
もっと簡単にセキュリティ対策したい方は
①:SiteGuard WP Plugin
これはWordPressの国産セキュリティプラグインなので、日本語にしっかり対応していて有効化するだけで使用できるので初心者の方でも安心です。
「SiteGuard WP Plugin」の主なセキュリティ機能としては、
- ログインページ(wp-login.php)のネーム変更
- wp-admin階層のファイルに対するアクセス制限
- ログイン・コメントページ等に画像認証追加
- 複数回のログイン失敗による一定期間ロック
このプラグイン1つで、WordPressの重要なファイルへのアクセス制限や、ログインページなどのセキュリティ強化が行えます。
ハッカーは機械的に不特定多数に攻撃を仕掛けてくるので、「SiteGuard WP Plugin」を導入するだけでもセキュリティ対策になります。
②:Google Authenticatorプラグイン
「Google Authenticator」はGoogleが提供している「2段階認証システム」で、ユーザー名(ID)とパスワードとは別にもう1段認証を増やすものです。
Google Authenticatorの2段階認証では、ワンタイムパスワードという1度限り有効な使い捨てパスが採用されています。
スマホアプリとWordPressを連携してログイン強化が行えるので、認証コードが表示されるスマホがないと基本ログインはできません。
2段階認証によるログインでは認証コードが毎回変化するので、ハッキングや乗っ取りに対して非常に有効になります。
2段階認証を設定するには、WordPressで「Google Authenticator」プラグインをインストール&有効化し、左メニューの「ユーザー」⇒「あなたのプロフィール」に移動します。
そうすると、以下のように「Google Authenticator Settings」の項目が追加されているはずです。
次に「Active」にチェックして、「Secret」のシークレットコードを控えるか、QRコードを後でスマホアプリで読み込みます。
「Description」はアプリ側で表示される名前になるので、わかりやすいものに変更して下部の「プロフィールを更新」をクリックしましょう。
「Google Authenticator」のスマホアプリは以下からダウンロードできます。
アプリが起動できたら、先程のシークレットコードを入力するかQRコードをスキャンして、アプリ内にWordPressアカウントを追加します。
これでスマホアプリに6桁の認証コード(ワンタイムパスワード)が表示されるはずです。
あとはいつものWordPressログイン画面で、ユーザー名とパスワードにプラスして「Google Authenticator」の認証コードを入力する形になります。
これで2段階認証によるセキュリティ対策は完了になります。
スマホアプリによる2段階認証は、スマホの紛失・故障でログインできなくなる可能性があります。
もしその状況になってしまった場合は、FTPソフトを利用してプラグインを一旦WordPressからローカル側に移すことでログインできるようになります。
2段階認証を解除したい場合は、「Active」のチェックを外して変更内容を更新すればOKです。
WordPressのログイン画面には認証コードを入力する項目は残っていますが、Activeでなければ入力しなくてもログインできます。
WordPressのセキュリティ対策まとめ
WordPressはシステム上脆弱性が見つかりやすいので、ハッキングや乗っ取りの被害に遭うリスクがあります。
ブログやサイトの人気があろうが無かろうが、コンテンツが多かろうが少なかろうが関係なく、悪意的な攻撃を受ける可能性は常にどこにでも存在しています。
多くの人はこうしたセキュリティ面の対策は少し面倒に感じるかもしれません。
ですが、WordPressで運営を行っていくなら自分の資産となるブログやサイトを守るためにも、セキュリティ対策は必ずやっておくようにしましょう。