xWordPressのセキュリティ対策テクニック&役立つプラグイン7選
Contents
WordPressのセキュリティ対策テクニック&役立つプラグイン7選
WordPressは、専門的な知識がなくてもサイト管理を楽に行える、世界でもっとも利用されているCMSです。しかし、世界中から利用されているだけに不正アクセスの温床になりやすく、脆弱性の報告も多いのが現状。しっかりとセキュリティ対策をしておかないと、重大な情報が漏れないとも限りません。
WordPressは保障やアフターフォローのある有料サービスではなく、誰もが自由に使えるオープンソースのシステムです。Web制作会社に管理を任せていない場合、情報の流出などで責任を負うのは自分。しっかりと自身でセキュリティ対策を行いましょう。
ここでは、WordPressで構築したサイトのセキュリティを向上させる方法やおすすめプラグインをご紹介します。
■セキュリティ対策を実行する前に
セキュリティ向上のためには、システムの変更やプラグインの導入が必要です。しかしこれが原因でサイトに不具合が起こる可能性もあるので、まずはデータベースのバックアップをとっておきましょう。
バックアップは、データベース管理ツール「phpMyAdmin」の「エクスポート」タブから実行できます。
また、「サイトが表示されなくなった」などのトラブルを避けるために、テーマファイルのバックアップも取っておきましょう。テーマファイルでもっとも重要なのはfunctions.phpで、wp-contentディレクトリの「themes」フォルダ内にあります。念のため、テーマフォルダごとダウンロードしておくことをおすすめします。
■WordPress本体に行うセキュリティ対策
1.最新バージョンにアップデートする
まずはWordPress本体を最新版にアップデートしましょう。古いバージョンほど脆弱性が潜んでいます。最新版になっているかどうかは、ダッシュボードの「更新」から確認することができます。
最新版になっていなければ画面左上にメッセージが出ますので、「今すぐ更新してください」というリンクをクリックすれば更新が始まります。最新版にアップデートされると、このように表示されます。
WordPressは、自動で更新される場合と、手動更新を行わなければならない場合があります。自動で更新されるのは、バグ修正やセキュリティ対策など小さなアップデートがあった場合で、WordPressに登録しているメールアドレスに「更新されました」というメールが届きます。一方、機能の追加などの大きなアップデートは手動で更新しなければいけません。管理画面に通知がないか、こまめにチェックすることが大切です。
2.バージョン情報はソースに表示させない
WordPressをデフォルトのまま使用すると、下記のように、ソースにバージョン情報が記載されます。
しかし、最新版を使っていない場合、この記述は攻撃されやすい古いバージョンを使用していると公言しているようなもの。まずは最新バージョンに更新することが大切ですが、不要なバージョン情報もソースからは消しておきましょう。
バージョン情報を非表示にするには、テーマフォルダ内にあるfunctions.phpに下記のコードを追記します。
remove_action(‘wp_head’,’wp_generator’);
3.「admin」というユーザー名は使わない
adminは、WordPressをインストールした時点で自動的に設定されるユーザー名です。そのまま使ってしまう方もいますが、不正アクセスの総当たり攻撃でターゲットにされてしまう恐れがあり危険です。ユーザーは自分で別のものを発行しadminユーザーは削除してしまうか、ユーザー名を変更しましょう。
ユーザー名は、ダッシュボードの「ユーザー」から確認できます。
4.推測されやすいパスワードを使わない
WordPressでは、アカウント作成時に自動的にパスワードが生成されます。自分の覚えやすいパスワードに変更して使う方が多いですが、意味のある単語が入った文字列をパスワードにすると、解読される危険性は高まります。規則性のない文字列と数字の組み合わせを使うのが一番安全です。
5.プレフィックスを変更する
WordPressのデータは、デフォルトで全て「wp」というプレフィックスが付いています。このまま利用すると、データベースの場所を特定される危険性が高まります。オリジナルの文字に変更しておきましょう。
6.XML-RPCにアクセス制限をかける
XML-RPC(Extensible Markup Language – Remote Procedure Call)は、管理画面以外からもAPIを使って記事の投稿ができるようになる機能を持つファイルです。例えば、WordPressアプリを使ってスマホから更新や編集をする際にこのファイルが必要になります。
便利ではありますが、この機能を悪用して第三者サイトへのDDoS攻撃が行われるケースがあります。アクセス制限をかけて、自分以外のIPアドレスからのアクセスは拒否しましょう。
・.htaccessに下記のコードを追加する
Order Deny,Allow
Deny from all
Allow from
XXX.XXX.XX.XX
XXX.XXX.XX.XX
の部分には、許可したいIPアドレスを記述します。
なお、スマホからの投稿など、特に外部から編集を行わない場合は全てのIPアドレスからのアクセスを拒否すればよいので、この行は不要です。
7.REST APIを無効にする
これもXML-RPCと同様、外部からの操作を可能にするための機能です。使わない場合はアクセス制限をかけておきましょう。
・.htaccessに下記のコードを追加する
RewriteEngine On
RewriteCond %{QUERY_STRING} rest_route=
RewriteRule ^$ /? [R=404,L]
8.主要ファイルへのアクセスを制限する
管理画面や設定ファイルなどは、それぞれIP制限をかけておきましょう。特に、データベースにアクセスするためのIDやパスワードが記述された「wp-config.php」に不正アクセスされてしまうと危険です。
・コメント機能へのアクセス制限
order allow,deny
deny from all
・設定ファイルへのアクセス制限
order allow,deny
deny from all
加えて、パーミッションを400に設定し、書き込みや実行権限を制限するとより安心です。
・管理画面へのアクセス制限
自分のIPアドレスは除外したいので、許可したいIPアドレスを最後の行で指定します。
order deny, allow
deny from all
allow from XXX.XXX.XX.XX
なお、管理画面からの各種操作も制限することができます。下記のコードを追記することで、テーマやプラグインのインストール、編集などの機能を停止させることができ、サイト改ざんなどを防止できます。
define(‘DISALLOW_FILE_MODS’,true);
9.ログインを二重ロックする
管理画面へのログインページ「wp-login.php」にBasic認証をかけることで、ロックを二重にでき、セキュリティが向上します。
まずは、htpasswdジェネレータ(https://kngy.net/htaccess_password_md5_hash/)を使ってパスワードファイルを作成しましょう。これを、DocumentRootより上に設置します。そして、.htaccessファイルに下記のように記述します。
AuthUserFile /フルパス/.htpasswd
AuthGroupFile /dev/null
AuthName “Please enter your ID and password”
AuthType Basic
require valid-user
10.認証用ユニークキーを設定する
認証用ユニークキーは、管理画面にアクセスしている時のCookie情報を暗号化するためのもので、セキュリティをより強固にします。AUTH_KEY、SECURE_AUTH_KEY、LOGGED_IN_KEY 、NONCE_KEYの4種類あるので、キージェネレータを利用してキーを取得し、wp-config.phpの「put your unique phrase here」の部分に設定します。
11.ファイルの一覧表示を無効化する
index.phpやindex.htmlが存在しないディレクトリにアクセスした際に、ディレクトリ内にあるファイルの一覧がブラウザに表示されてしまいます。しかし一部のファイルは不正アクセスに利用される場合があるので、エラーメッセージを表示するように設定しておきましょう。これは、WordPressに限らずサイトを作成したら必ずやっておきたいことです。
・.htaccessに下記のコードを追加する
Options -Indexes
ここまでは、WordPressへのログインや設定ファイルからの不正アクセスを防ぐ方法をご紹介しました。次は、プラグインやテーマの導入にあたっての注意点や、セキュリティ向上に役立つプラグインをご紹介します。
■プラグインやテーマを使用する時の注意点
1.公式のプラグイン・テーマを使う
WordPressには、インストールするだけでデザイン性の高いサイトにできるテーマや、非常に便利なプラグインが無数にあります。しかし、公開されているプラグインの中には、悪意のあるコードが埋め込まれている場合もあります。
一方、公式に公開されているプラグインは、WordPressの審査をパスしたものだけです。プラグインやテーマを使う際には公式に公開されているものを利用しましょう。
ただし、公式のものであっても何年も更新されていないプラグインはセキュリティ対策が不十分であることが多く、完全に安心とは言い切れないことは念頭に置いておきましょう。
2.不要なプラグインは削除する
インストールしただけで使っていないプラグインや、以前は使っていたけど今は使っていないプラグインはありませんか?プラグインは脆弱性が発生しやすく、セキュリティホールになる危険性が高いです。特に、開発者がメンテナンスをやめてしまったプラグインは危険です。
ダッシュボードの「インストール済みプラグイン」を開き、状態を確認してみてください。「有効化 | 削除」と表示されているプラグインは、インストールされているにも関わらず使用されていません。不要であれば削除してしまいましょう。
■セキュリティ対策に便利なプラグイン
・Akismet
(https://ja.wordpress.org/plugins/akismet/)
サイト内のお問い合わせフォームやコメント欄から送信されるスパムメールやスパムコメントをフィルター機能でブロックしてくれるプラグイン。WordPress2.0以降に標準で搭載されています。利用するには、無料のAPIキーが必要です。プラグインページ(https://akismet.com/wordpress/)から取得しましょう。
・SiteGuard WP Plugin
(https://ja.wordpress.org/plugins/siteguard/)
管理画面へのアクセス制限やデフォルトのログイン画面の変更、画像認証の導入など、基本的なセキュリティ対策に加え、更新が必要になった時に通知する機能やXML-RPCを無効にする機能、正しいIDとパスワードを入力しても一度は失敗させるフェールワンス機能など、これ一つで多方面のセキュリティを強化できる優れもの。日本のセキュリティ会社が開発した国産プラグインなので、日本語でしっかり説明されており、導入が簡単です。
・All In One WP Security & Firewall
https://ja.wordpress.org/plugins/all-in-one-wp-security-and-firewall/
Firewallの導入やスパムコメントのブロック機能、.htaccessなどの大事な設定ファイルのバックアップ、ログインページのURL変更など多彩な機能が備わっており、Site Guardと同様にこれ一つ導入すれば重要なセキュリティ対策は全てできます。また、どの程度セキュリティ対策ができているのかを数値化してくれます。
BulletProof Security
(https://ja.wordpress.org/plugins/bulletproof-security/)
.htaccessのバックアップや変更、データベースの自動バックアップ機能、一定時間操作のないアカウントの強制ログアウトなど、基本的な機能を備えたプラグインです。
Edit Author Slug
(https://ja.wordpress.org/plugins/edit-author-slug/)
不正アクセスを防ぐためには、パスワードだけでなくユーザー名も推測されにくいものにしておくことが大切です。しかし、ユーザー名は特定のURLにアクセスすれば簡単にバレてしまいます。そのURLがこちら。
http://WordPressサイトのアドレス/?author=1
すると、下記のようにユーザー名が入ったアドレスにリダイレクトされてしまいます。
http://WordPressサイトのアドレス/author/ユーザー名/
ユーザー名には、自動的に「1」「2」・・・と順番に数字が割り当てられています。それで、author=1など数字で指定すると、そのユーザーがアドレスバーや投稿者欄に表示されてしまうのです。プラグイン「Edit Author Slug」は、このユーザー名とは別のニックネームを設定することで、ユーザー名を隠すことができるプラグイン。設定も簡単にできますので、ぜひ活用してみてください。
iThemes Security
(https://ja.wordpress.org/plugins/better-wp-security/)
サイトがどの程度セキュリティ対策できているかを診断してくれるプラグインです。どの部分の対策が弱いかを視覚的に見せてくれるので、しなければいけないことが一目瞭然。IPアドレスなどからのアクセス制限機能や、ウェブアプリケーションを保護するWeb Application Firewall機能なども備わっています。
Wordfence
(https://ja.wordpress.org/plugins/wordfence/)
様々なセキュリティ対策をワンクリックで有効化、無効化できる便利なプラグイン。プラグインページは基本的に英語ですが、管理画面は一部日本語にも対応しています。セキュリティ診断に始まりファイルのパーミッション表示機能やブルートフォース機能などの他、セキュリティ向上のための高度な設定も満載。知識のある方はぜひ使ってみてください。
■まとめ
さまざまなセキュリティ対策方法をご紹介しましたが、不正アクセスにはさまざまな手法があり、日々巧妙化しています。ですから、「これだけやっておけば大丈夫!」というような対策はありません。脆弱性やセキュリティに関する新しい情報は積極的に取り入れ、日々、対策方法も更新していくことをおすすめします。
「これだけでは不安」という方は、専門の業者に任せるのも良いでしょう。