WordPressのログイン試行回数を制限する方法を徹底解説【プラグイン&手動設定】
ハッカーがあなたのWordPressサイトにログインしようとしているのではないかと不安になっていませんか?その心配は正当なものです。
ハッカーは総当たり(トライ&エラー)方式でログイン情報を推測し、WordPressサイトへの侵入を試みています。実際、WordPressサイトにおいて最も攻撃を受けているページは、ログインページです。
一旦ハッカーが管理ダッシュボードに侵入してしまえば、サイトを完全に掌握されてしまいます。マルウェアやバックドアの設置、サイトの改ざん、違法商品の広告掲載、ユーザーの個人情報の窃取、スパム行為など、さまざまな悪意ある活動が行われる可能性があります。
幸いなことに、ユーザーが正しい認証情報を入力できる試行回数を制限することで、ログインページを保護できます。このガイドでは、WordPressサイトでログイン試行回数の制限を設定する方法を詳しく解説します。
要点:WordPressサイトでログイン試行回数を制限すれば、ハッカーによる不正アクセスの試みを防げます。最も簡単かつ効率的なのはプラグインを利用する方法です。MalCareをインストールすれば、ファイアウォールとログイン保護機能が備わり、ブルートフォース攻撃からサイトを守れます。
WordPressのログイン試行回数制限とは?
デフォルトのWordPressでは、ログインの試行回数に制限がありません。ユーザー名とパスワードの組み合わせを何度でも試すことができます。

ハッカーはこの仕様を悪用します。まず、よく使われているユーザー名とパスワードのリストを、流出データや購入したデータをもとに作成します。次に、ボットをプログラミングし、WordPressサイトを訪問させてわずか数分で何千通りもの組み合わせを試行させるのです。
こうしてハッカーは多くのWordPressサイトに侵入します。これは「ブルートフォース攻撃(総当たり攻撃)」と呼ばれ、短時間に数千件のログインリクエストをサイトに送りつける手法です。
この攻撃手法は成功率が約10%と高めです。その理由は、WordPressユーザーの多くが脆弱なログイン情報を設定していることにあります。10%という数字は低く思えるかもしれませんが、WordPressサイトは世界中に数百万存在するため、ハッカーは瞬く間に数千のサイトへ侵入できてしまうのです。
ログイン試行回数を制限することで、ハッカーとボットの動きを食い止めることができます。
ユーザーには、正しい認証情報を入力できる回数が限定されます。たとえば3回まで許可する設定にした場合、3回とも失敗するとアカウントはロックされます。
ロックされたユーザーには、以下のような認証情報の復旧手段が提示されます。
- 管理者に連絡する
- 「パスワードをお忘れですか?」機能を使って、質問に答えてパスワードを再設定する
- OTP認証またはメール認証で本人確認を行う
- CAPTCHA(画像認証)を解いて、人間であることを証明する
ボットが3回ログインを試みると、これらの障壁に直面します。それ以上先に進めず、ボットは次の標的へ移動するしかありません。
このように、ログイン試行回数の制限は、ハッカーからサイトを守り、多くのトラブルを未然に防ぐセキュリティ対策となります。次に、具体的な設定方法を見ていきましょう。
WordPressでログイン試行回数を制限する2つの方法
WordPressサイトでログイン試行回数を制限する方法は、主に以下の2つです。
- プラグインを使う方法(簡単)
- 手動でコードを追加する方法(難易度 high)
まずはシンプルで素早く、ミスのリスクもないプラグインの方法から紹介します。
方法1:プラグインを使ってログイン試行回数を制限する
WordPressでログイン制限を可能にするプラグインは複数あります。では、どれを選べばよいのでしょうか?
選ぶ基準は、「セットアップが簡単で、プロセスを自動化してくれること」です。さらに、ブロックした試行のレポートを提供してくれるプラグインなら、機能が実際に動作しているか確認できます。
ここではMalCareセキュリティプラグインを使って手順を説明します。上記の条件を満たしているだけでなく、ログイン制限にとどまらず、常時サイトを保護してくれる優れたプラグインだからです。
MalCareを導入すると、CAPTCHAベースのログイン試行制限が有効になります。つまり、誤った認証情報を3回以上入力すると、CAPTCHAの解答が求められる仕組みです。
CAPTCHAを解けば再度ログインを試せますし、「パスワードをお忘れですか?」オプションから認証情報を復旧することもできます。
それでは始めましょう。
ステップ1: サイトにMalCareをインストールし、プラグインを有効化してWordPressダッシュボードからアクセスします。
ステップ2: メールアドレスを入力し、Secure Site Nowを選択します。

