Webサイトのお助け隊

ユーザーの最終ログイン日時を記録して不要なアカウントを洗い出す方法

9 views
約15分

これ、実は去年、本当に困ったことがあってね。あるクライアントのWordPressサイトで、ユーザーアカウントが100個以上あったんだよ。で、「このアカウント、誰が使ってるの?」って聞いても、誰も分からない。で、「もしかして、退職した人のアカウントが残ってるんじゃないか?」って思って、調べてみたら、案の定、何年も前に退職した人のアカウントが、そのまま残ってた。

これが本当に怖いのは、退職した人のアカウントが残ってると、そのアカウントのパスワードが漏れたら、簡単にサイトに侵入されるってこと。だって、退職した人は、もうそのアカウントを管理してないから、パスワードが漏れても気づかない。で、攻撃者が、そのアカウントを使って、サイトに侵入する。で、サイトを改ざんしたり、マルウェアを埋め込んだりする。

だから、ユーザーの最終ログイン日時を記録して、定期的に不要なアカウントを洗い出すことが、本当に重要なんだ。で、この記事では、その具体的な方法を解説する。

Point(結論): WordPressサイトのセキュリティを強化するには、ユーザーの最終ログイン日時を記録し、定期的に不要なアカウントを洗い出すことが重要です。この記事では、最終ログイン日時を記録する具体的な方法と、不要なアカウントを安全に削除する手順を解説します。

なぜ最終ログイン日時の記録が重要なのか?

まず最初に、なぜ最終ログイン日時の記録が重要なのかっていう話をしたいんだけど、これ、本当に重要なんだよね。

理由1: 不要なアカウントがセキュリティリスクになる

まず、一番大きな理由が、不要なアカウントがセキュリティリスクになるってこと。で、これが本当に怖い。

例えば、会社のWordPressサイトで、退職した社員のアカウントが残ってるとする。で、その社員は、もうそのアカウントを使わない。でも、アカウントは残ってる。で、そのアカウントのパスワードが、何かの拍子に漏れたとする。例えば、その社員が、同じパスワードを他のサイトでも使ってて、そのサイトがハッキングされて、パスワードが漏れたとか。

攻撃者が、その漏れたパスワードを使って、WordPressサイトにログインしようとする。で、ログインできちゃう。だって、アカウントが残ってるから。で、攻撃者は、そのアカウントを使って、サイトを改ざんしたり、マルウェアを埋め込んだりする。

これ、実際にあった話なんだけど、あるクライアントのサイトが、退職した社員のアカウントを使って、ハッキングされたことがあるんだよね。で、そのクライアントは、「なんで退職した社員のアカウントが残ってたんだろう」って後悔してた。で、「もっと早く、不要なアカウントを削除しておけばよかった」って。

理由2: アカウントの管理が複雑になる

次に、不要なアカウントが残ってると、アカウントの管理が複雑になるっていう理由もある。で、これも本当に厄介。

だって、ユーザー一覧を見ても、「このアカウント、誰が使ってるの?」って分からない。で、「このアカウント、削除していいの?」って判断できない。で、結局、不要なアカウントが、どんどん溜まっていく。

これ、実際に経験したことがあるんだけど、あるクライアントのサイトで、ユーザーアカウントが200個以上あったんだよね。で、そのうち、実際に使われてるアカウントは、50個くらい。残りの150個は、もう使われてない。でも、どれが使われてて、どれが使われてないのか、全く分からない。

そのクライアントは、「アカウントの管理が、もう無理」って言ってた。で、「最終ログイン日時が分かれば、不要なアカウントを洗い出せるのに」って。

理由3: コンプライアンスの観点からも重要

さらに、最近は、コンプライアンスの観点からも、不要なアカウントの削除が重要になってきてる。で、これも本当に重要。

だって、個人情報保護法とか、GDPRとかで、「不要な個人情報は、速やかに削除しなければならない」って決まってる。で、WordPressのユーザーアカウントには、個人情報が含まれてる。例えば、名前とか、メールアドレスとか。

だから、退職した社員のアカウントとか、もう使われてないアカウントは、速やかに削除しないといけない。でも、最終ログイン日時が分からないと、どのアカウントが不要なのか、判断できない。

これ、実際にあった話なんだけど、ある企業が、退職した社員のアカウントを削除してなくて、個人情報保護法違反で、指導を受けたことがあるんだよね。で、その企業は、「もっと早く、不要なアカウントを削除しておけばよかった」って後悔してた。

