一番簡単かつ一番確実にサイトへの不正ログイン対策を行う方法

公開日:2019年3月25日 使い方など
アクセス制限画像

WordPressは汎用のCMS(サイト管理ツール)ですので、ログイン画面や管理画面のURL構造は共通。「このサイトはWordpressで作られてる」ということが分かれば当然それらのURLも類推できますし、ユーザー名も何も対策していなければSEO対策の一環で設置する記事作者の一覧のURLから簡単に類推できてしまいますね。そうなると最後の砦はパスワードだけ・・になってしまいます。

大抵の場合はこの方法で不正ログインが試みられます。その対策として有名なのは

  1. 何かのコードを追加するなどしてログイン画面や管理画面のURLを変える方法
  2. セキュリティ系のプラグインで1のことを設定する方法

の2つ。でも・・・

変更したURLがもしも分からなくなったらどうしますか??もしも何かの不具合でプラグインが正常に動作しなくなったらどうしますか?自力で復旧できることを確認してそれらの方法を使っていますか??

プラグインなんだから不具合が出たら強制停止すればいい!とフォルダのリネームや削除をしてもセキュリティ系プラグインの場合には解決しないことが多いんです。そして一旦削除したら・・・復旧はより困難になります。

今回はそんな不安定な方法ではなく、より確実に設定でき、より簡単に設定でき、そしてより簡単に復旧できる方法を紹介します。

もちろん記事執筆時にはこのサイトでも使っている方法ですので、通常のログインURLや管理画面URLでアクセスしてみてください。

見事に
一番簡単かつ一番確実にサイトへの不正ログイン対策を行う方法
な画面が表示されたらこの方法は使えるのではないでしょうか?

※なおこの方法は不特定の場所からログインをするような性質のサイトには向きませんのであしからず

一番簡単かつ一番確実にサイトへの不正ログイン対策を行う方法

多分ちらっと書いた「不特定の場所・・・」という一文でピーンと来た方もいることでしょう。その方法は管理画面やログイン画面へのアクセスを制限するというものです。

つまり、管理画面やログイン画面へのアクセスは家、会社など特定の場所からのみに限定するのです。ですから不特定の場所からログインするというサイトでは使えないということになります。

この設定を行うのに必要な環境や設定

変更や万が一の場合の復旧に備え、この設定を行うためには、

  1. FTPクライアントでサーバー内のファイル操作ができる
  2. サーバーのファイル操作をするためのサーバーログイン情報が確実に保存されている

のうちのどちらか(両方が推奨)が必要になります。

最近のテーマにはこれから紹介する方法を管理画面から操作できるものもありますし、プラグインにもそうした機能を持つものがありますが、それらはWordpressのサイトへログインできたときはじめて操作できる機能ですから、万が一の時には全く役に立ちませんのでご注意ください。

不正ログイン対策で行うこと

