WEB担必見!WordPressのセキュリティ対策の基本と強化方法

WordPressを既に利用している・これから利用しようと考えている方にとっては、セキュリティについて気になる方も多いのではないでしょうか?

まず、そもそもWordPressのセキュリティ対策は必要か?という疑問については、セキュリティ対策は必要です。

そのため、セキュリティ対策が必要な理由とリスクを把握しておき、可能な限り対策をしておくことが重要です。必ずやっておくべき対応策もありますが、サイトの特性によっては必要な対応策が変わることもあります。
自身のサイトにとってはどのようなリスクが存在し、そのリスクに対してどのようなセキュリティ対策を実施しているかを把握しておくことはとても重要です。

またWordPressのセキュリティ対策は、プラグインを利用する場合と、利用しない場合の大きく分けて2方針存在します。今回はプラグインを利用しない場合についてご説明します。理由については後述いたします。

今回は最低限対応しておくべきセキュリティ対策について説明させていただきます。この対策を実施するだけで、WordPressのサイトをそのまま公開するよりも、セキュリティがずっと強化されますので、最後までご覧ください。

wordpress保守サービス

WordPressのセキュリティ対策が必要な理由

WordPressは世界的に最も人気のあるオープンソースのCMSです。
W3Techsによると、2023年5月時点で約43.2%のWebサイトがWordPressで構築されています。
つまり、WordPressのソースコードは全世界に公開されており、かつ利用者もとても多いので、悪意のある攻撃者からすると、とても効率よく攻撃が可能なCMSということになります。
また、WordPress本体だけでなく、人気のプラグインも攻撃のターゲットにされることが多いので注意が必要です。

WordPressのセキュリティ対策をしない場合のリスク

サイトへの不正アクセス

セキュリティの脆弱性がある場合、攻撃者に不正にサイトにアクセスされてしまい、コンテンツを改ざんされてしまったり、重要なデータを盗まれたりすることがあります。
これにより、サイトだけではなく、ビジネスの信頼を落とす可能性もあります。

マルウェアの侵入

セキュリティの脆弱性があるWordPressサイトは、マルウェアやスパムの侵入リスクが高まります。
攻撃者は不正なコードを挿入し、訪問者に対して悪意のあるプログラムをダウンロードさせることがあります。これにより、サイトの正当な利用者に悪影響が及ぶ可能性があります。
またそれだけではなく、Webサイトが攻撃者によってDDoS攻撃の踏み台にされる可能性もあります。

2023年5月時点でよくあるマルウェア侵入の例も記事にしていますので、お時間がある際に一読ください。
一度侵入されてしまうと、バックドアを仕掛けられる例が非常に多いため、サイトをクリーンアップするのが中々困難な場合があります。そのため侵入される前に対策することがとても重要です。

 

検索エンジンからのランキング低下

セキュリティの脆弱性があるサイトは、危険なサイトと判断されるため、検索エンジンによって信頼性が低いと見なされる可能性があります
検索エンジンはセキュリティの強化を重視しており、セキュアなサイトを優先的に表示する傾向があります。セキュリティ対策を怠ると、サイトのランキングが下がり、アクセスやビジネスの機会を失う可能性があります。

最低限必要なWordPressのセキュリティ対策

それでは具体的なセキュリティ対策を詳しく解説していきます。
セキュリティ対策を実施する場合、サイト自体が表示されない、管理画面にログインできないなどの不具合が起きる可能性があるので必ずバックアップを取り、復元が可能な状態で作業してください。

WordPressのバージョンは常に最新にアップデートする

WordPressは機能の追加や、セキュリティへの改善でバージョンアップが行われています。WordPressは常に脆弱性が発見され、アップデートを繰り返しておきます。そのため、必ず最新のバージョンにしておくようにしましょう。

プラグインも常に最新にアップデートする

プラグインから脆弱性が発見されることもあります。WordPressと同様に常に最新のバージョンを使用するようにし、また不要なプラグインは削除しておくようにしましょう。
下記ページなどで、脆弱性の情報は常に更新されています。日ごろからこまめに注意を払っておくことも重要です。

不要なテーマを削除する

特にデフォルトで搭載されている未使用のテーマは放置されがちです。それらは更新通知が来ても無視されることが多く、セキュリティホールのリスクとなります。使用していないテーマは、WordPressから削除しましょう。

