چرا امنیت وردپرس بیشتر از هر چیزی به عادتهای شما بستگی دارد؟
بیشتر هکهای وردپرس نه از طریق باگهای پیچیده و نه از طریق حملات پیشرفته، بلکه از طریق سادهترین اشتباهها رخ میدهند: رمز عبور ضعیف، افزونههای قدیمی، و بیتوجهی به فایلهای حساس. اگر میخواهید امنیت وردپرس سایتتان را جدی بگیرید، اول باید بدانید مهاجم از کجا وارد میشود و بعد بهترتیب اولویت، آن مسیرها را ببندید.
در این مقاله، یک چکلیست عملی و اولویتبندیشده برای امنیت وردپرس آماده کردهام. هر بخش شامل دستورالعمل مشخص، مثال واقعی و هشدار درباره اشتباه رایج است. لازم نیست همه کارها را یکجا انجام دهید؛ از بخش اول شروع کنید و بهترتیب پیش بروید.
اولویت اول: بستن مسیرهای ورود با رمز عبور و احراز هویت
بیش از ۸۰ درصد حملات موفق به وردپرس، از طریق صفحه ورود (wp-login.php) انجام میشود. مهاجم با حملات brute-force (حدس رمز) یا با استفاده از رمزهای لو رفته از سایتهای دیگر، تلاش میکند وارد پیشخوان شود. پس اولین قدم در امنیت وردپرس، سختکردن همین نقطه است.
رمز عبور قوی و اجباری برای همه کاربران
رمز عبور مدیر سایت نباید کمتر از ۱۴ کاراکتر باشد و ترکیبی از حروف بزرگ، کوچک، عدد و نماد داشته باشد. برای تولید رمز امن میتوانید از ابزارهایی مثل LastPass یا Bitwarden استفاده کنید. همچنین در فایل wp-config.php میتوانید رمز عبور را بهصورت پیشفرض قوی کنید:
define('WP_AUTO_UPDATE_CORE', true);
// غیرفعال کردن ویرایش فایلها از پیشخوان
define('DISALLOW_FILE_EDIT', true);
نکته مهم: اگر سایت شما چند نویسنده دارد، حتماً نقشها را بررسی کنید. به کاربرانی که فقط مطلب منتشر میکنند، نقش «نویسنده» بدهید نه «مدیر». هر نقش بالاتر از نیاز، یک ریسک اضافه است.
محدود کردن تلاشهای ورود (Login Lockdown)
افزونهای مثل Limit Login Attempts Reloaded را نصب کنید تا بعد از ۳ تا ۵ تلاش ناموفق، آدرس IP به مدت ۱۵ دقیقه قفل شود. این کار حملات brute-force را عملاً بیاثر میکند. تنظیم پیشنهادی:
- حداکثر تلاش مجاز: ۳ بار
- مدت قفل: ۱۵ دقیقه
- قفل کردن بر اساس IP و User-Agent
اشتباه رایج: خیلی از مدیران فقط افزونه را نصب میکنند اما تنظیمات پیشفرض را رها میکنند. پیشفرض این افزونهها معمولاً ۲۰ تلاش مجاز است که برای مهاجم کافی است. حتماً عدد را پایین بیاورید.
احراز هویت دومرحلهای (2FA) برای مدیران
اگر فقط یک کار برای امنیت وردپرس انجام میدهید، همین را انجام دهید: فعالکردن 2FA برای همه حسابهای مدیر. افزونههایی مثل WP 2FA یا Google Authenticator را نصب کنید. با این کار، حتی اگر رمز عبور لو برود، مهاجم بدون کد یکبارمصرف نمیتواند وارد شود.
اولویت دوم: بهروزرسانی منظم هسته، افزونهها و قالب
بیشتر هکهای موفق از طریق آسیبپذیریهای شناختهشده در افزونههای قدیمی رخ میدهد. مهاجم با اسکن سایتها، نسخههای قدیمی را پیدا میکند و از باگهای عمومی استفاده میکند. بهروزرسانی، سادهترین و مؤثرترین اقدام دفاعی است.
فعالکردن بهروزرسانی خودکار
در فایل wp-config.php این خط را اضافه کنید تا هسته وردپرس بهصورت خودکار بهروزرسانی شود:
define('WP_AUTO_UPDATE_CORE', true);
برای افزونهها و قالبها، از پیشخوان وردپرس به بخش «بهروزرسانیها» بروید و گزینه «بهروزرسانی خودکار» را فعال کنید. اگر نگران سازگاری هستید، حداقل یک یادآور هفتگی برای بررسی دستی تنظیم کنید.
حذف افزونهها و قالبهای غیرفعال
افزونهای که غیرفعال است اما حذف نشده، همچنان میتواند آسیبپذیر باشد. مهاجم میتواند از فایلهای آن استفاده کند. قانون ساده: اگر از افزونهای استفاده نمیکنید، آن را حذف کنید، نه فقط غیرفعال.
اشتباه رایج: خیلی از مدیران افزونههای قدیمی را که سالها بهروزرسانی نشدهاند، نصب نگه میدارند. اگر افزونهای بیش از ۶ ماه آپدیت نشده، احتمال رها شدن آن بالاست و باید جایگزین پیدا کنید.
اولویت سوم: محافظت از فایلها و پوشههای حساس
فایل wp-config.php حاوی اطلاعات اتصال به دیتابیس است و اگر لو برود، کل سایت در خطر است. همچنین پوشه wp-content/uploads محل آپلود فایلهای کاربران است و باید از اجرای اسکریپت در آن جلوگیری کنید.
قفلکردن wp-config.php با htaccess
در فایل .htaccess ریشه سایت، این کد را اضافه کنید تا دسترسی به فایل تنظیمات مسدود شود:
<Files wp-config.php>
Order Allow,Deny
Deny from all
</Files>
این کار باعث میشود هر درخواست مستقیم به wp-config.php با خطای 403 مواجه شود.
جلوگیری از اجرای PHP در پوشه آپلود
در پوشه wp-content/uploads یک فایل .htaccess بسازید و این کد را در آن قرار دهید:
<FilesMatch "\.(php|php5|phtml)$">
Deny from all
</FilesMatch>
این کار جلوی اجرای فایلهای مخربی که از طریق فرم آپلود وارد شدهاند را میگیرد.
غیرفعالکردن نمایش خطاها در محیط تولید
در فایل wp-config.php این تنظیمات را اضافه کنید تا خطاهای PHP به کاربر نمایش داده نشود:
ini_set('display_errors', 0);
ini_set('log_errors', 1);
define('WP_DEBUG', false);
نمایش خطاها به مهاجم اطلاعات ارزشمندی درباره ساختار سایت میدهد.
اولویت چهارم: بکاپگیری منظم و تست بازیابی
هیچ امنیتی ۱۰۰٪ نیست. اگر سایت هک شد، تنها راه نجات، بکاپ سالم است. بکاپ باید شامل فایلها و دیتابیس باشد و در مکانی خارج از سرور اصلی نگهداری شود.
برنامه بکاپ پیشنهادی
- بکاپ روزانه از دیتابیس (حجم کم، سریع)
- بکاپ هفتگی از کل فایلها
- نگهداری ۳۰ نسخه اخیر
- انتقال خودکار به فضای ابری مثل S3 یا Google Drive
افزونههایی مثل UpdraftPlus یا BackWPup این کار را خودکار میکنند. فقط مطمئن شوید که مقصد بکاپ روی همان سرور نباشد؛ اگر سرور هک شود، بکاپ هم از بین میرود.
تست بازیابی ماهانه
بکاپی که هرگز تست نشده باشد، ارزشی ندارد. هر ماه یک بار، بکاپ را در یک محیط آزمایشی (مثل localhost یا زیردامنه) بازیابی کنید و مطمئن شوید سایت سالم بالا میآید. این کار ۳۰ دقیقه وقت میگیرد اما در روز حادثه، ساعتها نجاتتان میدهد.
اولویت پنجم: فایروال و محافظت در سطح شبکه
بعد از بستن مسیرهای مستقیم، نوبت به محافظت در سطح شبکه میرسد. فایروال برنامه وب (WAF) میتواند ترافیک مخرب را قبل از رسیدن به وردپرس فیلتر کند.
انتخاب راهکار فایروال
دو گزینه دارید: افزونه فایروال مثل Wordfence یا Cloudflare بهعنوان لایه CDN و فایروال. اگر سایت شما روی سرور اشتراکی است، افزونه گزینه بهتری است. اگر سرور اختصاصی یا VPS دارید، Cloudflare را پیشنهاد میکنم چون بار پردازشی را از سرور برمیدارد.
تنظیمات پیشنهادی برای Cloudflare:
- فعالکردن «Under Attack Mode» در زمان حمله
- فعالکردن Bot Fight Mode
- تنظیم قوانین Rate Limiting برای صفحه ورود
اگر سایت شما روی زیرساخت ابری میزبانی میشود، میتوانید از سرویسهای امنیتی ارائهشده توسط شرکت میزبان مثل ServerNet استفاده کنید که معمولاً شامل فایروال و محافظت DDoS است.
اسکن منظم بدافزار
افزونهای مثل Wordfence را نصب کنید و اسکن هفتگی را فعال کنید. این افزونه فایلهای هسته را با نسخه اصلی مقایسه میکند و هر تغییر غیرمجاز را گزارش میدهد. اگر تغییری در فایلهای هسته دیدید، یعنی سایت آلوده شده است.
اولویت ششم: امنیت لایه انتقال و DNS
SSL و DNS دو لایهای هستند که اغلب نادیده گرفته میشوند اما نقش مهمی در امنیت وردپرس دارند.
فعالکردن SSL و انتقال اجباری به HTTPS
گواهی SSL رایگان از Let's Encrypt دریافت کنید و در فایل .htaccess این کد را برای انتقال اجباری اضافه کنید:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
بعد از فعالکردن SSL، حتماً در تنظیمات وردپرس آدرس سایت را با https:// بهروزرسانی کنید. در غیر این صورت، حلقه بازگشت (redirect loop) ایجاد میشود.
محافظت از DNS
اگر از DNS پیشفرض میزبان استفاده میکنید، مطمئن شوید حساب شما رمز عبور قوی دارد و 2FA فعال است. تصاحب DNS یکی از خطرناکترین حملات است چون مهاجم میتواند ترافیک سایت را به سرور خودش هدایت کند.
جمعبندی: نقشه راه امنیت وردپرس
امنیت وردپرس یک فرایند است، نه یک مقصد. با این چکلیست، بهترتیب اولویت پیش بروید:
- رمزهای قوی و 2FA برای همه مدیران
- محدودکردن تلاشهای ورود
- بهروزرسانی خودکار هسته، افزونهها و قالب
- قفلکردن فایلهای حساس و جلوگیری از اجرای PHP در آپلود
- بکاپ روزانه و تست بازیابی ماهانه
- فایروال و اسکن منظم بدافزار
- SSL اجباری و محافظت از DNS
اگر همین امروز فقط سه مورد اول را انجام دهید، ۹۰ درصد مسیرهای رایج نفوذ را بستهاید. بقیه را در هفتههای آینده تکمیل کنید. یادتان باشد: امنیت وردپرس کار یک روز نیست، اما با همین چکلیست، میتوانید ریسک هک شدن را بهشدت کاهش دهید.
دیدگاهها ۰
هنوز دیدگاهی ثبت نشده؛ اولین نفر باشید!