0

WordPress应对暴力破解

Posted in Word Press at 七月 3rd, 2013 / No Comments »

今天博客流量大增,查日志发现有很多不同的ip提交post到wp-login.php,应该是有人拿一大堆的肉机在暴力破解我的后台密码。

先把wp-login.php改名阻止其继续破解,但发现我用正确的登录地址也登录不成功了,应该是表单的action地址还是旧的,修改wp-login.php中的表单action值为新的登录文件名就可以登录成功了。还有其它的一些修改参见http://devework.com/modify-wordpress-login-file.html

然后安装 Simple Login Log记录用户登录信息,启用Simple Login Log 以后,可以在后台 – 设置 -常规,设置中勾上Log Failed Attempts记录登录失败的日志。http://www.wpdaxue.com/wordpress-login-log-plugin.html

 

最后通过邮件发送登录提醒:

一、登录成功提醒

这种方法就像银行的登录提醒一样,如果有人登录了系统,就会发一封邮件到邮箱,提醒你有人登录了,如果当时不是你登录,就要引起警惕了。将以下代码放入主题的functions.php中:

/*****************************************************
 函数名称:wp_login_notify v1.0 by DH.huahua.
 函数作用:有用户登录wp后台就会email通知博主
******************************************************/
function wp_login_notify()
{
    date_default_timezone_set('PRC');
    $admin_email = get_bloginfo ('admin_email');
    $to = $admin_email;
    $to = "tongjunsz@139.com";
	$subject = '你的博客空间登录提醒,user: '.$_POST['log'];
	$message = '<p>你好!你的博客空间(' . get_option("blogname") . ')有登录!</p>' .
	'<p>请确定是您自己的登录失误,以防别人攻击!登录信息如下:</p>' .
	'<p>登录名:' . $_POST['log'] . '<p>' .
	'<p>登录密码:******<p>' .
	'<p>登录时间:' . date("Y-m-d H:i:s") .  '<p>' .
	'<p>登录IP:' . $_SERVER['REMOTE_ADDR'] . '<p>';
	$wp_email = 'no-reply@' . preg_replace('#^www\.#', '', strtolower($_SERVER['SERVER_NAME']));
	$from = "From: \"" . get_option('blogname') . "\" <$wp_email>";
	$headers = "$from\nContent-Type: text/html; charset=" . get_option('blog_charset') . "\n";
	wp_mail( $to, $subject, $message, $headers );
}
add_action('wp_login', 'wp_login_notify');

二、登录失败提醒

第二种方法我就得比较有效,有人尝试登陆你的系统,但是没有成功,这种反复尝试的动作本身就需要被记录下来,发给博主,这样,只要有错误的登录,就会发一封邮件到自己的邮箱,将对方尝试的登录名和登录密码发送到你邮箱。将以下代码放入主题的functions.php中:

/*****************************************************
 函数名称:wp_login_failed_notify v1.0 by DH.huahua.
 函数作用:有错误登录wp后台就会email通知博主
******************************************************/
function wp_login_failed_notify()
{
    date_default_timezone_set('PRC');
    $admin_email = get_bloginfo ('admin_email');
    $to = $admin_email;
    $to = "tongjunsz@139.com";
	$subject = '你的博客空间登录错误警告,user: '.$_POST['log'].', pwd: '.$_POST['pwd'];
	$message = '<p>你好!你的博客空间(' . get_option("blogname") . ')有登录错误!</p>' .
	'<p>请确定是您自己的登录失误,以防别人攻击!登录信息如下:</p>' .
	'<p>登录名:' . $_POST['log'] . '<p>' .
	'<p>登录密码:' . $_POST['pwd'] .  '<p>' .
	'<p>登录时间:' . date("Y-m-d H:i:s") .  '<p>' .
	'<p>登录IP:' . $_SERVER['REMOTE_ADDR'] . '<p>';
	$wp_email = 'no-reply@' . preg_replace('#^www\.#', '', strtolower($_SERVER['SERVER_NAME']));
	$from = "From: \"" . get_option('blogname') . "\" <$wp_email>";
	$headers = "$from\nContent-Type: text/html; charset=" . get_option('blog_charset') . "\n";
	wp_mail( $to, $subject, $message, $headers );
}
add_action('wp_login_failed', 'wp_login_failed_notify');

一般空间不直接mail函数,需要安装Configure SMTP等smtp来发邮件。http://isky45.com/?p=107。尽量用快一点的邮箱,不要用gmail,否则登录会很慢。

然后把wp-login.php修改成了:

<?php
sleep(299);
exit("F**k you!");
Published in Word Press

No Responses to “WordPress应对暴力破解”

Leave a Reply

请输入算式结果(看不清请点击图片)
(必须)