ユーザー名とパスワードを複雑なものにする

WordPressは管理画面がWEB上に公開されています。そのため、ユーザー名とパスワードが分かれば、だれでもログインする事ができます。そのため、他人からは推察されにくいユーザー名とパスワードにしておきましょうパスワードを作成するツールもあるので、利用すると便利です。

ローカル環境の「Local by Flywheel」でWEBサイトを構築し、そのまま公開してしまうとユーザー名を兼ねる管理者のメールアドレスがデフォルトの「dev-email@flywheel.local」になっている可能性があります。この場合、攻撃者にユーザー名がバレてしまっている状態と同様です。公開する際には変更するようにしましょう。

セキュリティ対策はプラグインを利用すべきかどうか

その他にも設定すべきセキュリティ対策がWordPressには色々とあり、
セキュリティ対策はプラグインを利用しても実施することができます。
ただもし、実施したいセキュリティー対策がプラグインを利用せずに対応できる場合は、プラグインを使用せずに対策する方をおすすめしております。
プラグインを利用する場合下記のようなデメリットが存在します。

  1. 開発が終了してしまった場合、逆にセキュリティ上のリスクが発生する可能性がある
    多くのプラグインは無料で提供されており、開発が突然終了する可能性があります。その場合、プラグインをインストールしていることが逆にリスクになる場合があります。

  2. プラグインのバージョンアップをし続ける必要がある
    1.とほぼ同様ですが、プラグインの場合バージョンアップをしなければ、プラグインをインストールをしていることがリスクになる可能性があります。ただしプラグインのバージョンアップを不用意に実施すると、サイトが表示されないなどの影響発生する場合があります。

  3. 不要な機能などがついており、他のプラグインなどとバッティングする
    プラグインをインストールすると、ほとんどの場合に把握していない機能がついてきます。その場合、バージョンアップをした際などに、サイトに影響が出てしまうことがありバージョンアップが実質できなくなるケースが存在します。

そのため可能であればプラグインを利用せずに、自身でセキュリティ対策を実施し、対応することをおすすめします。

セキュリティ対策にプラグインを利用する場合

WordPressのカスタマイズすることは難しくセキュリティ対策を実施できない場合は、実績があるプラグインを利用してセキュリティ対策を実施することをおすすめします。
ここでもおすすめのプラグインを紹介させていただきます。お勧めするポイントは下記になります。

  1. 常にバージョンアップが実施されている
    先ほどご説明したように、バージョンアップされないプラグインをインストールしておくこと自体がリスクになる可能性があります。そのため、常にバージョンアップが実施されているプラグインを選定する必要があります。
  2. インストール数が多い
    インストール数が多い人気のプラグインだと今後もアップデートが実施される可能性が高いと想定されます。そのためなるべく人気のプラグインを選定しましょう。
  3. 日本語に対応されている
    日本語に対応されていないと、どのような機能がついているかが判断できない場合があります。なるべく日本語に対応しているプラグインを選定しましょう。

他にも気にしてみる点として、ラグインによって、対応可能な対策や方針が異なってきます
どのような機能をもっているプラグインがサイトに向いているか調査してみるのも良いかと思います。

ここでは「SiteGuard WP Plugin」をおすすめさせていただきます。

Guard WP Plugin

画像引用元:https://ja.wordpress.org/plugins/siteguard/

SiteGuard WP Pluginは、WordPressにインストールするだけで、セキュリティを向上させることができるセキュリティプラグインです。国産プラグインなので各項目の説明が、しっかりとした日本語に対応されている点も助かります。

インストール数など※2023年5月現在

有効インストール数500,000
WordPress バージョン3.9またはそれ以降
言語国産

主な機能

管理ページアクセス制限ログインしていない接続元から管理ディレクトリ(/wp-admin/)を守ります。
ログインページ変更ログインページ名を変更します。
画像認証ログインページ、コメント投稿に画像認証を追加します。
ログイン詳細エラーメッセージの無効化ログインエラー時の詳細なエラーメッセージに変えて、単一のメッセージを返します。
ログインロックログイン失敗を繰り返す接続元を一定期間ロックします。
ログインアラートログインがあったことを、メールで通知します。
フェールワンス正しい入力を行っても、ログインを一回失敗します。
XMLRPC防御XMLRPCの悪用を防ぎます。
ユーザー名漏洩防御ユーザー名の漏洩を防ぎます。
更新通知WordPress、プラグイン、テーマの更新を、メールで通知します。
WAFチューニングサポートWAF (SiteGuard Lite)の除外リストを作成します。

 

