コンテンツへスキップ ナビゲーションに移動
WordPressの今日から使える便利Tips
  • ホーム
  • ご利用時の注意事項
  • カテゴリー別投稿一覧
  • カテゴリー説明付き一覧
便利Tips
  1. HOME
  2. 便利Tips
  3. 不正ログイン検知で管理者に即通知する方法

不正ログイン検知で管理者に即通知する方法

2025年10月19日 最終更新日時 : 2025年11月8日 login_user
目次
  • 1 functions.php にコードを追加
  • 2 コードのポイント
  • 3 通知メールの内容例
  • 4 動作の流れ
  • 5 ポイント解説
  • 5.1 コアフック利用で精度が高い
  • 5.2 処理がサーバー側のみで完結
  • 5.3 セキュリティ強化の第一歩
  • 6 完成イメージ
  • 7 まとめ
  • 7.1 関連記事
読むまで約 7 分

この記事では、WordPressの公式フック wp_login_failed を使って、
不正ログイン試行を正確に検知し、即座に管理者へメール通知する方法を紹介します。
WordPressコアの認証処理に直接フックするため、XML-RPC・REST API経由のログイン試行も捕捉します。

1 functions.php にコードを追加

注意: 必ず子テーマの functions.php に追加してください。親テーマに直接追加するとアップデートで消える可能性があります。


//------------------------------------------------------------
// 本格的な不正ログイン試行検知(公式フック使用)
//------------------------------------------------------------
add_action('wp_login_failed', function($username) {
    $ip   = $_SERVER['REMOTE_ADDR'] ?? '';
    $time = current_time('mysql');
    $admin_email = get_option('admin_email');

    $subject = '【警告】不正ログイン試行を検知しました';
    $message = "不正なログイン試行を検知しました。\n\n"
             . "ユーザー名: {$username}\n"
             . "IPアドレス: {$ip}\n"
             . "日時: {$time}\n"
             . "URL: {$_SERVER['HTTP_HOST']}{$_SERVER['REQUEST_URI']}\n"
             . "\nこのメールは自動送信されています。";

    // メール通知送信
    wp_mail($admin_email, $subject, $message);
});

2 コードのポイント

  • wp_login_failed フックは、WordPressの認証エラー時に自動で発火します。
  • 認証処理の内部にフックするため、wp-login.php 以外の経路(REST / XML-RPC) でも確実に検知します。
  • wp_mail() 関数で管理者メールアドレス(get_option('admin_email'))へ自動送信します。
  • 外部SMTPプラグイン(WP Mail SMTPなど)を使用している場合も問題なく動作します。

3 通知メールの内容例


件名: 【警告】不正ログイン試行を検知しました

本文:
不正なログイン試行を検知しました。

ユーザー名: hacker123
IPアドレス: 203.0.113.45
日時: 20××-10-19 22:14:08
URL: example.com/wp-login.php

このメールは自動送信されています。

4 動作の流れ

  1. 誰かが存在しないユーザー名や誤ったパスワードでログインを試みる。
  2. WordPressの内部処理で認証が失敗すると wp_login_failed フックが発火。
  3. 検知された情報(ユーザー名・IP・時刻)を自動で管理者メールへ送信。
  4. これにより不審なアクセスをリアルタイムに把握可能。

5 ポイント解説

5.1 コアフック利用で精度が高い

wp_login_failed は WordPress の認証関数 wp_authenticate() から呼ばれる公式フックです。
ログインフォーム、REST API、XML-RPC すべての経路をカバーできるため、他の「POST監視」型スクリプトよりも正確かつ軽量です。

5.2 処理がサーバー側のみで完結

JavaScriptやウィジェットを使わず、PHPレベルで検知するため、
閲覧ユーザーには一切表示されず、動作も高速です。
攻撃者に検知システムの存在を気づかれにくい構成です。

5.3 セキュリティ強化の第一歩

ログイン画面からの不正ログイン試行とxmlrpcからの不正ログイン試行を検知できます。この仕組みを導入することで、不正アクセスが発生したタイミングを即把握できます。さらに、以下のような対策を組み合わせると万全です。

  • wp_login_failed の回数を記録し、一定回数でIPをブロック。
  • ▶ 2段階認証プラグインの導入。
  • ログインURLを変更(例:/wp-login/ → /secure-login/)。

6 完成イメージ

不正ログイン

※xmlrpc(エックスエムエルアールピーシー)は、WordPressが外部と通信するための古い仕組み(API) です。
もともとは「スマホアプリや他サイトからブログ投稿・編集を行う」ために使われていました。

7 まとめ

このコードは、WordPressが提供する公式のログインエラーフック
wp_login_failed を利用したの不正ログイン検知です。
サイト全体を対象に、ログイン失敗を正確に監視し、管理者へ即時通知を行う堅牢な仕組みを簡単に実装できます。

7.1 関連記事

  • ワイドCTAの作り方|WordPressで反応率が上がるデザイン手順
  • 経歴タイムラインを美しく表示する方法|CSSで簡単に作れるデザイン例
  • サイトが攻撃で落ちた時に、別サーバーへすぐ切り替える方法【エックスサーバーで簡単運用】