ステップ3: MalCareの専用ダッシュボードにリダイレクトされ、自動的にサイトのスキャンが開始されます。
ステップ4: ログイン試行回数の制限は自動的に有効化されます。「どうやって使うの?」と思われるかもしれませんが、実際に誤った認証情報でログインを試みると、再試行がブロックされます。

Click hereを選択すると、次のようなCAPTCHAが表示されます。

CAPTCHAを解けば、再びサイトにログインできます。認証情報を思い出せない場合は、「パスワードをお忘れですか?」オプションを利用しましょう。

以上で完了です。これであなたのサイトのログイン試行回数は正常に制限されました。さらにMalCareは強固なファイアウォールを構築し、悪意あるボットや不正トラフィックのアクセスを阻止します。すべてのログイン試行のレポートもダッシュボードから確認できます。

失敗した試行と成功したログインの両方を確認できるほか、MalCareが不審と判断して自動的にブロックしたアクセスも把握できます。

さて、プラグインを使いたくない場合のために、プラグインなしでログイン試行回数を制限する方法も解説します。ただしこの方法は複雑でミスが起きやすいため、慎重に進めてください。
方法2:functions.phpを編集して手動で制限する
WordPressファイルにコードスニペットを挿入することで、ログイン保護を手動で追加できます。ただし注意が必要です。WordPressファイルを手動で変更するたびに、サイトが壊れるリスクが伴います。小さなエラーが大きな問題につながりかねません。
この方法を実行する場合は、必ず事前にサイトの完全バックアップを取得することを強くおすすめします。問題が発生しても、バックアップから素早く復元できます。BlogVaultなどのバックアッププラグインを利用すれば簡単にバックアップを取れます。
バックアップを準備したら、以下の手順に従ってください。
ステップ1: ホスティングアカウントにログインし、cPanelを開いてFile Manager(ファイルマネージャ)を選択します。
ステップ2: public_htmlフォルダ(またはサイトが格納されているフォルダ)を開き、wp-content > Themesへ移動します。

ステップ3: 使用中のテーマフォルダを選択し、その中にあるfunctions.phpファイルを探します。ここでは例として、テーマ「Personal Blogily」のフォルダを選択しています。

ステップ4: ファイルを右クリックしてEdit(編集)を選択します。ファイルが開いたら、以下のコードを追記してください。
function check_attempted_login( $user, $username, $password ) {
if ( get_transient( 'attempted_login' ) ) {
$datas = get_transient( 'attempted_login' );
if ( $datas['tried'] >= 3 ) {
$until = get_option( '_transient_timeout_' . 'attempted_login' );
$time = time_to_go( $until );
return new WP_Error( 'too_many_tried', sprintf( __( '<strong>ERROR</strong>: 認証回数の上限に達しました。%1$s後に再試行できます。' ), $time ) );
}
}
return $user;
}
add_filter( 'authenticate', 'check_attempted_login', 30, 3 );
function login_failed( $username ) {
if ( get_transient( 'attempted_login' ) ) {
$datas = get_transient( 'attempted_login' );
$datas['tried']++;
if ( $datas['tried'] <= 3 )
set_transient( 'attempted_login', $datas , 300 );
} else {
$datas = array(
'tried' => 1
);
set_transient( 'attempted_login', $datas , 300 );
}
}
add_action( 'wp_login_failed', 'login_failed', 10, 1 );
function time_to_go($timestamp)
{
$periods = array("second", "minute", "hour", "day", "week", "month", "year");
$lengths = array("60", "60", "24", "7", "4.35", "12");
$current_timestamp = time();
$difference = abs($current_timestamp - $timestamp);
for ($i = 0; $difference >= $lengths[$i] && $i < count($lengths) - 1; $i++) {
$difference /= $lengths[$i];
}
$difference = round($difference);
if ($difference != 1) {
$periods[$i] .= "s";
}
$output = "$difference $periods[$i]";
return $output;
}このコードにより、ログイン試行は3回までに制限されます。
ステップ5: ファイルを保存して終了します。
コードがサイトに組み込まれると、ユーザーは正しい認証情報を3回まで入力できます。3回失敗すると、一定期間アカウントへのアクセスがブロックされます。