最終ログイン日時を記録する方法

次に、最終ログイン日時を記録する方法について解説したいんだけど、これ、いくつか方法があるんだよね。で、それぞれメリット・デメリットがある。

方法1: プラグインを使う方法

まず、一番簡単な方法が、プラグインを使う方法。で、これが一番おすすめ。

だって、プラグインをインストールして、有効化するだけで、最終ログイン日時が記録されるようになる。で、設定も簡単。で、初心者でも使える。

おすすめのプラグインは、以下の通り。

  1. WP Last Login: 一番人気のプラグイン。ユーザー一覧に「Last Login」の列が追加される。シンプルで使いやすい。
  2. When Last Login: WP Last Loginと似てるけど、もうちょっと機能が多い。例えば、一定期間ログインがないユーザーを自動的にメールで通知する機能とか。
  3. Simple History: ログイン履歴だけじゃなくて、サイトの全ての操作ログを記録するプラグイン。ログイン履歴も含まれる。ちょっと重いけど、詳細なログが欲しい場合は、これがおすすめ。

これ、実際に使ったことがあるんだけど、WP Last Loginが一番シンプルで使いやすかった。だって、インストールして、有効化するだけで、すぐに使える。で、ユーザー一覧に「Last Login」の列が追加されて、最終ログイン日時が表示される。

方法2: functions.phpにコードを追加する方法

次に、functions.phpにコードを追加する方法。で、これは、ちょっと上級者向け。

だって、functions.phpを編集するには、FTPとか、サーバーの管理画面にアクセスする必要がある。で、コードを間違えると、サイトが真っ白になったりする。だから、初心者には、ちょっとハードルが高い。

でも、プラグインを使いたくない場合とか、自分でカスタマイズしたい場合は、この方法がおすすめ。

具体的なコードは、以下の通り。

// ユーザーがログインした時に、最終ログイン日時を記録
function user_last_login( $user_login, $user ) {
    update_user_meta( $user->ID, 'last_login', time() );
}
add_action( 'wp_login', 'user_last_login', 10, 2 );

// ユーザー一覧に「最終ログイン」の列を追加
function add_users_columns( $columns ) {
    $columns['columns_lastlogin'] = '最終ログイン';
    return $columns;
}

function add_users_custom_column( $column_name, $column, $user_id ) {
    if ( $column == 'columns_lastlogin' ) {
        $user_info = get_userdata($user_id);
        $user_lastlogin_time = $user_info->last_login;
        if ( $user_lastlogin_time ) {
            return date('Y/m/d H:i:s', intval($user_lastlogin_time));
        } else {
            return 'ログイン履歴なし';
        }
    }
}

add_filter( 'manage_users_columns', 'add_users_columns' );
add_filter( 'manage_users_custom_column', 'add_users_custom_column', 10, 3 );

このコードを、使ってるテーマのfunctions.phpに追加すれば、最終ログイン日時が記録されるようになる。で、ユーザー一覧に「最終ログイン」の列が追加される。

これ、実際に使ったことがあるんだけど、プラグインを使うよりも、軽量で、サイトの速度に影響が少ない。だから、サイトの速度を重視する場合は、この方法がおすすめ。

でも、注意点がある。それは、このコードを追加する前に、必ずバックアップを取ること。だって、コードを間違えると、サイトが真っ白になったりする。だから、バックアップは必須。

方法3: データベースに直接記録する方法

最後に、データベースに直接記録する方法。で、これは、かなり上級者向け。

だって、データベースを直接操作するには、phpMyAdminとか、SQLの知識が必要。で、間違えると、データベースが壊れたりする。だから、初心者には、絶対におすすめしない。

でも、大規模なサイトで、独自のユーザー管理システムを構築したい場合は、この方法が必要になることもある。

具体的には、wp_usermetaテーブルに、last_loginっていうメタキーで、ログイン日時を記録する。で、SQLクエリを使って、一定期間ログインがないユーザーを抽出する。

でも、正直、これは、かなり高度な知識が必要だから、よほどの理由がない限り、プラグインを使うか、functions.phpにコードを追加する方法をおすすめする。

記録した情報を活用して不要なアカウントを洗い出す

次に、記録した最終ログイン日時を活用して、不要なアカウントを洗い出す方法について解説したいんだけど、これが本当に重要なんだよね。

ステップ1: ユーザー一覧で最終ログイン日時を確認

