WordPress管理画面ログイン通知メールと2段階認証

※本サイトは、アフィリエイト広告による収益を得て運営しています。リンク先での購入により売上の一部が本サイトに還元されることがあります。
WordPress管理画面ログイン通知メールと2段階認証

SiteGuard WP Plugin でログイン画面やコメントの画像認証をオンにしていると、ランダムに表示される png 画像が見つからない File not found のエラーがサーバーのエラーログに出るようになりました。

/plugins/siteguard/really-simple-capcha/tmp/ランダムな9桁の数字.png

WordPress.org のフォーラム トピック: SiteGuard WP Pluginのエラーアラートの読み方 と全く同じ現象ですが、解決方法はなさそうです。

トピックを投稿された方のサーバー環境は mixhost、私のレンタルサーバーはカラフルボックスなので、もしかすると LiteSpeed サーバーで起こる現象かもしれません。※ カラフルボックスにサーバーを移転した記事は、こちら をご覧ください。

SiteGuard WP Plugin は、ログインアラート(ログインがあったことをメールで通知)の機能とログイン時の画像認証しか使用していなかったのと、組み込まれている really-simple-capcha のアップデートは今後無さそうなので、代替として「ログインメール通知」のコード作成と「2段階認証」のプラグインを導入しました。

ログインメール通知(アラート)のコード

このブログの管理人は私一人なので、「ログインメール通知」は必要なのかな?と思いましたが、もしログインされた場合に備え、関数リファレンス/wp mail - WordPress Codex 日本語版 を参考に、WordPress の wp_mail 関数を使って書いてみました。
WordPress のバージョン 5.0、php7 の環境で動作しています。

function login_notify ( $user_login ) {
    $website = 'KEN-G.COM';
    $datetime = current_time( 'Y-m-d D H:i' );
    $getip = $_SERVER['REMOTE_ADDR'];
    $ua = $_SERVER['HTTP_USER_AGENT'];
    $email = get_option('admin_email');
    $subject = ''.$website.'にログインがありました';
    $headers = array ( 
        'From: '.$website.' <'.$email.'>',
        'Content-Type: text/html; charset=UTF-8',
        );
    $message = '<html><body>'.$datetime.' に '.$user_login.' がログインしました。<br><br>IPアドレス:'.$getip.'</br>ユーザーエージェント:'.$ua.'</body></html>';

    wp_mail( $email, $subject, $message, $headers );
    }
add_action( 'wp_login', 'login_notify', 10, 1 );

KEN-G.COM の部分は、ウェブサイト名で、メールの件名に表示されます。
ウェブサイト名を変更後、WordPress のテーマの function.php などに追記すればOKです。
メールアドレスは、WordPress の管理画面のプロフィールに登録されているメールアドレスに送信されます。

WordPress の管理画面にログインした時点で、wp_mail で送られてくるメールの件名は、「KEN-G.COMにログインがありました」で、メールの本文は以下のようになります。

2018-12-17 Mon 21:00 に admin がログインしました。

IPアドレス:10.0.1.1
ユーザーエージェント:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0.2 Safari/605.1.15

WordPress管理画面へのログインを2段階認証に

WordPress 2段階認証 ワンタイムパスワード 入力画面
WordPress ワンタイムパスワード 入力画面

WordPress の Jetpack の機能「シングルサインオン」を使うのが手軽で良いのですが、Jetpack はインストールしていないので、WordPress の開発者の方がリリースしている Two-Factor プラグインを導入しました。
現時点でベータ版ですが、問題はなさそうです。
認証方法は、メールアドレス、ワンタイムパスワード(Google Authenticator)、Universal 2nd Factor になります。

WordPress 2段階認証 Two Factor プラグイン
Two Factor プラグインの設定画面

Two-Factor プラグインを有効後、ユーザー メニューの あなたのプロフィール ページに Two-Factor Options が追加され認証方法を選択可能です。
Google Authenticator などの2段階認証のアプリで、QRコードを撮影するか表示されている文字列を入力すれば、アプリ側での登録は完了です。
最後に、アプリ上で表示されている数字を WordPress側の Authentication Code に入力して Submit すれば登録が完了します。

2段階認証は、ログインの際に毎回アプリを起動して数字をコピーするのは手間がかかりますね。
パスワードの管理を 1Password でされている方は、新規フィールドの種類を ワンタイムパスワード にして設定すれば、自動でワンタイムパスワードをクリップボードにコピーしてくれます。 ※ 他のパスワード管理アプリでも可能かと思います。

最後に

SiteGuard WP Plugin のプラグインを使用する以外で、メール通知アラートを実行する具体的なコードはなかったので、書いてみました。参考にして頂けたら幸いです。



この記事のタイトルとURLをコピーする
スポンサーリンク