10 راهکار افزایش امنیت صفحه ورود وردپرس
حملات بروت فورس یکی دیگر از رایجترین مشکلاتی است که سایتهای وردپرس را تحت شعاع قرار میدهد. برای جلوگیری از این حملات میتوانید با راهکارهایی که در این مقاله برای افزایش امنیت صفحه ورود وردپرس تهیه کردهام، تا حد بسیار بالایی از این کار جلوگیری کرده و مانع از هک وردپرس شوید.
روزانه میلیونها حمله مخرب برای نفوذ به سایتهای وردپرسی صورت میگیرد که اگر از کلمه عبور ضعیف استفاده کرده باشید، این کار میتواند منجر به سطح دسترسی به پیشخوان وردپرس شده و کارهای مخربی توسط افراد سودجو صورت گیرد. در حالی که با چند راهکار ساده از جمله استفاده از کلمه عبور قوی میتوان از این کار جلوگیری کرد.
10 راهکار افزایش امنیت صفحه ورود وردپرس
اگر وبسایت خود را یک خانه فرض کنیم، صفحه ورود به وردپرس همان درب اصلی خانه است؛ عدم توجه به این درب سعنی تجاوز به حریم خانه توسط افراد سودجو که به قصد خرابکاری وارد آن خواهند شد. شما برای امنیت خانه خود چه میکنید؟
مسلما اولین نکته استفاده از یک قفل مناسب خواهد بود. اما آیا شاهکلیدی وجود ندارد که این قفل را باز کند؟ مطمئنا که قابل باز شدن است. بنابراین باید به فکر استفاده از راهکارهای متعدد دیگری نیز باشیم که در ادامه این نوشته به معرفی راهکارهای مختلف میپردازم.
1. استفاده از رمز عبور قوی
بر اساس آمارهایی که تا بهامروز میدانیم بیشترین دلیل هک شدن سیستمهای نرمافزاری در اثر استفاده از رمز عبور ضعیف و تکراری بوده است. مثلا کشور خودمان ایران را در نظر بگیرید که در بزرگترین هک اخیری که در یک اپلیکیشن سفارش غذا رخ داد، دیگر به یک کشور اپنسورس از نظر اطلاعات شهروندان تبدیل شدهایم.
بسیاری از ما عادت داریم که از رمز عبور تکراری در بیشتر سایتها استفاده کنیم. حال با هک یک سایت چه اتفاقی رخ میدهد؟ واضح است، رمز شما نیز در بین اطلاعات هک شده قرار دارد و حالا در هر سایت و سیستم دیگری که از این رمز استفاده رده باشید به سادگی قابل هک شدن است. کافی است هکر بر اساس اطلاعاتی که از شما دارد ببیند در چه سایتها و سرویسهایی عضو هستید تا از رمز عبور هک شده استفاده کند.
یک کلمه عبور قوی برای استفاده در هر سایت و سرویس آنلاینی باید ویژگیهای زیر را دارا باشد:
- استفاده ترکیبی از اعداد، حروف بزرگ و کوچک، کاراکترهای خاص.
- عدم استفاده از اطلاعات شخصی برای رمز مانند شماره ملی، تاریخ تولد یا شماره موبایل.
- تمامی کاراکترهای رمز عبور باید بی معنی باشند. اگر قرار بر دادن معنی است برخی کاراکترها را تعویض کنید. برای مثال بهجای حرف a از @ یا بهجای عدد صفر از حرف o استفاده کنید. به همین ترتیب جایگزینهای متعددی را برای خود استفاده کنید.
- حداقل طول رمز عبور شما باید بیش از ۸ یا حتی ۱۲ کاراکتر باشد.
وردپرس پیش از این صرفا یک فیلد را برای انتخاب رمز عبور در اختیار شما قرار میداد. اما از نسخه ۵ وردپرس قابلیتی برای تولید رمز تصادفی نیز به آن افزوده شد. توصیه میشود از همین رمز عبور قوی برای حساب کاربری خود استفاده کنید.
2. عدم استفاده از نام کاربری رایج
وردپرس برای آدرس نویسنده مطالب از همان نام کاربری استفاده میکند. با اینکه درست است که از این نظر میتوان به آن خرده گرفت و شاید بهتر باشد در آینده شاهد شخصی سازی آدرس نویسنده باشیم تا چیزی جدا از نام کاربری باشد؛ اما به هر حال بهتر است از برخی نامهای کاربری رایج استفاده نکنیم.
به عنوان مثال نامهای کاربری همچون admin, administrator, modir, user جزو نامهای کاربری رایج در بیشتر سیستمهای نرمافزاری هستند؛ بهطوریکه در بسیاری از مودمها و سختافزارها برای مدیریت نرمافزاری نیز از همین رمز استفاده میشود.
برای ایجاد یک نام کاربری امن بدین ترتیب عمل کنید:
- از یک نام کاربری غیرمرتبط با موضوع سایت استفاده کنید. مثلا اگر فروشگاه محصولات ورزشی دارید، به جای استفاده از اصطلاحات ورزشی مثل sport از یک پیشوند دیگر مانند musician استفاده کنید.
- گفتم پیشوند؟ بله. به این دلیل که نکته دوم استفاده ترکیبی است. مثلا در ادامه از اعداد برای نام کاربری استفاده کنید. مثلا همان نام کاربری قبلی میتواند musician4392 باشد.
- سعی کنید که نام کاربری خود را در مقابل افراد مختلف تایپ نکنید!
حال از آنجا که بیشترین حملات صفحه ورود وردپرس که تحت نام حملات بروت فورس شناخته میشوند بر این مبناست که قبل از هرچیزی نام کاربری یافت شود، بهتر است از چنین نامهای رایجی استفاده نکنید. ممکن است شما اصلا صفحه نویسنده وردپرس را غیرفعال کرده باشید و از روشهای دیگر هم نام کاربری قابل شناسایی نباشد، اما همین که از یک نام تکراری استفاده کنید، انجام آن کار نیز بی فایده بوده است.
3. محدود کردن ورود به پیشخوان وردپرس با ایمیل
خب تا اینجای کار شاید سایت شما یک مجله چند منظوره باشد که نویسندگان متعددی در آن فعالیت دارند و هر یک دارای صفحه اختصاصی خود است. یک راهکار دیگر برای افزایش امنیت صفحه ورود وردپرس این است که ورود به حساب کاربری را صرفا محدود به ایمیل کنید.
برای این منظور کافی است قطعه کد زیر را در فایل functions.php قالب خود اضافه کنید.
// Login to Wp-Admin just by Email.
remove_filter('authenticate', 'wp_authenticate_username_password', 20);
با انجام این کار به جای نام کاربری باید آدرس ایمیل آن حساب کاربری را وارد کرد تا بتوان وارد پیشخوان وردپرس شد. حتی اگر نام کاربری درست باشد، وردپرس اجازه ورود را نخواهد داد.
4. استفاده از ورود دو مرحلهای در وردپرس
یکی دیگر از نکات افزایش امنیت صفحه ورود وردپرس استفاده از ورود دو مرحلهای است. با فعال کردن این قابلیت پس از وارد کردن نامکاربری و رمز عبور، روی دکمه ورود کلیک میکنید. اما بهجای ورود به پیشخوان وردپرس، یک باکس دیگر باز میشود که از شما کد ورود دو مرحلهای را درخواست خواهد کرد.
این کد نیز یکبار مصرف است و معمولا برای مدت ۳۰ یا نهایتا ۶۰ ثانیه فرصت وارد کردن آن را دارید. اگر اشتباه وارد شود یا مدت زمان آن بگذرد کد منقضی خواهد شد و باید کد جدید تولید شده را وارد کنید. حال این کد را باید از چه طریقی دریافت کرد؟
- یکی از روشها استفاده از برنامههای موبایل همچون google authenticator و microsoft authenticator است. کافی است افزونه مرتبط با این ابزار را در وردپرس نصب کرده و تنظیمات آن را انجام دهید. در این صورت در این برنامهها در هر ۳۰ ثانیه یک کد ورود تولید میشود که با استفاده از آنها میتوانید در سایت لاگین کنید.
- روش بعدی استفاده از ایمیل به جای اپلیکیشن موبایل برای تولید کد عبور ورود دو مرحله ای است. در این روش نیز کد ورود توسط افزونه تولید شده و زمانی که روی دکمه ورود کلیک میکنید از طریق ایمیل برایتان ارسال خواهد شد. کد را از ایمیل دریافت کرده و در فیلد کد ورود که بزنید قادر به دسترسی پیشخوان وردپرس هستید.
زمانی که از رمز عبور دو مرحلهای استفاده کنید، حتی اگر نام کاربری و رمز درست وارد شده باشد، تا زمانی که کد ورود صحیح وارد نشود دسترسی به پیشخوان فراهم نخواهد بود. خصوصا اینکه بعد از چند تلاش ناموفق نیز ip شخص مسدود شده و با وارد کردن کد ورود دو مرحلهای درست نیز قادر به دسترسی نخواهد بود.
5. استفاده از فایروال WAF کلودفلر
در این روش میتوانید با استفاده از قابلیت تعریف رول که در تنظیمات فایروال کلودفلر وجود دارد، صفحات ورود به وردپرس را روی حالت استفاده از حالت Js challenge یا حتی کپچا قرار دهید تا حملات بروت فورس که بر روی صفحات ورود به وردپرس با استفاده از باتها صورت میگیرد را مسدود کند.
برای افزودن یک لایه امنیتی بیشتر نیز میتوانید دسترسی به صفحه ورود را بر اساس ip کشور انتخاب کنید تا از این نظر نیز محدود شوید. برای این منظور کافی است در حساب کاربری کلودفلر به منوی Security رفته و پس از انتخاب زیرمنوی WAF با کلیک روی دکمه Create Rule یک قانون جدید تعریف کنید.
- ابتدا بر اساس کاری که این رول انجام میدهد یک نام برای آن انتخاب کنید. در اینجا من با ترکیبی از ایجاد چالش JS بر اساس ip کشور و صفحات ورود به وردپرس را تعریف کردهام که برای همین از نامی مثل «Wp-admin, Login & Country “challenge”» استفاده میکنم.
- یک قانون از نوع URI Path ایجاد کنید که روی گزینه Contains بوده و مقدار آن را روی
/wp-admin/
که مربوط به آدرس پیشخوان وردپرس است قرار دهید. - سپس روی دکمه And کلیک کرده و این بار نیز یک URI Path با گزینه does not equal و با مقدار
/wp-admin/admin-ajax.php
ایجاد کنید. این گزینه برای این است که خطاهای مربوط به درخواستهای آجاکس در سایت برای کاربران ایجاد نگردد. - حال روی OR کلیک کنید. این بار نیز یک URI Path با گزینه Contains و با مقدار
/wp-login.php
ایجاد کنید. این گزینه نیز برای فرم ورود به وردپرس است. دقت کنید که ابتدای آن با کاراکتر اسلش (/) آغاز شود. سپس مجددا روی OR کلیک کرده و این بار مقادیر را بر اساس آیپی کشور (انتخاب گزینههای Country، equals و در نهایت انتخاب کشور مورد نظر) مانند تصویر وارد کنید. - حال انتخاب کنید که چه اقدامی برای چنین درخواستهایی صورت گیرد. بهترین حالت همان Js Challenge است. اما اگر زیاد اصرار دارید میتوانید از حالتهای دیگر نیز استفاده کنید.
- در نهایت روی دکمه Deploy که کلیک کنید، رول تعریف خواهد شد.
حال اگر با یک vpn یا احتمالا همان آیپی خود وارد پیشخوان وردپرس یا صفحه ورود شوید، ابتدا یک صفحه بررسی چالش برای شما باز خواهد شد که آیپی شما بررسی میگردد. اگر شما را ربات تشخیص ندهد صفحه مجددا لود شده و دسترسی به فرم ورود را خواهید داشت. در غیر اینصورت امکان مشاهده فرم ورود به وردپرس را ندارید.
6. شخصی سازی پیام های خطا در صفحه ورود به وردپرس
یکی دیگر از مواردی که میتوان برای امنیت وردپرس به آن خرده گرفت پیغامهای خطای نمایش داده شده است. به عنوان مثال زمانی که من از نام کاربری یا آدرس ایمیل صحیح استفاده کنم اما رمز اشتباه باشد، وردپرس خطایی مبنی بر «رمز وارد شده برای نام کاربری X اشتباه است» نمایش میدهد.
چنین خطایی یعنی اینکه نام کاربری درست است، اما صرفا رمز اشتباه است. بنابراین بخشی از مشکلات هکر برای تلاش ورود به سایت حل شده است. پس بهتر است که نمایش این پیغامهای خطا را تغییر دهیم. برای این منظور میتوانید کدهای زیر را به فایل فانکشن قالب خود اضافه کنید.
function my_custom_error_messages() {
if (strpos($_SERVER['REQUEST_URI'], 'wp-login.php') !== false) {
global $errors;
$err_codes = $errors->get_error_codes();
// Invalid username.
if (in_array('invalid_username', $err_codes)) {
$error = '<strong>Error</strong>: Something Wrong!';
}
// Invalid username.
if (in_array('empty_username', $err_codes)) {
$error = '<strong>Error</strong>: Something Wrong!';
}
// Incorrect password.
if (in_array('incorrect_password', $err_codes)) {
$error = '<strong>Error</strong>: Something Wrong!';
}
if (in_array('empty_password', $err_codes)) {
$error = '<strong>Error</strong>: Something Wrong!';
}
if (in_array('invalid_email', $err_codes)) {
$error = '<strong>Error</strong>: Something Wrong!';
}
return $error;
} else {
return '';
}
}
add_filter('login_errors', 'my_custom_error_messages');
با افزودن این کدها به فایل functions.php پیغامهای خطای ذکر شده نمایش داده خواهد شد و دیگر مشخص نیست که آیا نام کاربری یا آدرس ایمیل صحیح وارد شده یا اشتباه است. با وارد کردن هز چیزی صرفا خطای Error: Someting Wrong! نمایش داده میشود.
7. محدود کردن تعداد دفعات تلاش برای ورود به سایت
با انجام این کار میتوانید یک حداقل تعداد تلاش برای ورود رمز و نام کاربری اشتباه را تعیین کنید. اگر بیش از این تعداد تلاش صورت گیرد، ip فرد مسدود شود. به عنوان نمونه اگر تعداد دفعات تلاش را روی ۳ درخواست تعیین کنید، در درخواست چهارم برای ورود به سایت، ip فرد بلاک شده و حتی با وارد کردن نام کاربری و رمز درست نیز دسترسی به پیشخوان وردپرس را ندارد.
با نصب افزونه Limit Login Attempts Reloaded وردپرس میتوانید تعداد دفعات برای ورود را تعیین کنید. همچنین امکان مشخص کردن اینکه ip فرد تا چه زمانی مسدود باشد فراهم است. این افزونه امکان ارسال گزارش از طریق ایمیل را نیز دارا است.
8. استفاده از کپچا را فراموش نکنید
با اینکه تا اینجا راهکارهای مختلفی را برای بیشتر کردن تعداد مراحل ورود به وردپرس تعیین کردهایم، اما بد نیست آن را پیچیدهتر کنیم. یکی دیگر از روشها استفاده از کپچا برای افزایش امنیت صفحه ورود به وردپرس است.
با اینکه افزونههای متعددی در وردپرس برای کپچا نظیر کپچا ریاضی، پازلی، گوگل و… وجود دارد؛ اکا یکی دیگر از این سرویسها که امکان عالی دارد توسط کلودفلر با نام Cloudflare Turnstile به تازگی معرفی شده است.
در این سرویس بر خلاف سایر سرویسها مثل گوگل کپچا، در همان لحظهای که بازدیدکننده وارد سایت شود آیپی وی تحت نظارت قرار دارد. اگر فعالیت عادی نداشته باشد و ربات گونه رفتار شود یا اینکه در لیست آیپی های مشکوک کلودفلر باشد، برای پر کردن فرمها از این ip اجبارا باید تیک سبز کپچا را وارد کند. خوبی دیگر این سرویس این است که قابلیت پر شدن خودکار برای آیپیهای سالم را دارد.
پیش از این در نوشته کپچا حرفه ای کلودفلر در وردپرس این سرویس را معرفی کردهام که پیشنهاد میکنم حتما از آن استفاده کنید. برای استفاده از آن نیز لزوما نیازی نیست سایت شما روی کلودفلر باشد.
9. افزایش امنیت صفحه ورود وردپرس با ایجاد رمز برای پوشه wp-admin
میتوانید به کمک ابزار directory privacy هاست سی پنل روی پوشه wp-admin رمز بگذارید. در این صورت وقتی آدرس مدیریت وردپرس را باز کنید ابتدا توسط سی پنل از شما درخواست رمز ورود برای مشاهده این صفحه خواسته میشود و تا زمانی که رمز و نام کاربری صحیحی وارد نکنید امکان مشاهده پیشخوان وردپرس (برای کاربران وارد شده) یا مشاهده فرم ورود به مدیریت وردپرس نمایش داده نمیشود.
برای استفاده از این ویژگی در هاست دایرکت ادمین هم کافی است وارد DirectAdmin شده و روی File Manager کلیک کرده و سپس به ترتیب مراحل زیر را دنبال کنید.
- به مسیر نصب وردپرس رفته و روی protect موجود جلوی پوشه wp-admin کلیک نمایید.
- در قسمت اول یک نام وارد کنید، در قسمت دوم نام کاربری را تایپ کنید.
- در دو قسمت بعد هم پسورد خود را قرار دهید.
- گزینه Protection Enabled را فعال کنید.
- در نهایت روی دکمه Save کلیک نمایید.
نکته: از آنجایی که ممکن است با قرار دادن این رمز در بخش فرانت سایت از کاربران برای مشاهده برخی فرمها و صفحات این رمز درخواست شود، باید امکان مشاهده فایل admin-ajax.php وردپرس که مربوط به درخواستهای آژاکسی است را مستثنی کنید.
<Files admin-ajax.php>
Order allow,deny
Allow from all
Satisfy any
<Files/>
برای این منظور کافی است یک فایل با نام htaccess. داخل پوشه wp-admin ایجاد کنید و کدهای فوق را درون آن قرار دهید. دقت کنید که این فایل جدا از فایل htaccess. پوشه public_html است و ارتباطی با آن ندارد.
10. غیرفعال کردن XML-RPC وردپرس
در وردپرس با استفاده از ویژگی XML-RPC میتوان از طریق ابزارهای شخص ثالث سایت را مدیریت کرد. به عنوان مثال اگر سایتتان فروشگاهی است و برنامه اندروید دارد یا اینکه از برنامه ویندوزی که توسط جتپک وردپرس اراسه شده استفاده کنید.
// Disable XML-RPC
add_filter('xmlrpc_enabled', '__return_false');
لزوما چون ما صرفا با مرورگر سایت خود را مدیریت میکنیم بهتر است که این ویژگی را به صورت کلی غیرفعال کنیم. کافی است قطعه کد بالا را در فایل functions.php قالب خود قرار دهید.
یا اینکه اگر از کلودفلر استفاده میکنید میتوانید مشابه تصویر بالا یک رول جدید از طریق منوی WAF ایجاد کرده و آن را روی حالت Block قرار دهید.
جمعبندی نهایی
بالا بردن امنیت وردپرس در صفحه ورود صرفا محدود به این موارد نیست. اما همین که نصف این راهکارها را در سایتتان پیادهسازی کنید خیالتان آسوده خواهد بود که از حملات بروت فورس نجات پیدا خواهید کرد. روشهای بسیار متنوع دیگری همچون تغییر آدرس ورود به وردپرس نیز وجود دارد؛ اما چون گاها باعث ایجاد مشکلاتی میشود توصیه میکنم که صرفا از همین روشهای ذکر شده استفاده کنید.
پیش از این نیز در مقالهای جامع به معرفی 18روش افزایش امنیت وردپرس پرداختهام که بد نیست آن را نیز مطالعه کنید. در آن مقاله نیز روشهایی برای بالا بردن امنیت سایر بخشهای وردپرس درج شده است که شامل معرفی کد و افزونه است.
سلام
Sucuri عالیه (:
مثه خودته😄❤ در بازه هروقت دوس داشتی بهمون سر بزن