まず、ユーザー一覧で、最終ログイン日時を確認する。で、プラグインを使ってる場合は、ユーザー一覧に「Last Login」の列が追加されてるから、そこを見れば、すぐに分かる。

functions.phpにコードを追加してる場合も、同じように、ユーザー一覧に「最終ログイン」の列が追加されてるから、そこを見れば、すぐに分かる。

ユーザー一覧を見て、「このユーザー、最後にログインしたのが、1年前だ」とか、「このユーザー、一度もログインしてない」とか、そういう情報が分かる。

ステップ2: 一定期間ログインがないユーザーをリストアップ

次に、一定期間ログインがないユーザーをリストアップする。で、「一定期間」っていうのは、サイトによって違うんだけど、一般的には、6ヶ月とか、1年とか。

例えば、「最後にログインしたのが、1年以上前のユーザー」をリストアップする。で、そのユーザーが、本当に不要なのか、確認する。

確認する方法は、いくつかある。例えば、そのユーザーのメールアドレスに、「まだこのアカウントを使ってますか?」ってメールを送る。で、返信がなければ、不要なアカウントだと判断する。

あるいは、そのユーザーが、どの部署に所属してたのか、確認する。で、その部署の責任者に、「このユーザーのアカウント、まだ必要ですか?」って聞く。で、「もう必要ない」って言われたら、削除する。

ステップ3: 削除の判断基準を決める

不要なアカウントを洗い出す時に、重要なのが、削除の判断基準を決めること。で、これが本当に重要。

だって、判断基準が曖昧だと、「このアカウント、削除していいのかな?」って迷う。で、結局、削除できない。だから、明確な判断基準を決めておくべき。

例えば、以下のような判断基準が考えられる。

  1. 最後にログインしたのが、1年以上前: 1年以上ログインがないアカウントは、もう使われてないと判断する。
  2. 一度もログインしてない: アカウントを作成したけど、一度もログインしてないアカウントは、不要だと判断する。
  3. 退職した社員のアカウント: 退職した社員のアカウントは、速やかに削除する。
  4. 権限が「購読者」で、投稿がない: 購読者の権限で、一度も投稿してないアカウントは、不要だと判断する。

これらの判断基準を、事前に決めておけば、迷わずに削除できる。

不要なアカウントの削除手順

次に、不要なアカウントの削除手順について解説したいんだけど、これ、ちょっと注意が必要なんだよね。

ステップ1: 必ずバックアップを取る

まず、一番重要なのが、必ずバックアップを取ること。で、これが本当に重要。

だって、アカウントを削除すると、そのアカウントが投稿した記事とか、アップロードした画像とかも、一緒に削除されることがある。で、間違えて、重要なアカウントを削除しちゃったら、大変なことになる。

だから、アカウントを削除する前に、必ずバックアップを取る。で、バックアップは、データベースだけじゃなくて、ファイルも含めて、サイト全体のバックアップを取る。

バックアップを取る方法は、いくつかある。例えば、UpdraftPlusとか、BackWPupとかのバックアッププラグインを使う。あるいは、サーバーの管理画面から、バックアップを取る。

バックアップを取ったら、念のため、バックアップが正常に取れてるか、確認する。だって、バックアップが壊れてたら、意味がないから。

ステップ2: アカウントを削除する

次に、アカウントを削除する。で、削除の手順は、以下の通り。

  1. WordPressの管理画面にログインする。
  2. 左側のメニューから「ユーザー」→「ユーザー一覧」を選択する。
  3. 削除したいユーザーにマウスを合わせて、「削除」をクリックする。
  4. 削除の確認画面が表示されるので、内容を確認する。
  5. そのユーザーが投稿した記事やメディアをどうするか選択する。
  • 「すべてのコンテンツを削除する」: そのユーザーの記事やメディアを全て削除する。
  • 「すべてのコンテンツを別のユーザーに割り当てる」: そのユーザーの記事やメディアを、別のユーザーに引き継ぐ。
  1. 「削除を実行」をクリックする。

ここで重要なのが、「すべてのコンテンツを別のユーザーに割り当てる」を選択すること。だって、「すべてのコンテンツを削除する」を選択すると、そのユーザーが投稿した記事やメディアが、全て削除されちゃう。

だから、記事やメディアを残したい場合は、必ず「すべてのコンテンツを別のユーザーに割り当てる」を選択する。で、引き継ぎ先のユーザーを選択する。

ステップ3: 削除後の確認

最後に、削除後の確認。で、これも重要。

