WordPressを既に利用している・これから利用しようと考えている方にとっては、セキュリティについて気になる方も多いのではないでしょうか?
まず、そもそもWordPressのセキュリティ対策は必要か?という疑問については、セキュリティ対策は必要です。
そのため、セキュリティ対策が必要な理由とリスクを把握しておき、可能な限り対策をしておくことが重要です。必ずやっておくべき対応策もありますが、ECサイトやフォーラムサイト、コーポレートサイトなどサイトの特性によっては必要な対応策が変わることもあります。
まずは自身のサイトにとってはどのようなリスクが存在し、そのリスクに対してどのようなセキュリティ対策を実施しているかを把握しておくことはとても重要です。
またWordPressのセキュリティ対策を実施する上で、プラグインを活用する場合と、活用しない場合の大きく分けて2方針存在します。どちらでのセキュリティ対策にもメリット・デメリットがありますが、基本的な方針は変わりません。
今回は必ず対応しておくべきセキュリティ対策についても説明させていただきます。この対策を実施するだけで、WordPressのサイトをそのまま公開するよりも、セキュリティがずっと強化されますので、最後までご覧ください。
WordPressのセキュリティ対策が必要な理由
WordPressは世界的に最も人気のあるオープンソースのCMSです。
W3Techsによると、2023年5月時点で約43.2%のWebサイトがWordPressで構築されています。
つまり、WordPressのソースコードは全世界に公開されており、かつ利用者もとても多いので、悪意のある攻撃者からすると、とても効率よく攻撃が可能なCMSということになります。
また、WordPress本体だけでなく、人気のプラグインも攻撃のターゲットにされることが多いので注意が必要です。
実際に、JVNの脆弱性レポートでも2024年1月から9月までの間に、62件ほど脆弱性が発表されています。
WordPressのセキュリティ対策をしない場合のリスク
WordPressサイトが攻撃されてしまった場合のよくあるリスクを紹介します。いずれもビジネスにとって悪影響を及ぼす可能性があります。
サイトへの不正アクセス
セキュリティの脆弱性がある場合、攻撃者に不正にサイトにアクセスされてしまい、コンテンツを改ざんされてしまったり、重要なデータを盗まれたりすることがあります。
これにより、サイトだけではなく、ビジネスの信頼を落とす可能性もあります。
マルウェアの侵入
セキュリティの脆弱性があるWordPressサイトは、マルウェアやスパムの侵入リスクが高まります。
攻撃者は不正なコードを挿入し、訪問者に対して悪意のあるプログラムをダウンロードさせることがあります。これにより、サイトの正当な利用者に悪影響が及ぶ可能性があります。
またそれだけではなく、Webサイトが攻撃者によってDDoS攻撃の踏み台にされる可能性もあります。
2023年5月時点でよくあるマルウェア侵入の例も記事にしていますので、お時間がある際に一読ください。
一度侵入されてしまうと、バックドアを仕掛けられる例が非常に多いため、サイトをクリーンアップするのが中々困難な場合があります。そのため侵入される前に対策することがとても重要です。
検索エンジンからのランキング低下
セキュリティの脆弱性があるサイトは、危険なサイトと判断されるため、検索エンジンによって信頼性が低いと見なされる可能性があります。
検索エンジンはセキュリティの強化を重視しており、セキュアなサイトを優先的に表示する傾向があります。セキュリティ対策を怠ると、サイトのランキングが下がり、アクセスやビジネスの機会を失う可能性があります。
WordPressのセキュリティ対策方針
基本的にWordPressのセキュリティ対策方針は大きく3つです。
- 脆弱性対策された最新のWordPressを利用する
- Webサイトで利用していない不要な機能を使えないようにしておく
- ユーザーが入力などのインプットができる機能を徹底的に対策する
この3方針に則り、セキュリティ対策を実施すれば、基本的にWordPressサイトは公開後も長く安全に運用していくことが可能です。
最低限必要なWordPressのセキュリティ対策
それでは対策方針に則て具体的なセキュリティ対策を詳しく解説していきます。
セキュリティ対策を実施する場合、エラーがある状態でサイトを公開してしまうとサイト自体が表示されない、管理画面にログインできないなどの不具合が起きる可能性があるので必ずバックアップを取り、復元が可能な状態で作業してください。
1.脆弱性対策された最新のWordPressを利用する
WordPressのバージョンは常に最新にアップデートする
WordPressは機能の追加や、セキュリティへの改善でバージョンアップが行われています。WordPressは常時、脆弱性が発見されるため、それを補完するバージョンの提供が繰り返しています。そのため、必ず最新のバージョンにしておくようにしましょう。そうすることで、セキュリティ対策が施されたWordPressを利用することができます。
プラグインも常に最新にアップデートする
プラグインから脆弱性が発見されることもあります。WordPressと同様に常に最新のバージョンを使用するようにしましょう。また不要なプラグインを削除しておくようにしましょう。利用しているプラグインの個数が少ないことで、脆弱性が発見される可能性が減少します。
下記ページなどで、脆弱性の情報は常に更新されています。日ごろからこまめに注意を払って、利用しているWordPressやプラグインのバージョンに問題無いかを確認しておくこともとても重要です。
2.Webサイトで利用していない不要な機能を使えないようにしておく
WordPressには多くの利用しない機能がデフォルトで搭載されています。また、以前は利用していたけれど現在は利用していないプラグインなどがそのまま放置されていることも多くあります。そのため、それらの機能を削除するか利用不可にし、脆弱性がもし発見された場合でも攻撃の対象にならないようにしましょう。
デフォルトで搭載されている機能を利用不可にする
基本的にはWordPressのセキュリティ対策はこの対策をするためにプラグインを利用します。
プラグインを利用する場合は、推奨の設定に応じて対策してみてください。プラグインを利用しない場合でも最低限必要な対策を後述します。
例えば「xmlrpc.php」など通常の運用では利用ない機能がWordPressには多く搭載されています。しかし、それらの脆弱性を狙って攻撃されてしまうこともあるため、プラグインを活用するなどして、利用していない機能を利用不可の状態に使用するようにしましょう。
不要なテーマやプラグインを削除する
テーマからも脆弱性が発見されることもあります。そのため、不要なテーマは削除するようにしましょう。
特にデフォルトで搭載されている未使用のテーマは放置されがちです。それらは更新通知が来ても無視されることが多く、セキュリティホールのリスクとなります。使用していないテーマは、WordPressから削除しましょう。
プラグイン同様です。利用していないものから脆弱性が発見される場合がありますので、不要なプラグインは削除するようにしましょう。
ユーザーが入力などのインプットができる機能を徹底的に対策する
管理画面やお問い合わせフォーム、コメントなどはユーザーが入力できる機能になります。そのため、そこから攻撃されないように対策を強化する必要があります。
お問い合わせフォームにreCAPTCHAを活用する
WordPressに限らず、お問い合わせフォームはユーザーが入力できるため攻撃の対象となってしまいます。
ただしWordPressのお問い合わせフォームの多くは、「Contact Form 7」「MW WP Form」などのプラグインで構築されているため、簡単にreCAPTCHA機能を活用することが可能です。
そのため、WordPressでお問い合わせフォームを構築する場合は、「Contact Form 7」などの多く利用されているプラグインで構築し、reCAPTCHA機能を活用するようにしましょう。
ユーザー名とパスワードを複雑なものにする
WordPressは管理画面がWEB上に公開されています。そのため、ユーザー名とパスワードが分かれば、だれでもログインする事ができます。そのため、他人からは推察されにくいユーザー名とパスワードにしておきましょう。パスワードを作成するツールもあるので、利用すると便利です。
ローカル環境の「Local by Flywheel」でWEBサイトを構築し、そのまま公開してしまうとユーザー名を兼ねる管理者のメールアドレスがデフォルトの「dev-email@flywheel.local」になっている可能性があります。この場合、攻撃者にユーザー名がバレてしまっている状態と同様です。公開する際には必ず変更するようにしましょう。
セキュリティ対策にプラグインを活用すべきかどうか
セキュリティを強化する上で、プラグイン活用すると簡単に対策することができます。
ただもし、実施したいセキュリティ対策がプラグインを利用せずに対応できる場合は、プラグインを使用せずに対策する方をおすすめしております。
プラグインを利用する場合下記のようなデメリットが存在します。
- 開発が終了してしまった場合、逆にセキュリティ上のリスクが発生する可能性がある
多くのプラグインは無料で提供されており、開発が突然終了する可能性があります。その場合、プラグインから脆弱性が発見されても、バージョンアップがされないためプラグインをインストールしていることが逆にリスクになる場合があります。 - プラグインのバージョンアップをし続ける必要がある
1.とほぼ同様ですが、プラグインの場合バージョンアップをしなければ、プラグインをインストールをしていることがリスクになる可能性があります。ただしプラグインのバージョンアップを不用意に実施すると、WordPressのバージョンとかみ合わない場合、サイトが表示されないなどの不具合が発生する場合があります。 - 不要な機能などがついており、他のプラグインなどとバッティングする
プラグインをインストールすると、ほとんどの場合に把握していない機能がついてきます。その場合、バージョンアップをした際などに、サイトに影響が出てしまうことがありバージョンアップが実質できなくなるケースが存在します。
そのため可能であればプラグインを利用せずに、自身でセキュリティ対策を実施し、基本的な対応をすることをおすすめします。
セキュリティ対策にプラグインを利用する場合
WordPressのカスタマイズすることは難しくセキュリティ対策を実施できない場合は、実績があるプラグインを利用してセキュリティ対策を実施することをおすすめします。
このページでもおすすめのプラグインを紹介させていただきます。お勧めするポイントは下記になります。
- 常にバージョンアップが実施されている
先ほどご説明したように、バージョンアップされないプラグインをインストールしておくこと自体がリスクになる可能性があります。そのため、常にバージョンアップが実施されているプラグインを選定する必要があります。 - インストール数が多い
インストール数が多い人気のプラグインだと今後もアップデートが実施される可能性が高いと想定されます。そのためなるべく人気のプラグインを選定しましょう。 - 日本語に対応されている
日本語に対応されていないと、どのような機能がついているかが判断できない場合があります。なるべく日本語に対応しているプラグインを選定しましょう。
他にも気にしてみる点として、プラグインによって、対応可能な対策や方針が異なってきます。
どのような機能をもっているプラグインがサイトに向いているか調査してみるのも良いかと思います。
このページでは「SiteGuard WP Plugin」をおすすめさせていただきます。
SiteGuard WP Plugin
SiteGuard WP Pluginは、WordPressにインストールするだけで、セキュリティを向上させることができるセキュリティプラグインです。国産プラグインなので各項目の説明が、しっかりとした日本語に対応されている点も助かります。推奨の設定でセキュリティ対策を実施してください。
インストール数など※2024年9月現在
有効インストール数 | 500,000+ |
---|---|
WordPress バージョン | 3.9またはそれ以降 |
言語 | 国産 |
レビュー | 4.3 |
主な機能
管理ページアクセス制限 | ログインしていない接続元から管理ディレクトリ(/wp-admin/)を守ります。 |
---|---|
ログインページ変更 | ログインページ名を変更します。 |
画像認証 | ログインページ、コメント投稿に画像認証を追加します。 |
ログイン詳細エラーメッセージの無効化 | ログインエラー時の詳細なエラーメッセージに変えて、単一のメッセージを返します。 |
ログインロック | ログイン失敗を繰り返す接続元を一定期間ロックします。 |
ログインアラート | ログインがあったことを、メールで通知します。 |
フェールワンス | 正しい入力を行っても、ログインを一回失敗します。 |
XMLRPC防御 | XMLRPCの悪用を防ぎます。 |
ユーザー名漏洩防御 | ユーザー名の漏洩を防ぎます。 |
更新通知 | WordPress、プラグイン、テーマの更新を、メールで通知します。 |
WAFチューニングサポート | WAF (SiteGuard Lite)の除外リストを作成します。 |
セキュリティ対策にプラグインを活用しない場合
プラグインを利用しないで最低限実施すべきセキュリティ対策を説明します。基本的には不要な機能・情報を外から利用できないように対策をしています。
下記ページで無料のWordPressセキュリティ対策チェックリストを配布しておりますので、気になる方はお問い合わせください。
繰り返しになりますが、セキュリティ対策を実施する場合、サイト自体が表示されない、管理画面にログインできないなどの不具合が起きる可能性があるので必ずバックアップを取り、復元が可能な状態で作業をお願いします。
管理画面にBASIC認証をかける
管理画面はURLを知っていると誰でもアクセスできる状態になっています。それを防ぐために管理画面にBASIC認証をかけておくようにしましょう。
「.htaccess」に以下の記述を追記し、「.htpasswd」をサーバーにアップロードします。
運用上の問題がない場合は、管理画面にIP制限の方をかける方が、よりセキュリティが強化されます。また併せて管理画面のURLを変更しておくことと、セキュリティ強化につながります。
対象ファイル
.htaccess
実装方法
AuthType Basic
AuthUserFile /* サーバーのパス *//.htpasswd
AuthGroupFile /dev/null
AuthName “Please enter your ID and password”
require valid-user
</Files>
WordPressバージョンを隠す
バージョンは特に問題になるような情報では無いのですが、セキュリティホールが発見されているバージョンを使っている場合は、公開すべきでない情報になるため無効化しておく方がよりセキュリティ対策としては良いです。
以下のコードを「functions.php」に追記することで、WordPressのバージョン情報が公開されないようになります。
対象ファイル
functions.php
実装方法
wp-config.php へのアクセスを制限する
「wp-config.php」には、データベースへの接続情報が記載されており、このファイルの情報が抜き取られるとサイトが自由に書き換えられてしまう可能性があるとても重要なファイルです。 そのため、外部からのアクセスを拒否しておくことが望ましいです。
以下のコードを「.htaccess」に追記します。
対象ファイル
.htaccess
実装方法
Order deny,allow
Deny from all
</Files>
REST APIを禁止する
WordPressはデフォルトで、「REST API」が有効になっています。
「REST API」の脆弱性を突いたコンテンツ改ざんも発生しているため、使用しない場合は無効化します。
ただし、「REST API」はお問い合わせフォームなどの重要なプラグインで利用されている場合があります。「REST API」を禁止しても、きちんとWEBサイトが動作するかは必ず確認するようにしましょう。
以下のコードを「functions.php」に追記します。
対象ファイル
functions.php
実装方法
if ( isset( $endpoints[‘/wp/v2/users’] ) ) {
unset( $endpoints[‘/wp/v2/users’] );
}
if ( isset( $endpoints[‘/wp/v2/users/(?P[\d]+)’] ) ) {
unset( $endpoints[‘/wp/v2/users/(?P[\d]+)’] );
}
return $endpoints;
}
add_filter( ‘rest_endpoints’, ‘my_rest_endpoints’, 10, 1 );
xmlrpc.phpを停止する
「xmlrpc.php」はWordPress専用のスマホアプリなどで使用されます。ただし、このファイルはDDoS攻撃、ブルートフォースアタックの対象にされてしまうことがあるため、スマホアプリなどでWordPressを操作しない場合は無効化するようにしておきましょう。
以下の記述を「.htaccess」に追記します。
対象ファイル
.htaccess
実装方法
Order deny,allow
deny from All
</Files>
オーサー情報の保護をする
以下のコードを「functions.php」に追記します。
対象ファイル
functions.php
実装方法
if( is_author() ) {
wp_redirect( home_url());
exit;
}
}
add_action( ‘template_redirect’, ‘my_template_redirect’ );
Pingbackを無効する
スパムのトラックバックやコメントの可能性があるため、この機能を利用していない場合は無効化しするようしておきましょう。
以下の記述をfunctions.php に追記します。
対象ファイル
functions.php
実装方法
$home = get_option( ‘home’ );
foreach ( $links as $l => $link ){
if ( 0 === strpos( $link, $home ) ){
unset($links[$l]);
}
}
}
add_action( ‘pre_ping’, ‘my_pre_ping’ );
まとめ
いかがでしたでしょうか?WordPressの最低限必要なセキュリティ対策について説明してみました。
この他にも、管理画面のURLを変更したり、ファイルやフォルダのパーミッションをきちんと設定するなどの対策が可能です。
今回は基本的には自身のセキュリティ対策を把握しやすいように「functions.php」と「.htaccess」で設定できることに関してご紹介しました。
セキュリティ対策に関しては、これを設定しておけば完璧という事ではないので常にバージョンアップを行い、バックアップを取り、いつでも最新の状態に戻せるようにしておくことが大事です。
また、セキュリティ対策を行うことで、逆にWEBサイトが壊れてしまう可能性もあります。もし「functions.php」と「.htaccess」を修正することに不安がある場合は、プラグインでの対策でも問題は無いので、プラグインを活用して最低限対応するようにしましょう。どのような対策が必要かよく分からないなどの課題がある場合は、是非WPセンターに一度お問い合わせください。
WordPressの保守サービスはWPセンターのように初期費用0円で始められるサービスも存在します。どうするか判断に悩む場合には専門家に相談してみましょう。
コメント