۵ مورد ضروری: ابتدا اینها را انجام دهید
- هسته WordPress، قالبها و افزونهها را بهروز نگه دارید. افزونههای آسیبپذیر بردار حمله شماره ۱ هستند. بهروزرسانیهای خودکار نسخههای جزئی را فعال کنید (WordPress 5.6+ این کار را بهطور پیشفرض انجام میدهد). برای نسخههای اصلی، ظرف ۷ روز پس از انتشار بهروزرسانی کنید. برای افزونهها، بهروزرسانی خودکار موارد مورد اعتماد را فعال کنید؛ یادداشتهای نسخه افزونههای حیاتی را بهصورت دستی بررسی کنید.
- برای هر حساب WordPress از رمزهای عبور قوی و یکتا استفاده کنید. بهویژه حسابهای مدیر. از یک مدیر رمز عبور (1Password، Bitwarden) استفاده کنید. نام کاربری «admin» را غیرفعال کنید: یک مدیر جدید بسازید و قدیمی را حذف کنید.
- احراز هویت دومرحلهای را فعال کنید. از Wordfence Login Security (رایگان) یا مولد QR 2FA ما با هر اپلیکیشن TOTP استفاده کنید. 2FA بیش از ۹۹٪ حملات پُرکردن اعتبارنامه را شکست میدهد.
- یک افزونه امنیتی مورد اعتماد نصب کنید. Wordfence (نسخه رایگان برای بیشتر سایتها کافی است) یا Solid Security. چندتا را روی هم نگذارید: با هم تعارض پیدا میکنند. افزونه محدودیت تلاشهای ورود، پایش یکپارچگی فایل و اسکن بدافزار را مدیریت میکند.
- پشتیبانگیری روزانه خارج از سایت. UpdraftPlus ← Dropbox/Google Drive. پشتیبان را پیش از نیاز به آن بگیرید. فرایند بازیابی را دستکم یکبار آزمایش کنید.
۱۰ مورد بعدی: اقدامات اضافی پرتأثیر
- HTTPS را اجباری کنید. Let's Encrypt روی هر هاستینگ مدرنی رایگان است. HTTP را در سطح سرور به HTTPS تغییر مسیر دهید.
- پیشوند جدولهای پایگاهداده را تغییر دهید. WordPress بهطور پیشفرض از wp_ استفاده میکند؛ آن را در حین نصب به چیزی سفارشی تغییر دهید. حملات را متوقف نمیکند، اما برخی الگوهای حمله را دشوارتر میسازد.
- اگر از XML-RPC استفاده نمیکنید آن را غیرفعال کنید. XML-RPC یک بردار رایج تقویت جستوجوی فراگیر است. اگر از اپلیکیشن موبایل Jetpack یا انتشار از راه دور استفاده نمیکنید، آن را از طریق .htaccess یا یک افزونه غیرفعال کنید.
- تلاشهای ورود را محدود کنید. Wordfence این کار را بهطور خودکار انجام میدهد. از پُرکردن اعتبارنامه با جستوجوی فراگیر جلوگیری میکند.
- کلیدها/saltهای احراز هویت WordPress را بچرخانید. از مولد Salt مربوط به WordPress ما استفاده کنید. آنها را پس از هرگونه گمان به نفوذ، پس از حذف یک مدیر در معرض نفوذ و بهصورت روتین هر ۶ تا ۱۲ ماه بچرخانید.
- برای انتقال فایلها از SSH یا SFTP استفاده کنید، هرگز FTP ساده. FTP اعتبارنامهها را بهصورت متن ساده منتقل میکند.
- در صورت امکان دسترسی به wp-admin را بر اساس IP محدود کنید. اگر تیم شما از IPهای ثابت استفاده میکند (دفتر، VPN)، wp-admin را فقط به آن IPها محدود کنید. از طریق .htaccess یا پیکربندی Nginx.
- ویرایش فایل را در wp-config.php غیرفعال کنید. اضافه کنید:
define('DISALLOW_FILE_EDIT', true);از ویرایش قالبها/افزونهها توسط مهاجمان از طریق پنل در صورت نفوذ به یک حساب جلوگیری میکند. - شماره نسخه WordPress را پنهان کنید. تگ متای generator را حذف کنید. حملات را متوقف نمیکند، اما انگشتنگاری (fingerprinting) را کاهش میدهد.
- مجوزهای فایل را قفل کنید. فایلها 644، دایرکتوریها 755، wp-config.php 600. بیشتر هاستینگهای مدیریتشده این کار را بهطور خودکار انجام میدهند؛ روی یک VPS، آن را بهصراحت پیکربندی کنید.
تکمیلی: خوب اما نه حیاتی
- URL ورود سفارشی (مثلاً WPS Hide Login). بیشتر سروصدای ترافیک رباتها را کاهش میدهد؛ امنیت واقعی نیست.
- CAPTCHA در فرمهای ورود. اصطکاکی اندک برای حملات خودکار.
- اجرای PHP را در /uploads/ غیرفعال کنید. از اجرای شلهای PHP بارگذاریشده جلوگیری میکند.
- از WAF مربوط به Cloudflare (سطح رایگان) استفاده کنید. ترافیک مخرب را پیش از رسیدن به سرور شما فیلتر میکند.
- یک هشدار ایمیلی مدیر برای بهروزرسانیهای افزونه/هسته پیکربندی کنید.
- از پیشبارگذاری HSTS برای اجبار HTTPS در سطح مرورگر استفاده کنید.
- شمارش کاربران را از طریق REST API غیرفعال کنید (Solid Security یا Wordfence آن را مدیریت میکنند).
- از سرآیندهای سیاست امنیت محتوا (CSP) استفاده کنید.
- مرور دایرکتوری را غیرفعال کنید (بیشتر هاستینگها این کار را بهطور پیشفرض انجام میدهند).
- زمان فعالیت + یکپارچگی را با یک سرویس خارجی پایش کنید (سطح رایگان UptimeRobot + Sucuri SiteCheck هفتگی).
- نقشهای کاربر را به حداقل امتیاز محدود کنید. بیشتر مشارکتکنندگان به دسترسی سطح ویرایشگر نیاز ندارند.
- رمزگذاری پشتیبانهای پایگاهداده (UpdraftPlus Premium آن را ارائه میدهد).
- میزبانی تصاویر خارج از دامنه از طریق CDN (سطح حمله را کاهش میدهد).
- بازبینی دورهای سیاهه ممیزی امنیتی.
- تست نفوذ سالانه اگر سایت درآمد قابل توجهی ایجاد میکند.
افسانههای امنیت WordPress: نادیده بگیرید
چندین اقدام «امنیتی» بسیار توصیهشده محافظت واقعی حداقلی ارائه میدهند: (۱) «پنهان کردن نسخه WordPress»: دانستن نسخه شما اندکی به حملات هدفمند کمک میکند، اما راهحل واقعی بهروزرسانی است، نه پنهان کردن. (۲) «انتقال wp-config.php به بالای public_html»: اساساً صفر بهره امنیتی میآورد؛ فایل از پیش با .htaccess محافظت میشود. (۳) «غیرفعال کردن REST API»: بسیاری از افزونهها را میشکند و اندکی را مسدود میکند. بهجای آن endpointهای مشخصی را محدود کنید. (۴) «روی هم گذاشتن چند افزونه امنیتی»: با هم تعارض و همپوشانی پیدا میکنند. یک افزونه مورد اعتماد (Wordfence یا Solid Security) آنچه را سهتا انجام میدهند پوشش میدهد. (۵) «تغییر نام wp-login.php»: امنیت از طریق مبهمسازی؛ مهاجمان URL جدید را بهراحتی از طریق تغییر مسیرها پیدا میکنند.
اگر هک شدید: فهرست بازیابی
- دستپاچه نشوید؛ بلافاصله چیزی را حذف نکنید. ابتدا یک تکعکس از وضعیت فعلی برای تحلیل پزشکیقانونی بگیرید.
- سایت را آفلاین کنید (افزونه حالت نگهداری یا تغییر مسیر .htaccess به یک صفحه ایستا).
- همه رمزهای عبور مدیر را تغییر دهید و saltهای WordPress را بچرخانید.
- حسابهای کاربری را ممیزی کنید: حسابهای مدیر ناشناخته را بلافاصله حذف کنید.
- با Wordfence Premium یا Sucuri به دنبال بدافزار اسکن کنید.
- فایلهای فعلی را با یک دانلود تمیز WordPress مقایسه کنید: تفاوت (diff) فایلهای هسته تغییریافته را آشکار میکند.
- جدول wp_options پایگاهداده را به دنبال ورودیهای غیرمنتظره بررسی کنید (اغلب شامل JS تزریقشده است).
- از جدیدترین پشتیبان تمیز بازیابی کنید (به همین دلیل پشتیبانهای روزانه اهمیت دارند).
- پس از بازیابی، هر افزونه را ممیزی کنید: موارد استفادهنشده را حذف کنید، همه را بهروز کنید و هر یک با CVEهای عمومی را جایگزین کنید.
- هسته WordPress را به آخرین نسخه بهروز کنید.
- سایت را دوباره فعال کنید و به مدت ۳۰ روز مراقب آلودگی مجدد باشید.