WordPress管理者のセキュリティ対応について、ガイドライン(標準)をご報告します。ぞれぞれの選択理由も含めて… ご参考になれば、幸いです。
そもそも、ブログ管理者は、「ユーザー名」と「パスワード」の組み合わせが、「メイン」で守られています。これに加えて、「サブ」として、異常ログインに関して「何回か間違えると締め出す」等、正常ログインに関して「不明な人がログインしていないか」等、があります。
「ユーザー名」と「Edit Author Slug」
ブログ運営の開始時で、あまり考える時間も無く、そのままになっていないでしょうか。何かが起きる前に、見直した方が賢明です。私も、そのままで放置していましたが、見直しました。
・自分が分らなくなるので、ブログ名と同じ(もしくは、短い文字列で)にされていないでしょうか。個人情報に近い名前かもしれません… 「ブログ名と同じで無い(個人情報と遠い)」かつ「長い文字列」かつ「大文字/小文字も含む色々な記号」が良いです。
・なお、WordPressには「投稿者アーカイブページ」があり、そのURLに「ユーザー名」が使用されています。例えば、「https://サイトURL/?author=1(もしくはhttp://サイトURL/?author=1)」です。「author」の次の番号を例えば「2」にすると、次の投稿者になります。対策が望ましいです。
・なお、初期設定等で使用されたり、管理者でよく用いられる「admin」「administrator」「root」の使用も避けてください。標的になりやすいです。
ネット記事によると、プラグインで、authorページURLの「ユーザー名」部分を編集できるそうです(リンク先「WordPressのauthor情報を非表示にする」)。例えば、「Edit Author Slug」プラグインです。また、プラグイン無しで「php編集」も有ります。必要と思われれば、自己責任でトライをお願いします。
https://blog.saboh.net/authorpagenone/
・私は、「Edit Author Slug」をトライしました。本プラグインを導入して、「管理者ログイン」継続で、「ユーザー」→「ユーザー一覧」→「貴方のユーザー」編集で最下部にある「Edit Author Slug」カスタム設定で、「no_name」と変更(何でも良いのですが、侵入者が諦めてくれそうな名前「名無し」で)しました。
・これで、上記入力をしても「https://サイトURL/author/no_name/」となりました。成功です。
・なお、脆弱な「ユーザー名」により、パスワードへの「XMLRPC攻撃(総当たり攻撃)」の防御方法の記事です。https://daijoubudayo.com/diary/xmlrpc/
・なお、念には念で、「https://サイトURL/author/no_name/」→「https://サイトURL/●●●/no_name/」としたい方は、「管理者ログイン」継続で、「設定」→「Edit Author Slug」で「投稿者ベース(デフォルト「author」)」を変更ください。私は、そこまでしなくても、十分と考えてしませんでした(デフォルトから、多数箇所を変更すると分からなくなるので避けました)。
「ユーザー名」がサイト名と同じ場合
そもそも、前述の対応をしたとしても、「ユーザー名」が「サイト名と同じ」であれば、簡単に類推できます。なお、「ユーザー名」の変更はできない仕様です。
・「管理者ログイン」継続で、「ユーザー」→「ユーザー一覧」→「貴方のユーザー」編集で、別ユーザーを新規作成(管理者権限)して、「旧ユーザー名を削除」した方が良いかもしれません。ご検討ください。
「ニックネーム(必須)」と「ブログ上の表示名」
・また、「ユーザー名」の「ニックネーム(必須)」「ブログ上の表示名」も同じでは無いでしょうか。表示(公開)されるので、「管理者ログイン」継続で、「ユーザー」→「ユーザー一覧」→「貴方のユーザー」編集で、後者2つの変更もお願いします。
「パスワード」を強固に
・パスワード攻撃では、「総当たり攻撃 :【brute force attack】 ブルートフォースアタック」が有名です。数字4桁では、すぐに分かってしまう事は、ご理解と考えます。「容易に想定できるモノで無い」かつ「長い文字列」かつ「大文字/小文字も含む色々な記号」が良いです。今からでも、変更可能です。お願いします。
・私は、「パスワード管理アプリ」で、作成しています。パスワード長さ/記号有無も変更できるので、他の新規ログイン設定等でも、重宝しています。どんなアプリが良いのか、検討した記事もご参考まで。
「SiteGuard WP Plugin」の設定例(標準)
そもそも、WordPressでは、このような対策のため、標準プラグイン「SiteGuard WP Plugin」が準備(無料)されています。本プラグイン使用を前提に、お話します。
・以下の画像が設定例(標準)ですが、各項目毎にご紹介します。上半分と下半分に分けて記載します。こちらの記事も参考になります。
https://easy-wordpress.work/wordpress/incorrect-login-measures/
・なお、本ブラグインの説明文を転記した上で、「●でコメント記載」「★で結論/まとめ」です。「★」に関して、「最大の手間をかけるとセキュリティ度アップですが、そうは言っても、何らかの面倒くさい部分があれば、ちょうど良い感じ」を心がけました。要するに、「足りない(不足)」や「やり過ぎ(過剰)」を避けました。
「SiteGuard WP Plugin」の設定(上半分)
管理ページアクセス制限 | ログインしていない接続元から管理ディレクトリ(/wp-admin/)を守ります。 ●一度、ログインに成功したIPアドレス(192.168.1.2等)のみに、アクセス制限を行う意味です。 ●なお、ログインは「https://サイトURL/wp-login.php (https://サイトURL/wp/wp-login.php)」であり、管理画面URL「https://サイトURL/wp-admin.php (https://サイトURL/wp/wp-admin.php)」で無いので、ご注意を。 ★IPアドレス制限なので、自宅のネットワーク環境を変えた場合に、自分自身が入れなくなります。「やり過ぎ」と考えて、OFFです。 |
---|---|
ログインページ変更 | ログインページ名を変更します。 ●上記の標準ログインページから、変更されます。具体的には、「https://サイトURL/login_5桁数字」となります。アクセス後は、「https://サイトURL/log-in/」に変換され、表示上でも、5桁数字が守られています。 ●変更後のログインページは、メールでも連絡がありますし、「.htaccess」ファイルにも記載があります。忘れないように、ブックマークをお願いします。自分自身でも入れくなりますので… ●なお、「…リダイレクトしない」も設定しないと、専用ページ設定の意味がないので、お願いします。 ★非常に強力です。「ユーザー名」「パスワード」に加えて、「5桁数字」となります。また、任意にも変更できるので、より強力にも出来ます。従って、ONです。 |
画像認証 | ログインページ、コメント投稿に画像認証を追加します。 ●日本語にしか無い「ひらがな」設定がお勧めです。 ●ただ、管理者やコメント投稿者で「手順が1つ増えて、手間」というネット記事もありました。コメントに関しては、スパム対策で有名・効果抜群の「Akismet」プラグインで十分かもしれません。こちらの記事が参考になります。https://bazubu.com/akismet-23841.html ●「ユーザー登録ページ」は、リンク先の本プラグイン説明によると、「サイトに訪れた人が誰でもユーザー登録を自分で行えるページ」です。WordPressの「設定」→「一般」で【メンバーシップ:だれでもユーザー登録ができるようにする】にチェックが入っていると、ユーザー登録ができるようになります。ただ、ユーザー数が増えるのは、管理上、好ましくないので、「チェック無し」でお願いします。 https://www.jp-secure.com/siteguard_wp_plugin/howto/captcha/ ★管理者が、ログアウトした際には、再ログイン時の手間が増えます。その手間を惜しまない考えで、ONですが、「やり過ぎ」とお考えの方は、OFFで。なお、「ログインページ:OFF」「コメント投稿:ON」の一部OFFもご検討ください(後者の方が、トラブル発生率が高いと考えられるので)。 ・ただ、「コメント投稿:ON」でも、悪意のある人の何十個もの連続投稿は、防げないので、「Akismet」対応でOKなら、「ログインページ:OFF」「コメント投稿:OFF」となります。「コメント」入力で、わざわざ「画像認証」は、ユーザーフレンドリーで無い気もしました。なお、対象ブログで「コメント」設定している人にだけ、関係する事ですが… <ご提案> ・なお、画像認証ではなく、「Invisible reCaptcha」プラグインで、「人目につかないバックグラウンドでスパムかどうかを判断して、サイトを保護する仕組み」もあります。「人目につかない」が気に入り、うちでは、こちらを選択しました。参考記事です。https://daijoubudayo.com/diary/plugins/ |
ログイン詳細エラーメッセージの無効化 | ログインエラー時の詳細なエラーメッセージに変えて、単一のメッセージを返します。 ●他者がログインをした際に、「ユーザー名が違う?」「パスワードが違う?」と区別しないで、単一メッセージとなります。 ★非常に有効です。管理者であれば、何が間違えたのか、分かりますし、他者への情報提供は避けたいので、ONです。 |
ログインロック | ログイン失敗を繰り返す接続元を一定期間ロックします。 ●他者は、何回も、ログイン失敗を繰り返すと思います。 ★管理者は、ログイン失敗の可能性が低いので、ONです。なお、ロッック時間は、標準の1分から5分にしておいた方が、「XMLRPC攻撃(後述のXMLRPC防御をONにしても漏れるモノに対応)」におけるトライ数が少なるので、お勧めです。参考記事です。https://daijoubudayo.com/diary/xmlrpc/ |
ログインアラート | ログインがあったことを、メールで通知します。 ●ブログ名/ログイン時間/ユーザー名の連絡があります。 ★自分で無ければ、他者ログインが分かるので、ONです。すぐに何か出来る事は難しいと思いますが、「いつ」が分かれば、それ以前にバックアップで戻ることが可能となります。 |
「SiteGuard WP Plugin」の設定(下半分)
フェールワンス | 正しい入力を行っても、ログインを一回失敗します。 ●常に、一回失敗となります。 ★他者を諦めさせる事に、多少の効果はあるかもしれませんが、そもそも、他者は何回もトライするつもりと思われるます。自分自身も手間も増えるので、「やり過ぎ」と考えて、OFFで。 |
---|---|
XMLRPC防御 | XMLRPCの悪用を防ぎます。 ●XMLRPCは、「WordPressにログインしなくてもメールやプラグインを使ってスマホから記事を投稿できるようにするもの」です。 ●ある意味、便利ですが、前述の「ログインページ変更」を行っても、「XMLRPCを利用した不正ログインの試みを防ぐことはできない」とネット記事にありました。 ★従って、ONです。うちでは、ログイン履歴をみると確かに「XMLRPC」があります。他社からの攻撃なので、有効機能です。ただ、「ピンバック無効化」と「XMLRPC無効化」の選択が可能です。うちでは、予期せぬ悪影響のリスク(スマホアプリから操作できなくなる等)を考慮ましたが、後者設定としました(htaccessに追記されるで、念のため、ご確認ください)。スマホアプリではなく、スマホから直接にWeb画面を呼び出して、編集する事は、可能でした。 |
ユーザー名漏えい防御 | ユーザー名の漏えいを防ぎます。 ●リンク先にメーカーの説明があります。要するに、前述の「/?author=数字」を防ぐ意図です。 ●また、「REST API によるユーザー名の漏えいを防止する」意図もあります。ただ、「REST API の無効化によって動作しないプラグインが存在する場合には、除外プラグインのリストにプラグイン名を追加」が必要となります。https://www.jp-secure.com/siteguard_wp_plugin/howto/author_query/ ●例えば、「REST API」使用(リンク先記事)で、「https://サイトURL/wp-json/wp/v2/users」とすると、「ユーザー名」が分かります。ただ、前述の方法を行ったので、「ユーザー名:no_name」でした。https://akros-ac.jp/11753/ ★うちの場合は、前述のプラグインで「ユーザー名:no_name」と対応済なので、OFFとしました。「除外プラグインのリスト」をトラブル無く作成する自信も無いので… |
更新通知 | WordPress、プラグイン、テーマの更新が必要になった場合に、管理者にメールで通知します。 ●更新の確認は、24時間毎です。 ★頻繁でもなく、重要な情報なので、ONで。 |
WAFチューニングサポート | WAF (SiteGuard Lite)の除外ルールを作成します。 ●有料サービスです。攻撃で無いモノを攻撃と判断する等の最適化が可能となるそうです。 ★個人ブロブでは、「やり過ぎ」と判断して、OFFで。 |
詳細設定 | IPアドレスの取得方法を設定します。 ★通常は、リモートアドレスですが、変更する必要がある時に使用します。 |
ログイン履歴 | ログインの履歴が参照できます。 ★「ユーザー名」「IPアドレス」が分かるので、不正ログインを見つけやすくなります。前述の「XMLRPC攻撃」も検知できます。何かあった時に、心強い味方です。 |
「SiteGuard WP Plugin」の他の候補
前述までで、「Edit Author Slug」と「SiteGuard WP Plugin」と2つのプラグインを使用しました。これを合わせたプラグイン「XO Security」が存在します。なお、本プラグインは 「.htaccess ファイルに書き込みません」と記載ですが、確かに、面倒が1個減る可能性があります。
https://ja.wordpress.org/plugins/xo-security/
・設定方法は、こちらの記事が参考になります。2つのプラグインが、1つになるのは、スマートです。ただ、色々な設定が可能なので、最適設定が難しそうです。本プラグインを否定する気持ちは、一切ないので、よろしければ、ご検討ください。
https://excesssecurity.com/xo-security/
より強固なセキュリティとする「2段階認証」
なお、これまでの記載に加えて、より強固なセキュリティとするのが、「2段階認証」です。プラグインの候補は、「Google Authenticator」と「miniOrange」です。
・「Google Authenticator」は、これらの記事が参考になります。
https://www.iscle.com/web-it/wp-2ninshou.html
https://www.javadrive.jp/wordpress/plugin-list/index17.html
・なお、デメリットしては、後者の記事記載「二段階認証を設定することで不正なログインが行われにくくなりますが、設定を行ったスマホが手元にないと認証コードを取得することができずログインすることが出来ません。Googleアカウントの場合と異なり認証コードを取得するバックアップ手段も用意されていませんのでご注意下さい。」も、ご確認ください。
・「miniOrange」は、こちらの記事が参考になります。なお、ログイン出来なくなった際は、「public_html/自分のサイト名/wp-content/plugins」の「miniorange-2-factor-authentication」フォルダのリネームと記事記載でした。
https://excesssecurity.com/miniorange-google-authenticator/
「2段階認証」のデメリット
なお、「2段階認証」は、設定を行ったスマートフォンが常に手元にある必要があるので、「やり過ぎ」かもしれません。
・また、「スマートフォンの突然の故障」等で、切り替える必要があります。その際に、通常の買い替えであれば、「旧スマートフォン」と「新スマートフォン」の2台で引継ぎが出来ると思いますが、故障等で「旧スマートフォン」が使えない場合に、困難になりそうです。
・ただ、上記記載のように、プラグインフォルダのリネームで対応可能であれば、大丈夫でが、くれぐれも、「2段階認証」は、慎重にお願いします。
バックアップの重要性
ただ、何をしても、侵入可能性はゼロで無いです。折角のブログデータをゼロにされるかもしれません。従って、バックアップが「備えあれば患いなし」です。また、何らかのブログ不具合の可能性や、自分自身でのカスタマイズ時のトラブルもあります。
・バックアップが必要なファイルは、以下の2つに分けられます。うちのブログを例として、容量も参考記載しておきました。こちらの記事も参考になります。https://web-kanji.com/posts/wordpress-backup
①WordPress内(サイトデータ) | ・テーマ:ホームページのデザインテーマ(themes.zip:20MB) ・プラグイン:SEO対策や画像圧縮などの拡張機能(plugins.zip:25MB) ・メディア:WordPressにアップロードした画像/PDF/動画などのメディアデータ(uploads.zip:5GB) ・設定ファイル(htaccess:2KB)→ここは他サイトでは、あまり言われていませんが重要と考えます |
---|---|
②WordPress外(データベース) | ・ブログ記事(内容/タイトル/公開日/カテゴリー情報)や装飾や固定ページなどのコンテンツデータ(blog.WordPress.2021-06-04.xml:4MB) |
<①WordPress内>
・ファイルマネージャーで、「wp-content」内にある以下のフォルダーを一旦、ZIPファイル(アーカイブ作成)にします。それをダウンロードして、パソコンに取り込みます。
・ZIPファイルとするのは、ダウンロード時に、バラバラファイルで無いので、「一括処理」なので」「ダウンロード漏れファイルがゼロ」になるからです。それと、少しですが、データ圧縮効果もあります。また、「サーバー内バックアップ」があるのも、安心です。
・同様に、ブログフォルダ直下にある「.htaccess」ファイルをダウンロードして、パソコンに取り込みます。ファイルが小さいので、ZIPファイル化しは、しませんでした。
<②WordPress外>
・「管理者ログイン」継続で、「ツール」→「エクスポート」で可能です。「すべてのコンテンツ」を選び「エクスポートファイルをダウンロード」となります。
・「その日時点でのデータ」を残すために、「ファイルの複製」を行い、「copy 1.htaccess」の名称で「サーバー内バックアップ」も、出来ました。
バックアップ用のプラグインがあります。「All-in-One WP Migration」「BackWPup」「Duplicator」等です。ただ、ブログ全体を考えると、なるべくプラグインを少なくして、軽いシステムを目指した方が望ましいです。うちでは、「バックアップ」に関して、「プラグイン無し」にしました。
他のバックアップとして、サーバーでの自動バックアップ機能もあります。うちで使用しているConohaでは、毎日(過去14日分)が嬉しいです。ただ、すべて、対象日に戻ってしまうので、一部だけ、戻したときに、不都合です(プラグインも一括バックアップの可能性があります)。従って、上記の手動バックアップが、適切な復元のために、必要と考えています。
Conoha自動バックアップ機能
まとめ
WordPress管理者のセキュリティ対応について、ガイドライン(標準)をご報告しました。要するに、「足りない(不足)」や「やり過ぎ(過剰)」を避けました。
・「ユーザー名」と「パスワード」の重要性と対策(「Edit Author Slug」プラグインと「パスワード管理アプリ」)を記載です。
・「SiteGuard WP Plugin」の設定例(標準)を紹介しました。
・より強固なセキュリティとする「2段階認証」には、メリット/デメリットがあります。
・ただ、何をしても侵入可能性はゼロで無いので、定期的な「バックアップ」をお願いします。
皆さんのご参考まで(^^) 何かあれば、お気軽にお問合せください。
2021年6月5日
関連記事
・WordPressプラグインのガイドライン(標準)を設定の記事です。本記事内で紹介しました。https://daijoubudayo.com/diary/plugins/
・【ブログ】パスワードへのXMLRPC攻撃(総当たり攻撃)の防御方法の記事です。本記事内で紹介しました。https://daijoubudayo.com/diary/xmlrpc/
・WordPressブログ管理者ログインでのトラブルの記事です。https://daijoubudayo.com/diary/administrator/
・ブログ「CLS/LCP/FIDに関する問題」への対策検討の記事です。https://daijoubudayo.com/diary/blog_cls/
・Googleアドセンス合格への道のりの記事です。https://daijoubudayo.com/diary/adsense/
上記も含めた本ブログの「気ままな独り言」カテゴリー(水槽、仕事、ブログ、猫など)の記事リストです。他の記事も、どうぞ。