ادمین مطالب
نویسنده مطالب بلاگ
چگونگی محدود کردن تعداد درخواست ورود در وردپرس
وردپرس به خودی خود یک پلت فرم امن است، اما این موضوع باعث نمی شود که سایت شما در برابر نفوذ هکرها در امان بماند.
یکی از رایجترین حملات هکری حملات بروت فورس است که سعی میکنند با استفاده از ترکیبهای مختلف نام کاربری و رمز عبور، از طریق صفحه ورود، به سیستم شما وارد شوند.
برای جلوگیری از این حملات، شما می توانید با اعمال محدود کردن تعداد درخواست ورود در وردپرس، تلاشهای ورود از یک آدرس IP خاص را در مدت زمان مشخصی محدود کنید.
ایجاد محدودیت در ورود به مدیریت وردپرس با افزونه Limit Login Attempts Reloaded
یکی از روش های حفظ امنیت وبسایت های وردپرس استفاده از افزونه های امنیت ودپرس است.
یکی از سادهترین راه ها برای ایجاد محدودیت در ورود به پنل مدیریت وردپرس، استفاده از پلاگین «Limit Login Attempts Reloaded» است. این افزونه با شناسایی رباتها، قفل کردن کاربران پس از چندین بار تلاش ناموفق، مسدود کردن موقت آدرسهای IP و اطلاعرسانی در صورت قفل شدن کاربر به امنیت وب سایت شما میکند.
ما از این افزونه به دلایل زیر استفاده خواهیم کرد:
- به طور فعال در بیش از 2 میلیون وب سایت استفاده می شود.
- این افزونه بهروزرسانیهای منظم دریافت میکند.
- با آخرین نسخه وردپرس تست شده است.
- دارای امتیاز 4.9/5 ستاره است.
- کاملا رایگان است.
نصب افزونه Limit Login Attempts Reloaded
برای شروع کار با افزونه Limit Login Attempts Reloaded، در پیشخوان وردپرس به افزونه ها >> افزودن جدید بروید.
عبارت Limit Login Attempts Reloaded را جستجو کنید.
حالا کافیست دکمه نصب افزونه را بزنیدپس از اتمام نصب، روی “فعال سازی” کلیک کنید.
پس از فعالسای افزونه در پیشخوان نمایش داده می شود.
پیکربندی افزونه Limit Login Attempts Reloaded
در مرحله بعدی از محدود کردن تعداد درخواست ورود در وردپرس باید برای افزونه پیکربندی انجام دهید.
کافیست روی نام افزونه در پیشخوان کلیک کنید تا وارد صفحه تنظیمات افزونه شوید.
در سربرگ تنظیمات، میتوانید یکی بودن با GDPR را غیرفعال/فعال کنید (برای حفاظت از دادهها). همچنین، می توانید ایمیلی را که اعلان ها پس از قفل شدن به آن ارسال می شود را وارد کنید.
در بخش تنظیمات برنامه، تعیین کنید که قبل از قفل شدن کاربر، چند بار تلاش برای ورود به سیستم مجاز است.
همچنین می توانید تعیین کنید که کاربر چه مدت قفل شود.
سربرگ گزارش ها، به شما امکان می دهد IP / نام کاربری را که قصد دارید اجازه ورود به آن ها دهید را وارد کنید.
هر IP یا نام کاربری که اجازه دهید می توانند بدون قفل شدن وارد سیستم شوند.
از طرف دیگر، هر IP یا نام کاربری که رد کنید برای همیشه قفل می شود. این امر به ویژه زمانی مهم است که متوجه فعالیت های مشکوک از یک آدرس IP می شوید.پس از انجام تمام تنظیمات، ذخیره تغییرات را بزنید.
محدود کردن تعداد درخواست ورود در وردپرس با افزونه Login LockDown
دومین افزونه ای که می توانید برای محدودیت در ورود به پنل مدیریت وردپرس به سایت خود اضافه کنید، افزونه Login LockDown است.
این افزونه رایگان را هم می توانید از مخزن وردپرس دانلود و نصب کنید.
برای انجام تنظیمات در این افزونه باید از طریق پیشخوان وردپرس> تنظیمات> Login LockDown را انتخاب کنیدوقتی وارد صفحه تنظیمات شدید می توانید محدود کردن تعداد دفعات تلاش برای ورود را انجام دهید.
قسمت1) مشخص کردن تعداد تلاش برای ورود
قسمت2) مدت زمان قفل ماندن صفحه پس از هر تلاش ناموفق
قسمت3) مدت زمان مسدود کردن ip شخص
محدود کردن تعداد درخواست ورود در وردپرس بدون افزونه
اگر نخواهید از افزونه ها استفاده کنید، شما می توانید ایجاد محدودیت در ورود به مدیریت وردپرس را به صورت دستی اعمال کنید.
اما، قبل از اینکار بهتر است بک آپ گرفتن از سایت وردپرس را انجام دهید.
هنگامی که آخرین نسخه پشتیبان وردپرس خود را دریافت کردید، وارد کنتل پنل وب سایت خود شوید. پوشه public_html را باز کنید.
سپس، به پوشه wp-content بروید و فایل function.php را پیدا کنید.
روی فایل کلیک راست کرده و گزینه edit را انتخاب کنید.
وقتی باز شد کد زیر را به فایل اضافه کنید.
در این کد، کاربرانی که 3 بار تلاش ناموفق برای ورود داشته باشند (برای مدتی) قفل خواهند شد.
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>: You have reached authentication limit, you will be able to try again in %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)
{
// converting the mysql timestamp to php time
$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 (isset($difference)) {
if ($difference != 1)
$periods[$i] .= “s”; $output = “$difference $periods[$i]”;
در نهایت تغییرات را ذخیره کنید.
دیدگاه ها