この記事を読んだ人はこちらも読んでいます

  • ブログ記事の長い文章の途中で「続きを読む」ボタンを設置して表示/非表示する方法
  • 【3】Google AdSenseでブログに書いてはいけない内容まとめ
  • 投稿ページに「読むまで〇分」を自動表示する方法
カテゴリー
便利Tips、セキュリティ・アクセス制御
タグ
不正ログイン
前の記事
サーバー負荷監視用ウィジェットを表示する方法
2025年10月18日
次の記事
W3CとHTMLの歴史:HTML4.01、XHTML、そしてHTML5のゆくえ
2025年10月20日

ご利用時の注意事項

必ずご利用時の注意事項等 をお読み下さい。
▶ ご利用時の注意事項
▶ プライバシーポリシー

検索

Generic selectors
Exact matches only
Search in title
Search in content
Post Type Selectors

じゃんけんゲーム

あなたの手を選んで!!

2025年9月19日公開
ただいま258件の便利なTips等公開中
本日までの閲覧数4546人
本日の閲覧者数1人

現在のオンラインユーザー数:1 人

運営者

ロゴ多摩地域在住の自宅フリーランスのおやじ。日々パソコンとにらめっこ。

とんラボ
・ウェブサイト制作
・ウェブシステム開発等
フリーランス歴十数年、最近は自治体のごみ持ち込み申請システムの開発など。

お問い合わせ

最近の投稿

ワイドCTAの作り方ワイドCTAの作り方|WordPressで反応率が上がるデザイン手順
経歴タイムラインを美しく表示する方法経歴タイムラインを美しく表示する方法|CSSで簡単に作れるデザイン例
サイトが攻撃で落ちた時に、別サーバーへすぐ切り替える方法【エックスサーバーで簡単運用】サイトが攻撃で落ちた時に、別サーバーへすぐ切り替える方法【エックスサーバーで簡単運用】
ページ内スクロールで要素が変化する方法Intersection Observerで文字だけフェードインを作る方法|スクロールアニメの基本解説
横並びのサービスカード(3列)のレスポンシブ完全版横並びサービスカード(3列)の作り方|レスポンシブ完全対応のCSSサンプル付き

カテゴリー

  • 便利Tips (203)
    • 子テーマ・テーマカスタマイズ (27)
    • 固定ページ・デザイン (62)
    • 投稿管理・デザイン (10)
    • サイドバー・デザイン (9)
    • フッターデザイン (2)
    • Contact Form7 (2)
    • 管理画面 (19)
    • セキュリティ・アクセス制御 (15)
    • SEO・サイト運営サポート (41)
    • 不具合解決 (9)
  • 操作説明 (6)
  • HTMLタグ&CSS (29)
    • 基礎 (11)
    • 特殊文字 (2)
    • アクセシビリティ (5)
  • 用語集 (8)
  • おすすめプラグイン (8)
    • Contact Form 7 (4)
  • 番外編 (10)
    • 広告 (10)
      • Google AdSense (10)

ランダム記事

  • CSSで吹き出し会話デザインを作る方法CSSで吹き出し会話デザインを作る方法
  • Lightningでヘッダ画像が表示されない!!を解決する方法【Lightningテーマ】ヘッダ画像が表示されない!!を解決する方法
  • 投稿者権限等で管理画面から不要なメニューを非表示にする方法投稿者権限等で管理画面から不要なメニューを非表示にする方法
  • 画像に自動でalt属性を設定する方法画像にalt属性を自動設定する方法|SEO評価を上げる実装コード
  • 経歴タイムラインを美しく表示する方法経歴タイムラインを美しく表示する方法|CSSで簡単に作れるデザイン例

人気記事リスト

  • ログイン画面
    ワードプレスのログイン画面のロゴを変更する方法
  • 用語集(初心者向け)
    用語集(初心者向け)
  • 並び替え
    カテゴリーページで並べ替え(ソート)ができるボタンを作る方法
  • おすすめ記事をショートコードで表示する方法
    人気記事ランキングをショートコードで表示する方法
  • おすすめ記事をショートコードで表示する方法
    おすすめ記事をショートコードで表示する方法
  • SMAC
  • whois.domaintools.com
  • aguse.jp: ウェブ調査
  • SEOチェキ! 無料で使えるSEOツール
  • WordPress Theme Search
  • JPEGからPDFへ変換
  • PNGからWEBPへ変換
  • PNGへ変換
  • removebg
  • iloveimg(背景削除)
  • https://web.archive.org
  • Alfa-Tools

今日の運勢

※この記事には広告が含まれています。

※この記事には広告が含まれています。

  • ホーム
  • カテゴリー
  • 投稿一覧


お問い合わせ
お問い合わせ
  • ホーム
  • ご利用時の注意事項
  • カテゴリー別投稿一覧
  • カテゴリー説明付き一覧
  • プライバシーポリシーについて
  • お問い合わせ

Copyright © WordPressの今日から使える便利Tips All Rights Reserved.

Powered by WordPress & Lightning Theme by Vektor,Inc. technology.

MENU
  • ホーム
  • ご利用時の注意事項
  • カテゴリー別投稿一覧
  • カテゴリー説明付き一覧
  • プライバシーポリシーについて
  • お問い合わせ
Page生成時間:0.123秒