具体的な不正ログイン対策を行う方法を紹介します。といってもこの項目が一番短いかも・・・。

  1. 前項の方法のいずれかでWordpressのインストールされている場所へアクセスします。
  2.   ※インストールされている場所とは「index.php」ファイルや「wp-content」フォルダのあるところを言います。

  3. 「.htaccess」というファイルを見つけ、パソコンへダウンロードします
  4. ダウンロードした「.htaccess」ファイルを開きます
  5.  ※メモ帳でも大丈夫かと思いますが、できればterapadなど無料のものでもいいのでテキストエディタを推奨します

  6. 一番先頭に以下のコードを追記します
  7. <FilesMatch "wp-login.php|wp-admin">
      Order deny, allow
      Deny from all
      Allow from xxx.xxx.xxx.xxx
    </FilesMatch>
    
    【注意】コードをコピーして使用する前に必ずお読みください

    この記事内にコードが記載されている場合、コードはそのままコピー(いわゆるコピペ)してお使いいただいても構いませんが、以下の件にご留意ください。

    使用については自己責任でお願いします

    コードの確認は私の管理するサイト、またはテスト環境で問題が起こらなかったものですので、お使いの環境での動作等を保証するものではありません。

    万が一このコードを使用してサイトに重篤なトラブルが生じても当サイト、当サイト管理者は一切責任を負いません

    コードの変換エラーなどにより動作しない場合、更新エラーが出る場合があります

    コードをそのままコピーしても問題なく使えるよう文字列変換を行った上で掲載しておりますが、希に変換できていない場合があり、コードエラーとなることがあります

    その場合には以下の方法で修正を行ってみてください

    1. コードの中に全角の記号が入っていませんか?
    2. 半角にすることで解消できます
    3. コードの中に全角の空白(スペース)がありませんか?
    4. 半角にすることで解決できます
    5. コードは合っているはずなのに更新できないときは
    6. 特にエラーの出た行内に日本語での文字列が入っている場合には全角での文字列があるということでエラーになる場合があり、Wordpressのエディタチェックではこれを「’」や「)」など閉じ子のエラーとして認識され更新できないことがあります。エラーとして返される行の先頭に空白がある場合には空白をなくすことできちんと認識され更新されるようになることが多いです。
    7. 「何かが間違っています...」と表示され、更新できないときは
    8. このエラーは本当に何がエラーなのかをWordpressのチェックが判断できない場合に発生します。解決策としてはその画面を開き直すことなのですが、その際希に元のコードがすべて削除されてしまう場合がありますので、今表示されているコードを一旦どこかへコピーしてからページの再読み込みをするようにしてやり直します。
      ※このエラーは不明なエラーなので予期せぬ動きをする可能性がありますので特に慎重な対処が必要です
    これらのエラー対処については以下のページが参考になるかも知れません

    コードを転載する場合には

    ご自身のサイトで当ページで紹介しているコードを転載される場合には当ページへのリンクを入れていただきますようお願いいたします

  8. コードの中のxxx.xxx.xxx.xxxの部分へ実際にアクセスするIPアドレスを入力します
  9. 今管理画面を開いている場所のIPアドレスを調べるには

    へアクセスします(すぐに表示されますのでその通りに入力してください)

  10. 「.htaccess」ファイルを保存します
  11. 元の場所へ上書きアップロードします

これで、今管理画面を開いている場所以外から管理画面やログイン画面へのアクセスができなくなります。

ね、とっても簡単です。
※もしも本当にログインできないの?をテストする場合はわざと違うIPアドレスにしてみるとチェックできます。

※複数の場所を指定する場合はコード中の

  Allow from xxx.xxx.xxx.xxx
【注意】コードをコピーして使用する前に必ずお読みください

この記事内にコードが記載されている場合、コードはそのままコピー(いわゆるコピペ)してお使いいただいても構いませんが、以下の件にご留意ください。

使用については自己責任でお願いします

コードの確認は私の管理するサイト、またはテスト環境で問題が起こらなかったものですので、お使いの環境での動作等を保証するものではありません。

万が一このコードを使用してサイトに重篤なトラブルが生じても当サイト、当サイト管理者は一切責任を負いません

コードの変換エラーなどにより動作しない場合、更新エラーが出る場合があります

コードをそのままコピーしても問題なく使えるよう文字列変換を行った上で掲載しておりますが、希に変換できていない場合があり、コードエラーとなることがあります

