こんにちはTERUです。
フリーランスでホームページやECサイト制作を仕事にしています。
読者の悩み
- WordPressを利用し始めたけど、セキュリティ対策は何もしなくて大丈夫なの?
- 最低限実施すべきセキュリティ対策があれば知りたい
WordPressを利用する際は、必ずセキュリティ対策を行いましょう。
WordPressは多くのWEBサイトやブログで利用されているため人気がありますが、その分初心者も多く利用しており、初心者を狙った攻撃による被害は、日々発生しているからです。
本記事では、僕が実際にWordPressでサイトやブログを制作する際に行なっているセキュリティ対策についてご紹介いたします。
この記事を読んで分かること
- WordPressで実施しておくべきセキュリティ対策と設定方法が分かる
本記事の信頼性
- 4年以上フリーランスとしてWeb制作をメインに仕事をしている。
- WordPress案件の制作経験は100件以上。
- Web制作会社にてディレクターの経験もあり。
なぜWordPressでセキュリティ対策が必要なのか?
まずは、WordPressでセキュリティ対策が必要な理由を3つ解説します。
- WordPressは世界中から狙われている
- 誰も守ってくれない
- 面倒くさがると後で後悔する
WordPressは世界中から狙われている
プラットフォームに頼らず企業や個人がサイト運営(ブログやコーポレートサイト等)をする場合、WordPressは最も利用されているCMSです。
CMSとは、Content Management System(コンテンツ管理システム)の略称で、Webページを効率的に作成・管理するためのシステムのことを指します。
参考:W3Techs-Distribution of content management systems among websites that use Japanese
ただし、人気があるために、悪意のある人に狙われる可能性も一番高いと言えます。
本記事でも解説しますが、WordPressを初期設定のまま利用すると、ログインURLが特定されたり、不必要な機能が有効になってしまうため、セキュリティ的に脆弱な状態になってしまいます。
誰も守ってくれない
WordPressは、自由にコンテンツを作成して公開できるというメリットがありますが、誰も守ってくれないというデメリットもあります。
はてなブログやNoteなど、企業が提供するプラットフォームサービスの場合、企業側で外部からの攻撃に対して対策をしてくれますが、WordPressは自分で外部からの攻撃に対処する必要があります。
また、誰も守ってくれないため、自分でセキュリティ対策を行う必要があります。
面倒くさがると後で後悔する
WordPress環境が整ったら、早く記事やページを作成することに集中したい気持ちはわかります。
でも、まずは面倒くさがらずにセキュリティ対策を実施しましょう。
セキュリティの被害は、どうしても自分だけは大丈夫と思ってしまいがちです。
実際のWordPress被害を見ても、最低限のセキュリティ対策をしておけば、未然に防げるものがほとんどです。
後で後悔しないように、最低限のセキュリティ対策を実施しましょう!
WordPressで実施すべきセキュリティ対策7選
WordPressを利用する初心者の方が、実施すべきセキュリティ対策について7つ説明いたします。
プラグインを使った設定方法については、「WordPressセキュリティ対策のプラグインを使った設定方法」に記載しています。
セキュリティ対策について、一つずつ詳しく解説していきます。
ログインIDとパスワードの強化
まず最初に、WordPressのログインに使用する「ログインID」と「パスワード」を強化しておきましょう。
具体的には、他の人が推測しやすい下記のような情報を使うのは避けましょう。
- 生年月日
- ドメイン名
- 屋号名(会社名)
- 電話番号
ログインIDについて
WordPress環境を提供してくれる一部のサービスでは、初期ログインIDがadminに設定されている場合があります。
“admin”はあまりにも一般的すぎるログインIDなので、すぐに変更しましょう。
“admin”を使っている場合、ログイン情報のうちの一つであるログインIDが漏洩しているのと同じ状態です。。
パスワードについて
パスワードの強化には、WordPressの管理画面上から強固なパスワードを設定できるので利用しましょう。
また無料で利用できるパスワード生成サービスを使えば、簡単に強固なパスワードを設定することが可能です。
絶対に安全なパスワードはありませんが、強固なパスワードを使用することで、かなりのハッキング被害を未然に防止することができます。
WordPress本体のアップデート
WordPress本体は、機能追加だけでなく不具合修正や脆弱性対応(セキュリティ対策)のために、定期的にアップデートされます。
WordPressを利用する際は、常に最新版を利用するように意識しましょう。
基本的にWordPress本体は、インストールすると自動更新が有効化されており、最新版が提供されると自動でアップデートされます。
ただ、サービスで提供されている機能を使ってインストールした場合、インストール時点ではWordPress本体が最新版でない可能性があるので、念の為確認しておきましょう
定期的なバックアップの取得
最後に定期的なバックアップを取得しましょう。
どんなにセキュリティ対策を行なっていても、運営しているサイトが被害に遭う可能性はあります。
もちろん悪意ある人からの攻撃だけではなく、自分の操作ミスなど人的操作による被害も考えられます。
そんな最悪の事態を想定して、定期的なバックアップを取得しておくことが重要です。
バックアップは、プラグインを利用することで簡単に取得できます。
一度設定しておけば、自動で週1や月1など定期的なバックアップの取得が可能になります。
プラグインを利用したバックアップの取得方法や復元方法については、下記の記事で詳しく解説しています。
ログインURLの変更(プラグインで設定)
次にログインURLの変更作業です。
WordPressは初期設定のままだと、サイトのURLに/wp-admin
をつけると誰でもログイン画面にアクセスできてしまいます。
WordPressを使ったことある人は誰でも知っています。
つまり、何も設定をしないと世界中に自分のサイトに侵入するための入り口がバレている状態です。
もちろん悪意を持った人たちも知っているので、初期設定のまま使っているサイトは攻撃対象になる可能性も高いです。
ログインURLを変更して、自身のサイトへの入り口を簡単には特定できないようにしておきましょう。
ログイン認証機能の強化(プラグインで設定)
ログイン画面自体のセキュリティも強化しておきましょう。
なぜなら、WordPressがハッキングされた事例で一番多い侵入経路はログイン画面だからです。
具体的には、下記のような機能を追加することでログイン画面のセキュリティを強化します。
- 画像認証機能
- ログイン画面にひらがなが表示され、それを入力することでログイン認証を行う機能です。
- CAPTHA機能
- チェックボックスの有効化など、ログイン情報以外のアクションを要求して、自動でログインを試みる攻撃を防ぐ機能です。
利用するプラグインによって、導入できる機能が変わってきます。
XML-RPC機能の無効化(プラグインで設定)
XML-RPC機能の無効化を行います。
XML-RPC機能とは、外部システムからWordPressをリモート操作するための機能です。
具体的には以下のような機能が利用できます。
- スマホアプリからリモートで記事を投稿・編集・削除する、ファイルをアップロードする
- Microsoft Wordから直接投稿する
- ピンバック、トラックバックを利用する
かつては利用されていましたが、現在は、外部システムと連携する場合には、「WordPress REST API」と呼ばれるより便利な機能が提供されています。
なのでXML-RPC 機能を使用する機会はないので、なるべく無効化しておきましょう。
XML-RPC機能を利用した攻撃は多い
ちなみにXML-RPC機能を利用した攻撃はかなり多く、本サイトも一度被害を受けています。
幸いにもバックアップを取得していたので復旧できましたが、サーバー再契約を行なったり復旧までにかなり時間がかかりました。。
REST API機能の無効化(プラグインで設定)
先ほど紹介したREST APIの機能ですが、使わない場合は無効化しておきましょう。
なぜならREST API機能を利用することで、外部から簡単に情報が取得できてしまうからです。
例えば、URLの後ろに/wp-json/
を入力すると、記事一覧を確認できます。また、/wp-json/wp/v2/users
と入力すると、ユーザー一覧を確認できます。
記事もユーザーも丸見えになってしまうので、使わない場合は無効化しておくのが安心です。
SWELLテーマを利用している場合は、フッター要素の表示等でREST APIを使用しているので無効化しないようにしましょう
WordPressセキュリティ対策のプラグインを使った設定方法
本章では、セキュリティ対策の中でも、プラグインで設定する必要がある以下の4つの項目について、設定方法を解説します。
- ログインURLの変更
- ログイン認証機能の強化
- XML-RPC機能の無効化
- REST API機能の無効化
僕が普段からよく使うセキュリティ対策のプラグインは以下の2つがあります。
- All In One WP Security
- SiteGuard WP Plugin
コーポレートサイトなど一般的なWEBサイトには「SiteGuard WP Plugin」を利用していますが、ブログでSWELLテーマを使用する場合、「SiteGuard WP Plugin」は推奨されていないので、代わりに「All In One WP Security」を利用しています。
参考:推奨プラグインと非推奨・不要・注意すべきプラグインについて
今回は、それぞれのプラグインでの設定方法について説明します。
プラグインのインストール方法については、以下の記事に詳しく記載しています。
All In One WP Securityを利用する場合
ログインURLの変更
手順①:WordPressの管理画面から「WPセキュリティ」→「総当り攻撃」を選択します。
手順②:画面下部にて、名前変更機能を有効化にチェックをつけて、ログインURLにしたい文字列を入力します。
手順③:最後に「Save settings」を選択して、変更完了です。
通常のログインURL(/wp-admin)では入れなくなるので、ブックマークするなど、忘れないようにメモしておきましょう!
ログイン認証機能の強化
All In One WP Securityでは、CAPTHA機能を追加することができます。
手順①:WordPressの管理画面から「WPセキュリティ」→「総当り攻撃」→「CAPTCHA settings」タブを選択します。
手順②: Default CAPTCHAの項目で「Simple math CAPTCHA」を選択します。
Google reCAPTCHAに登録している方は、「Google reCAPTCHA V2」を選択して「Site Key」と「Secret Key」を入力します。
Google reCAPTCHAの設定は難しくないので、やっておくのがおすすめです。
参考:Google reCAPTCHAのWEBサイト登録とAPIキーの取得方法
手順③:ログインCAPTCHAの有効化にチェックして、「Save settings」を選択します。
設定が完了するとログイン画面にCAPTCHA機能が追加されます。
補足:Google reCAPTCHAを使用すると下記の画面になります。
XML-RPC機能の無効化
手順①:WordPressの管理画面から「WPセキュリティ」→「ファイアウォール」→「Basic firewall rules」タブを選択します。
手順②:XMLRPCの設定項目から「Completely block access to XMLRPC」の有効にチェックをつけます。
手順③:最後に画面下の保存ボタンを選択して完了です。
REST API機能の無効化
手順①:WordPressの管理画面から「WPセキュリティ」→「その他」→「WP REST API」タブを選択します。
手順②:「Disallow unauthorized REST requests」を有効にして「Save settings」を選択します。
SiteGuard WP Pluginを利用する場合
ログインURLの変更
SiteGuard WP Pluginの場合、プラグインを有効にするとデフォルトでログインURLの変更が行われるので、自分で任意のURLに変更しましょう。
手順①:WordPressの管理画面から「SiteGuard」→「ログインページ変更」を選択します。
手順②:機能を有効(ON)にして、変更後のURLを入力すれば完了です。
ログイン認証機能の強化
SiteGuard WP Pluginの場合、プラグインを有効にするだけで画像認証が有効になりログイン認証機能の強化ができています。ここでは、設定ができていることを確認するのみです。
手順①:WordPressの管理画面から「SiteGuard」→「画像認証」を選択します。
手順②:機能が有効(ON)になってるのを確認します。
手順③:画像認証の種類を変更することも可能です。
ひらがなの方が、海外からの不正アクセスを防止しやすいのでおすすめです。
設定するとログイン画面に画像認証が追加されます。
XML-RPC機能の無効化
手順①:WordPressの管理画面から「SiteGuard」→「XMLRPC防御」を選択します。
手順②:XMLRPC無効化にチェックをつけて、「変更を保存」を選択すれば完了です。
REST API機能の無効化
手順①:WordPressの管理画面から「SiteGuard」→「ユーザー名漏えい防御」を選択します。
手順②:「REST API無効化」にチェックをつけて「変更を保存」を選択します。
必須ではないけど普段やってるWordPressセキュリティ対策
必須ではないけど、やった方がいいなと思うセキュリティ対策がいくつかあるので、まとめて解説します。
普段、WordPress案件の作業ではやっている設定です。
- WordPressバージョンの非表示
- wp-config.phpのパーミッション変更
WordPressバージョンの非表示
WordPressは、初期設定のままだと、コード上にバージョン情報(METAタグ)が出力されています。
<meta name="generator" content="WordPress 6.2">
例えば、旧バージョンのWordPressを使用している場合、既知の脆弱性が存在するため、バージョン情報が漏洩するとリスクが高まります。
特に外部に使用しているWordPressバージョンを公開する必要もないので、非表示にしておきましょう。
設定方法は、function.phpに下記のコードを追記するだけです。
// - - - - - - - - - - - - - - - - - - - - - - - - //
//WordPressバージョン情報非表示
// - - - - - - - - - - - - - - - - - - - - - - - - //
remove_action('wp_head', 'wp_generator');
wp-config.phpの権限変更
wp-config.phpというファイルの権限を変更します。
こちらのファイルは、WordPressの公開ディレクトリ上に存在しています。
ファイルの中身は、使用しているデータベースのURLや名前、データーベースにアクセスするためのユーザー名、パスワードが全て記述されており、かなり重要なファイルです。
データベースにアクセスされるとWordPressの全データーを引き抜くことも可能です。
初期状態でも所有者のみ読み書き可能な権限(600)で安全ですが、最も安全な所有者のみ読み込み可能な権限(400)に変更しておきます。
ファイルの権限を変更する方法については、下記の記事で詳しく解説しています。
まとめ
今回はWordPressのセキュリティ対策について、解説しました。
- ログインIDとパスワードの強化
- WordPress本体のアップデート
- 定期的なバックアップの取得
- ログインURLの変更(プラグインで設定)
- ログイン認証機能の強化(プラグインで設定)
- XML-RPC機能の無効化(プラグインで設定)
- REST API機能の無効化(プラグインで設定)
特に高度なスキルや費用がかかるわけでもないので、やっておいて損はないと思います。
後で後悔しないためにも、この機会に対策しておきましょう!
以上です。お疲れ様でした!