wordpressで管理画面ログインURLを変更する

公開日: 

wordpressは便利ですが、管理画面のログインURLが「wp-admin」か「wp-login.php」と決まっているのですぐに管理画面の場所がわかって攻撃を受けてしまいます。

ブルートフォースアタックで何回もログイン試行されてしまうと、ロリポップなどのサーバーはhtaccessが勝手に変更されたりして不便です。

そこで、管理画面のURL自体をオリジナルなものにしてしまえば、攻撃されるリスクをかなり減らせますので、是非やってみて下さい。

1.wp-login.phpの変わりになるファイルを新規作成する

どれでもいいので、同一階層内のファイルを一つコピーし、以下の内容に変更して保存します。

<?php
define( 'ANYWHERE_LOGIN', sha1( 'keyword' ) );
require_once './wp-login.php';
?>

※ファイル保存時にはUTF-8のBOMなしで保存しないと日本語が文字化けする可能性があります。

2.テーマフォルダ内のfunctions.phpに命令を追加する

以下の内容を追加してからアップロードして下さい。

define( 'ANYWHERE_LOGIN_PAGE', 'anywhere-login.php' );
add_action( 'login_init', 'anywhere_login_init' );
add_filter( 'site_url', 'anywhere_login_site_url', 10, 4 );
add_filter( 'wp_redirect', 'anywhere_login_wp_redirect', 10, 2 );
if ( ! function_exists( 'anywhere_login_init' ) ) {
	function anywhere_login_init() {
		if ( !defined( 'ANYWHERE_LOGIN' ) || sha1( 'keyword' ) != ANYWHERE_LOGIN ) {
			status_header( 403 );
			exit;
		}
	}
}
if ( ! function_exists( 'anywhere_login_site_url' ) ) {
	function anywhere_login_site_url( $url, $path, $orig_scheme, $blog_id ) {
		if ( ( $path == 'wp-login.php' || preg_match( '/wp-login\.php\?action=\w+/', $path ) ) &&
			( is_user_logged_in() || strpos( $_SERVER['REQUEST_URI'], ANYWHERE_LOGIN_PAGE ) !== false ) )
			$url = str_replace( 'wp-login.php', ANYWHERE_LOGIN_PAGE, $url );
		return $url;
	}
}
if ( ! function_exists( 'anywhere_login_wp_redirect' ) ) {
	function anywhere_login_wp_redirect( $location, $status ) {
		if ( strpos( $_SERVER['REQUEST_URI'], ANYWHERE_LOGIN_PAGE ) !== false )
			$location = str_replace( 'wp-login.php', ANYWHERE_LOGIN_PAGE, $location );
		return $location;
	}
}

変更ポイントは1行目の「anywhere-login.php」となっている部分で、ここを自分で作ったファイル名に変更します。

keyword部分も変更した場合は、同一名を置き換える

ついでにもう一個、xmlrpc.phpを狙ったアタックもあるので、xmlrpc.phpの格納されているhtaccessに以下の内容を記述する

<Files xmlrpc.php>
Order Deny,Allow
Deny from all
</Files>

これでxmlrpc.phpにアクセスできなくなるので、もう安心かも…

コメント入力欄

主な業務内容

  • ホームページ制作
  • ECサイト構築
  • SEO対策
  • システム構築
  • トレードシステム設計
  • 展示会の企画・設計
  • 日用雑貨の販売
PAGE TOP ↑