その場合には以下の方法で修正を行ってみてください

  1. コードの中に全角の記号が入っていませんか?
  2. 半角にすることで解消できます
  3. コードの中に全角の空白(スペース)がありませんか?
  4. 半角にすることで解決できます
  5. コードは合っているはずなのに更新できないときは
  6. 特にエラーの出た行内に日本語での文字列が入っている場合には全角での文字列があるということでエラーになる場合があり、Wordpressのエディタチェックではこれを「’」や「)」など閉じ子のエラーとして認識され更新できないことがあります。エラーとして返される行の先頭に空白がある場合には空白をなくすことできちんと認識され更新されるようになることが多いです。
  7. 「何かが間違っています...」と表示され、更新できないときは
  8. このエラーは本当に何がエラーなのかをWordpressのチェックが判断できない場合に発生します。解決策としてはその画面を開き直すことなのですが、その際希に元のコードがすべて削除されてしまう場合がありますので、今表示されているコードを一旦どこかへコピーしてからページの再読み込みをするようにしてやり直します。
    ※このエラーは不明なエラーなので予期せぬ動きをする可能性がありますので特に慎重な対処が必要です
これらのエラー対処については以下のページが参考になるかも知れません

コードを転載する場合には

ご自身のサイトで当ページで紹介しているコードを転載される場合には当ページへのリンクを入れていただきますようお願いいたします

の行を追加して、IPアドレスを入力すればいくつでも追加できます。

※この設定をした後でサイトに何かを行う(投稿する、プラグインを追加するなどすべての操作)場合は、一旦ログアウトして再ログインしてからにしましょう(思わぬアクセス拒否が出ることがあります)。

Analyticsのリファラーに出てくる「hatenablog-parts.com」は誰?脱【はてなブログカード】のススメ

【WordPress】「Advanced Custom Fields」を使う上での注意点

【canonical】タグって何?必要なの?WordPressですべてのページに自動挿入するには??など


ログイン画面がアクセス拒否されたら・・・

これを知ってて設定するのと知らずに設定するのは雲泥の差となります。

が、設定した部分も1つですから復旧も簡単・・・ですよね??

前項の設定で「.htaccess」ファイルに追記した部分を削除して元の場所へアップロードすれば、何事もなかったかのように元の状態に戻ります。


たったこれだけ?のことで、簡単に自分やログインする人(場所)以外からログインされる、管理画面にアクセスされるのを防ぐことができます。

個人サイトはもちろん、企業サイトで社内以外から操作させないようにしたい場合(特に退職者などが勝手にログインして改ざんしたりしないようにしたい場合)などにはもってこいの方法です。

・・・とはいえ、サイトを作っていた担当者などが退職した場合にはFTPの接続情報やサーバーへの接続情報は漏洩していて間違いないと思いますので、それらのパスワードの変更もしっかり行って、操作できる口を減らす措置はきちんと講じましょう。

おまけ パスワード保護した投稿や固定ページでパスワード入力後に403エラーで内容が見えないときは

今回のセキュリティとは全く関係ない(逆に関係ある?)ことなのですが、今まで紹介した内容でwp-login.phpへのアクセスを制限すると、未ログインユーザーがパスワード付の投稿や固定ページでパスワードを入力してページを閲覧しようとすると、403エラーが出て内容が見えないという現象が発生します。

いろいろ調べてみたのですが公式コーデックにもこの件について触れたものはありませんでした。

そして、普段ログインしている(ログインできる)環境から見ることが多い自身のサイトでこの現象は非常に発見しにくく、誰かから「ページが見れない」と言われて初めて気づく(その時にも自分はそのIPからのアクセスが許可されているので現象が出ないこともある)こととなります。

私も知り合いのサイトでその現象が出たけどどうにかならないか?と聞かれてこの現象が起こることを初めて知った次第です。

まあ何が作用しているのかは不明ですが、パスワード入力後にWordpressのログイン処理の何かが関連してパスワードが解除されるのは確かなようですから、上の方法では権限なし(403エラー)が出てしまうようです。

これを防ぐには、「.ataccess」に書いた制限事項を削除し、新たに「wp-admin」フォルダ内に「.htaccess」ファイルを作って

Order deny, allow
  Deny from all
  Allow from xxx.xxx.xxx.xxx
</FilesMatch>
【注意】コードをコピーして使用する前に必ずお読みください

