نصب وردپرس با "نصب ۵ دقیقهای" معروفش بسیار ساده است، اما رها کردن آن با تنظیمات پیشفرض دقیقاً مثل این است که درب خانه خود را قفل کنید اما کلید را زیر پادری بگذارید. بسیاری از حملات به سایتهای وردپرسی هدفمند نیستند؛ بلکه رباتهایی هستند که به صورت خودکار به دنبال آسیبپذیریهای پیشفرض میگردند. در این مقاله ۶ اقدام امنیتی مهم را بررسی میکنیم که باید قبل از انتشار محتوا انجام دهید.
۱. بستن فایل XML-RPC (دفاع در برابر DDoS)
فایل xmlrpc.php که در ریشه هاست شما قرار دارد، در گذشته برای ارتباط اپلیکیشنهای موبایل با وردپرس استفاده میشد. امروزه با وجود REST API، این فایل اغلب بیاستفاده است و تنها به دروازهای محبوب برای حملات Brute Force تبدیل شده است.
روش انجام:
سادهترین راه، ویرایش فایل .htaccess در ریشه هاست است. کد زیر را به ابتدای این فایل اضافه کنید:
# Block WordPress xmlrpc.php requests
<Files xmlrpc.php>
order deny,allow
deny from all
</Files>
۲. جلوگیری از افشای نام کاربری (User Enumeration)
وردپرس به صورت پیشفرض از طریق API لیست نویسندگان سایت را منتشر میکند. هکرها با یک درخواست ساده به آدرس /wp-json/wp/v2/users میتوانند نام کاربری مدیر اصلی را پیدا کنند. وقتی نام کاربری لو برود، ۵۰٪ مسیر هک طی شده است!
روش انجام:
برای بستن این حفره، قطعه کد زیر را به انتهای فایل functions.php قالب خود اضافه کنید:
// Block User Enumeration via REST API
add_filter( 'rest_endpoints', function( $endpoints ) {
if ( isset( $endpoints['/wp/v2/users'] ) ) {
unset( $endpoints['/wp/v2/users'] );
}
if ( isset( $endpoints['/wp/v2/users/(?P<id>[\d]+)'] ) ) {
unset( $endpoints['/wp/v2/users/(?P<id>[\d]+)'] );
}
return $endpoints;
});
۳. غیرفعال کردن ویرایشگر فایل در پیشخوان
اگر هکری موفق شود به پنل ادمین شما نفوذ کند، اولین کارش تزریق کدهای مخرب یا Backdoor از طریق منوی "نمایش > ویرایشگر پرونده پوسته" است. شما باید این دسترسی را از ریشه قطع کنید تا حتی مدیران سایت هم نتوانند فایلها را از پنل ویرایش کنند.
روش انجام:
فایل wp-config.php را در ریشه هاست باز کنید و کد زیر را قبل از خط That's all, stop editing قرار دهید:
define( 'DISALLOW_FILE_EDIT', true );
۴. تغییر آدرس ورود به مدیریت (مهمترین گام)
همه دنیا میدانند که دروازه ورود به سایت شما your-site.com/wp-admin است. تغییر این آدرس، هزاران حمله رباتیک روزانه را خنثی میکند و بار سرور را کاهش میدهد.
نکته حرفهای: تغییر آدرس بدون افزونه
اغلب مدیران سایت برای این کار افزونه نصب میکنند، اما اگر میخواهید سایتتان سبک بماند، ما یک روش کدنویسی ساده و امن را آموزش دادهایم.
آموزش تغییر آدرس ورود وردپرس به صورت دستی (بدون افزونه) را اینجا بخوانید
۵. جلوگیری از مشاهده لیست فایلها (Directory Browsing)
اگر در پوشهای از هاست شما فایل index (مثل index.php یا index.html) وجود نداشته باشد، سرور به صورت پیشفرض لیست تمام فایلهای آن پوشه را به کاربر نشان میدهد. این موضوع میتواند ساختار قالب یا افزونههای شما را برای هکرها فاش کند.
روش انجام:
کد زیر را به انتهای فایل .htaccess خود اضافه کنید:
Options -Indexes
۶. محدود کردن تعداد دفعات تلاش برای ورود
وردپرس به صورت پیشفرض اجازه میدهد کاربران بینهایت بار رمز عبور را اشتباه وارد کنند. این یعنی یک ربات میتواند میلیونها رمز را تست کند تا بالاخره وارد شود.
روش انجام:
برخلاف موارد قبلی، برای این مورد پیشنهاد میکنیم حتماً از یک افزونه استفاده کنید. افزونه سبک Limit Login Attempts Reloaded گزینهای عالی است. تنظیم کنید که مثلاً بعد از ۳ بار اشتباه، IP کاربر برای ۲۴ ساعت مسدود شود.
جمعبندی امنیتی
انجام این ۶ مرحله کمتر از ۱۰ دقیقه زمان میبرد، اما سایت شما را در برابر ۹۰٪ حملات رباتیک و غیرهدفمند بیمه میکند. به یاد داشته باشید که امنیت یک فرآیند مداوم است، اما این اقدامات پایه و اساس یک سایت مستحکم هستند.