この手動の方法を選ぶべきケースは、サイト内のプラグイン使用を最小限に抑えたい場合だけです。それ以外であれば、プラグインで対応する方がはるかに安全で簡単です。
以上で完了です!これでサイトのログイン試行回数が制限され、ハッカーやボットからの不正アクセスを防げるようになりました。
ログイン試行回数の制限は本当に必要?メリットとデメリット
WordPressサイトに導入する機能には、必ずメリットとデメリットの両面があります。ログイン試行回数の制限を有効化する前に、それぞれの側面を確認して、自分のサイトに適した機能かどうか判断しましょう。
ログイン試行回数制限のメリット
- 不正アクセスの防止
ログイン試行回数を制限することで、ハッカーや悪意あるボットがログインページを総当たり攻撃して侵入するのを防げます。
一時的なロックアウトだけで、ボットは諦めて別のサイトへ移動する十分な抑止力になります。
- トラフィック急増とサーバーダウンの防止
前述のとおり、ブルートフォース攻撃ではボットが何千通りものユーザー名とパスワードの組み合わせを試行します。試行のたびに、ボットはWebサーバーへリクエストを送信します。
Webサーバーはログイン処理を含むサイトの各種タスクにリソースを割り当てています。ボットが1分間に数千件のリクエストを送りつければ、サーバーに過剰な負荷がかかり、ダウンする恐れがあります。
そうなると、訪問者が一時的にサイトへアクセスできなくなってしまいます。
- ホスティングアカウント停止の防止
Webサーバーのリソースには限りがあります。リソースを超過するとサーバーに過負荷がかかります。
共有ホスティングプランを利用している場合、同じサーバー上の他のサイトにも影響が及びます。
ボットが数百回のログインを試みている間、サイトは過剰なサーバーリソースを消費します。するとホスティングプロバイダーは、サーバー上の他サイトへの影響を避けるため、そして自社の利益を守るために、サイトを一時的に停止する措置を取ることがあります。
ログイン試行回数制限のデメリット
- アカウントロックのリスク — 自分のユーザー名やパスワードをうっかり忘れてしまうと、アカウントから締め出される可能性があります。認証プロセスを経てパスワードを復旧する必要があり、時間がかかることもあります。
考えられるデメリットはこれだけです。ログイン保護を導入しない理由は他に見当たりません。もしログイン試行回数制限の代替策をお探しなら、2要素認証(2FA)を試してみてください。こちらもWordPressのログインページを保護できます。MalCareは2要素認証のベータ版を提供しており、Google Authenticatorを利用する方法もあります。
とはいえ、ログイン試行回数の制限は導入が簡単で、ハッカーからサイトを守る有効な手段です。ログイン制限によるサイト保護において、メリットはデメリットを大きく上回るといえます。
まとめ
WordPressは世界で最も人気のあるCMS(コンテンツ管理システム)です。しかし、その人気ゆえにハッカーの標的にもなりやすいのです。
WordPressサイトは常にハッカーの攻撃にさらされています。だからこそ、サイトに十分なセキュリティ対策を講じることが重要です。ログインページが最も攻撃されやすいページであることを考えると、ログイン試行回数の制限はセキュリティ強化の第一歩として最適です。
WordPressのログインページをさらに強化したい方は、以下のリソースも参考にしてください。
- WordPressログインセキュリティの強化方法
- HTTP認証でログインページをパスワード保護する方法
- ブルートフォース攻撃からWordPressサイトを守る方法
- 2要素認証の導入ガイド
手軽かつ強力な総合セキュリティソリューションをお探しなら、MalCareプラグインの利用をおすすめします。定期的なサイトスキャン、強固なファイアウォールの構築、ログイン試行回数の制限、不審な活動の検知通知など、24時間体制でサイトを保護してくれます。
MalCareでWordPressサイトをハッカーから守りましょう!
-
WordPressで外部JavaScriptを結合する方法|HTTP/2時代のサイト高速化ガイド
JavaScriptは、Webページに動的なコンテンツを表示させるためのプログラミング言語です。WordPressサイトでは、音声や動画の埋め込み、画像ギャラリー、インタラクティブなメニュー、カウントダウンタイマーなど、さまざまな場面でJavaScriptが活用されています。 JavaScriptファイルは拡張子「.js」で保存され、一般的なWordPressサイトでは、有効化されているテーマやプラグインによってページ内に読み込まれます。たとえば、テーマのトップページスライダーには「slider.js」が必要で、お問い合わせフォームのページには「form.js」が必要といった具合です。 現
-
WordPressのキャッシュを正しくクリアする方法|主要キャッシュプラグイン&ホスティング別ガイド
ウェブサイトの表示速度が速いほど、ユーザーの閲覧体験が向上し、コンバージョン率やリピート率も高まることが多くの調査で示されています。また、サイト速度はGoogleの「Core Web Vitals」における重要な指標でもあるため、高速なサイトはトラフィック増加や検索エンジンでの順位向上にもつながります。 WordPressサイトの速度を改善する最も効果的な方法は、WP RocketやWP Super Cacheといったキャッシュプラグインを使ってページキャッシュを有効化することです。 ページキャッシュは、サイト内の各ページのコピー(静的ファイル)を作成し、コンテンツをより速く配信できるようにす