セキュリティ対策にプラグインを利用しない場合

さて本題のプラグインを利用しないセキュリティ対策を説明します。
下記ページで無料のWordPressセキュリティ対策チェックリストを配布しておりますので、気になる方はお問い合わせください。

繰り返しになりますが、セキュリティ対策を実施する場合、サイト自体が表示されない、管理画面にログインできないなどの不具合が起きる可能性があるので必ずバックアップを取り、復元が可能な状態で作業をお願いします。

管理画面にBASIC認証をかける

管理画面はURLを知っていると誰でもアクセスできる状態になっています。それを防ぐために管理画面にBASIC認証をかけておくようにしましょう。
「.htaccess」に以下の記述を追記し、「.htpasswd」をサーバーにアップロードします。
運用上の問題がない場合は、管理画面にIP制限の方をかける方がよりセキュリティが強化されます。また併せて管理画面のURLを変更しておくことと、セキュリティ強化につながります。

<Files wp-login.php>
AuthType Basic
AuthUserFile /* サーバーのパス *//.htpasswd
AuthGroupFile /dev/null
AuthName “Please enter your ID and password”
require valid-user
</Files>

WordPressバージョンを隠す

バージョンは特に問題になるような情報では無いのですが、セキュリティホールが発見されているバージョンを使っている場合は、公開すべきでない情報になるため無効化しておく方が良いです。

以下のコードを「functions.php」に追記します。

remove_action(‘wp_head’,’wp_generator’);

wp-config.php へのアクセスを制限する

「wp-config.php」には、データベースへの接続情報が記載されている重要なファイルです。 そのため、外部からのアクセスを拒否しておくことが望ましいです。

以下のコードを「.htaccess」に追記します。

<Files wp-config\.php>
Order deny,allow
Deny from all
</Files>

REST APIを禁止する

WordPressはデフォルトで、「REST API」が有効になっています。
「REST API」の脆弱性を突いたコンテンツ改ざんも発生しているため、使用しない場合は無効化します。
ただし、「REST API」はプラグインで利用されている場合があります。「REST API」を禁止しても、きちんとWEBサイトが動作するかは必ず確認するようにしましょう。

以下のコードを「functions.php」に追記します。

function my_rest_endpoints( $endpoints ) {
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攻撃、ブルートフォースアタックの対象にされてしまうことがあるため、使用しない場合は無効化しておきましょう。

以下の記述を「.htaccess」に追記します。

<Files xmlrpc.php>
Order deny,allow
deny from All
</Files>

オーサー情報の保護をする

WordPressは投稿者ごとに投稿者アーカイブが作成されます。ユーザー名を知られるとブルートフォースアタックの成功率が上がる可能性があるため、不要な場合は無効化します。

以下のコードを「functions.php」に追記します。

function my_template_redirect() {
if( is_author() ) {
wp_redirect( home_url());
exit;
}
}
add_action( ‘template_redirect’, ‘my_template_redirect’ );

Pingbackを無効する

WordPressはPingback機能で他のブログからの通知を受け付けることができます。
スパムのトラックバックやコメントの可能性があるため、不要な場合は無効化します。

以下の記述をfunctions.php に追記します。

function my_pre_ping( &$links ) {
$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サイトが壊れてしまう可能性もあります。

WPセンター安心サポート
WPセンター安心サポート

WordPressの保守サービスはWPセンターのように初期費用0円で始められるサービスも存在します。どうするか判断に悩む場合には専門家に相談してみましょう。

おすすめ記事
御社のWordPress ハッキングへの対策は万全ですか?
WordPressの保守運用代行サービスがあることをご存知ですか?無料で便利な一方 常にハッキングのリスクがつきまとうWordPress その不安を解消するために多くの法人や制作会社はWordPressの保守運用代行サービスを利用しています。こちらの記事ではサービス内容や費用相場を紹介しています。
セキュリティ
WPセンターブログ | web担当者のためのWordPressガイド

コメント

タイトルとURLをコピーしました