この記事内にコードが記載されている場合、コードはそのままコピー(いわゆるコピペ)してお使いいただいても構いませんが、以下の件にご留意ください。

使用については自己責任でお願いします

コードの確認は私の管理するサイト、またはテスト環境で問題が起こらなかったものですので、お使いの環境での動作等を保証するものではありません。

万が一このコードを使用してサイトに重篤なトラブルが生じても当サイト、当サイト管理者は一切責任を負いません

コードの変換エラーなどにより動作しない場合、更新エラーが出る場合があります

コードをそのままコピーしても問題なく使えるよう文字列変換を行った上で掲載しておりますが、希に変換できていない場合があり、コードエラーとなることがあります

その場合には以下の方法で修正を行ってみてください

  1. コードの中に全角の記号が入っていませんか?
  2. 半角にすることで解消できます
  3. コードの中に全角の空白(スペース)がありませんか?
  4. 半角にすることで解決できます
  5. コードは合っているはずなのに更新できないときは
  6. 特にエラーの出た行内に日本語での文字列が入っている場合には全角での文字列があるということでエラーになる場合があり、Wordpressのエディタチェックではこれを「’」や「)」など閉じ子のエラーとして認識され更新できないことがあります。エラーとして返される行の先頭に空白がある場合には空白をなくすことできちんと認識され更新されるようになることが多いです。
  7. 「何かが間違っています...」と表示され、更新できないときは
  8. このエラーは本当に何がエラーなのかをWordpressのチェックが判断できない場合に発生します。解決策としてはその画面を開き直すことなのですが、その際希に元のコードがすべて削除されてしまう場合がありますので、今表示されているコードを一旦どこかへコピーしてからページの再読み込みをするようにしてやり直します。
    ※このエラーは不明なエラーなので予期せぬ動きをする可能性がありますので特に慎重な対処が必要です
これらのエラー対処については以下のページが参考になるかも知れません

コードを転載する場合には

ご自身のサイトで当ページで紹介しているコードを転載される場合には当ページへのリンクを入れていただきますようお願いいたします

  • コードの中のxxx.xxx.xxx.xxxの部分へ実際にアクセスするIPアドレスを入力します
  • を入れると解決できます。

    この方法ではログイン画面(wp-login.php)へのアクセスはできるけど、たとえ正しいユーザー名とパスワードを入れても許可されたIPアドレスでなければ管理画面へアクセスできないという処理になります。

    ・・・そういえばサーバーの中にはWAFの設定でIPアドレス制限をかけるものがあったような記憶があるのですが、これはどうやって回避したらいいんでしょうね・・・私の思いつく限りではWAFをOFFにしてこの方法にするしかないのか・・というのが結論です。

    ひまあーと(管理人)
    • 記事の作者: ひまあーと(管理人)

    • ☆最後までお読みいただきありがとうございました。記事作者のひまあーとです。
      ☆Wordpressでサイトをカスタマイズしていく上で有用な情報を配信しつつ、「ココナラ」でサイトカスタマイズのお手伝い、不具合の修復、サイト引っ越し代行などをさせていただいております。
      ☆Wordpressネタが多いですが、趣味の「園芸」「卓球」などの情報や日々の出来事などもどんどん増やしていきますのでよろしくお願いいたします。


    いつでもご相談・サイトカスタマイズの依頼を受け付けています

    Wordpressのカスタマイズ、不具合解消のご相談はすべてココナラのダイレクトメッセージからお受けしております。まずはこちらのバナーからお気軽にお問い合わせください。

    ※一度もココナラを使ったことがない方はココナラへの無料登録が必要です。こちらから登録後、上のリンクをクリックする、またはココナラトップページから「ひまあーと」を検索してお問い合わせください。


    【スポンサーリンク】


    記事の拡散にご協力をお願いします

    閲覧いただきありがとうございました。役に立つ情報でしたら是非SNSでシェアをお願いします

    関連情報