特定のIPアドレスからのみログインできるようにする

公開日| 2013年6月20日   更新日| 2013年6月20日   コメントはありません。

昨今では、Wordpressを狙ったアタック、クラッキングが多発しています。
ログインアタックは、その最たるもので、トラフィック的にも迷惑ですし、仮に成功されてしまえば大変なことになってしまいます。

そこで、今回は、非常に簡単ながら、クライアントIPアドレスを元にログインの可・不可を制御して、 よりセキュアなログイン制御を行うように設定してみます。

特定のIPアドレスからのみログインできるようにするには

プラグインで対応するのも良いですが、ここではでテーマ毎に対応できるように
テーマディレクトリで使っている functions.php にその処理を追記してみます。

...
add_filter('authenticate', 'my_login_authenticate', 30, 3);
function my_login_authenticate ($user,$username, $password) {
	$ip = $_SERVER['REMOTE_ADDR'];
 
	if( !isset($username) || empty($username) ||
		(
			$ip != '127.0.0.1' &&
			$ip != '111.122.133.144'  /* ここにあなたのIPアドレスを指定します。もし複数あれば、以下に追記すると良いでしょう。*/
		)
	  ) {
		return new WP_Error( 'denied', "<strong>ERROR</strong>: ログインが許可されていません。"  );
	}
     return $user;
}
...

約10行程度の処理で、OKです。
もちろん、この中のIPアドレスは、管理者がログインするであろうクライアントIPアドレスを設定する必要があります。(上記では、’111.122.133.144′ としています)
複数あれば、&& でそのクライアントIPアドレスをすべて判断すればOKです。

また、LANからは許可したい場合は、以下のような判定もありです。

...
 
	if( !isset($username) || empty($username) ||
		(
			$ip != '127.0.0.1' &&
			$ip != '111.122.133.144' &&   /* ここにあなたのIPアドレスを指定します。もし複数あれば、以下に追記すると良いでしょう。*/
			strpos($ip ,'192.168.')===false  /* ローカルIPは、許可する  */
		)
	  ) {
}
...
上記では、日本語を使っていますので、必ず UTF8で保存しましょう。UTF8でないとエラーになります。

実際にログインできなかった場合、以下のように出力されます。

Wordpressでログイン失敗時に画面

このやり方を使えば、変なIPアドレス(海外など)からのログインを、非常に簡単にはじくことができます。
いちいちプラグインをインストールし、有効にする必要もありません。また、有効なIPアドレスが変わった場合、functions.php を編集し、アップロードすればOKですし、メンテナンスも楽かなぁと思います。


コメント

口コミ・評判を投稿 :

ブラウザの JavaScriptが無効となっている場合、コメントの投稿はできません。
コメントを投稿するには、JavaScriptを有効にしてください

お名前 *

メールアドレス *
(口コミ・評判欄には、表示されませんが入力が必要です。)

サイトアドレス



  • はてなブックマークへ追加する
  • Facebookでシェアする
  • twitter でつぶやく
  • Google Plusでシェアする
  • Pocketでシェアする
ページトップへ