だって、アカウントを削除した後に、「あれ、このアカウント、まだ必要だったかも」って気づくことがある。だから、削除後に、サイトが正常に動作してるか、確認する。

確認する内容は、以下の通り。

  1. サイトが正常に表示されるか: トップページとか、記事ページとか、いくつかのページを開いて、正常に表示されるか確認する。
  2. 記事が正常に表示されるか: 削除したユーザーが投稿した記事が、正常に表示されるか確認する。で、記事の著者が、引き継ぎ先のユーザーに変わってるか確認する。
  3. メディアが正常に表示されるか: 削除したユーザーがアップロードした画像が、正常に表示されるか確認する。

もし、何か問題があったら、すぐにバックアップから復元する。だから、バックアップは本当に重要。

定期的な監査の重要性

最後に、定期的な監査の重要性について話したいんだけど、これが本当に重要なんだよね。

監査の頻度

まず、監査の頻度なんだけど、これは、サイトの規模とか、ユーザー数によって違う。

例えば、小規模なサイトで、ユーザー数が10人以下なら、年に1回くらいでいい。でも、中規模以上のサイトで、ユーザー数が50人以上なら、3ヶ月に1回くらいが理想。

大規模なサイトで、ユーザー数が100人以上なら、毎月1回くらいが理想。だって、ユーザー数が多いと、不要なアカウントも、どんどん増えていくから。

チェックリスト

監査の時に、チェックするべき項目をリストアップしておくと、便利。で、例えば、以下のようなチェックリスト。

  1. 最後にログインしたのが、1年以上前のユーザーはいないか?
  2. 一度もログインしてないユーザーはいないか?
  3. 退職した社員のアカウントが残ってないか?
  4. 権限が適切に設定されてるか?(例えば、管理者権限が、必要以上に多くのユーザーに付与されてないか?)
  5. パスワードが弱いユーザーはいないか?

このチェックリストを使って、定期的に監査すれば、不要なアカウントを早期に発見できる。

自動化の方法

監査を自動化する方法もある。で、これが本当に便利。

例えば、When Last Loginっていうプラグインには、一定期間ログインがないユーザーを、自動的にメールで通知する機能がある。で、この機能を使えば、手動で監査しなくても、不要なアカウントを発見できる。

あるいは、WP-CLIっていうコマンドラインツールを使えば、最終ログイン日時をCSVファイルにエクスポートできる。で、そのCSVファイルを、Excelとかで開いて、不要なアカウントを洗い出す。

これ、実際に使ったことがあるんだけど、WP-CLIを使って、毎月1回、最終ログイン日時をCSVファイルにエクスポートして、Excelで確認してた。で、不要なアカウントがあったら、削除してた。で、この方法なら、手動で監査するよりも、ずっと効率的。

まとめ: アカウント管理は、サイトのセキュリティの基本

最後に、まとめなんだけど、アカウント管理は、サイトのセキュリティの基本なんだよね。で、最終ログイン日時を記録して、定期的に不要なアカウントを洗い出すことが、本当に重要。

だって、不要なアカウントが残ってると、セキュリティリスクが増える。で、アカウントの管理が複雑になる。で、コンプライアンスの観点からも、問題がある。

だから、この記事で紹介した方法を使って、最終ログイン日時を記録して、定期的に不要なアカウントを洗い出してほしい。で、サイトのセキュリティを強化してほしい。

もし、自分でやるのが難しい場合は、専門家に依頼してもいい。だって、アカウント管理は、本当に重要だから。で、専門家に依頼すれば、確実に、不要なアカウントを洗い出して、削除してくれる。

一番大事なのは、定期的に監査することなんだ。で、監査を習慣化すれば、不要なアカウントが溜まることがない。で、サイトのセキュリティが、常に高い状態を保てる。だから、定期的な監査を、ぜひ実践してほしい。

WordPressのセキュリティ、不安に思っていませんか?

「自分のサイトは大丈夫だろうか…」
「何から手をつければいいか分からない…」

もしあなたが少しでもそう感じているなら、専門家によるセキュリティ診断を受けてみることを強くお勧めします。

>> WordPressセキュリティ無料診断はこちら

上記のサイトでは、WordPressのプロがあなたのサイトの脆弱性を無料で診断してくれます。問題が見つかれば、具体的な対策方法についてもアドバイスをもらえます。手遅れになる前に、一度プロの目でチェックしてもらい、安心を手に入れましょう。

FacebookでシェアTwitterでシェアPinterestでシェア