چکلیست کامل و جامع امنیت سایت وردپرسی
مرجع نهایی برای محافظت از سایت شما
امنیت سایت وردپرسی یکی از مهمترین مسائل برای هر وبمستر و صاحب کسبوکار آنلاین است. هر روز هزاران سایت وردپرسی هدف حملات هکری، بدافزارها و تلاشهای نفوذ قرار میگیرند، و حتی کوچکترین غفلت میتواند منجر به از دست رفتن اطلاعات، کاهش رتبه گوگل یا اختلال در عملکرد سایت شود.
در این مقاله، چکلیست امنیتی وردپرس به صورت مرحله به مرحله و جامع ارائه شده است که شامل مدیریت کاربران، امنیت فایلها و سرور، محافظت از پایگاه داده، مانیتورینگ، فایروال و بکاپ پیشرفته میشود. این چکلیست هم برای مبتدیان و هم برای حرفهایها طراحی شده و راهنمایی عملی همراه با ابزارها و افزونههای پیشنهادی ارائه میدهد.
با دنبال کردن این چکلیست، میتوانید امنیت سایت وردپرسی خود را به سطح حرفهای برسانید و از خطر هک، حملات brute-force و بدافزارها جلوگیری کنید.
مرحله ۱: پیشنیازها و آمادهسازی اولیه
بکاپ فایلها و دیتابیس قبل از هرگونه تغییر
افزونه پیشنهادی:
روش دستی:
- بکاپ پوشه wp-content
- Export دیتابیس از phpMyAdmin
همیشه آخرین نسخه پایدار نصب شود.
دستور manual برای بررسی نسخه: از بخش پیشخوان → “Dashboard” → “Updates”
نسخه توصیهشده حداقل 8.1 یا بالاتر
بررسی اینکه سایت با HTTPS بارگذاری میشود.
نصب و فعالسازی SSL (Let’s Encrypt رایگان یا گواهی تجاری)
بررسی mixed-content: تمام URLهای داخلی با HTTPS باشند.
مرحله ۲: افزونههای امنیتی وردپرس
افزونه All In One WP Security & Firewall
افزونه امنیت و فایروال وردپرس پرو | پلاگین All In One WP Security
کاربرد اصلی:
- پیادهسازی امنیت لایهای (user, login, database, file system)
- فایروال ساده و مانیتورینگ ورود
نصب و پیکربندی:
- Plugins → Add New → All In One WP Security & Firewall → Install & Activate
- WP Security → Dashboard → Security Strength Meter → Recommended settings apply
- Firewall → Basic + Intermediate + Advanced → مرحله به مرحله فعال شود
- User Account → Force Strong Passwords و Lockout بعد از تلاشهای ناموفق
نکات فنی:
- تغییر پیشفرض login URL
- بررسی دسترسی پوشهها و فایلها از بخش File System Security
افزونه Wordfence Security – فایروال و اسکن بدافزار
افزونه وردفنس | پلاگین امنیت Wordfence Security Pro
کاربرد اصلی:
- فایروال اپلیکیشن وب (WAF)
- اسکن بدافزار و آسیبپذیریها
- مانیتورینگ فعالیت کاربران و لاگها
نصب و پیکربندی:
- از مخزن وردپرس نصب شود: Plugins → Add New → Wordfence Security → Install & Activate
- گزینه “Enable Firewall” را فعال کنید
- تنظیمات اسکن خودکار: Scan Options → “Automatically repair/delete infected files”
- Alerts → ایمیل مدیر سایت برای هشدارهای امنیتی فعال شود
نکات فنی:
- Conflict با بعضی CDNها ممکن است رخ دهد؛ تنظیمات IP یا caching را بررسی کنید
- Resource Usage: سایتهای بزرگ ممکن است بار روی سرور را افزایش دهد
افزونه iThemes Security – امنیت حساب کاربری و فایلها
افزونه آیتمز سکیوریتی (solid security) | پلاگین امنیتی iThemes Security Pro
کاربرد اصلی:
- جلوگیری از brute-force login
- محدود کردن دسترسی فایلها و ویرایش داخلی
- اعمال 2FA و strong password policy
نصب و پیکربندی:
- Plugins → Add New → iThemes Security → Install & Activate
- Dashboard → Security Check → Apply recommended settings
- Two-Factor Authentication → برای تمامی مدیران فعال شود
- File Change Detection → برای مانیتور تغییرات فایلها فعال شود
نکات فنی:
- تنظیمات Lockout برای IP های مشکوک
- بررسی Cron job برای اجرای گزارشها و اسکنها
افزونه UpdraftPlus – بکاپ و بازیابی
افزونه آپ درفت پلاس | افزونه بکاپ و انتقال سایت UpdraftPlus
کاربرد اصلی:
- بکاپ خودکار و دستی از فایلها و دیتابیس
- بازیابی آسان بدون نیاز به دسترسی مستقیم به سرور
نصب و پیکربندی:
- Plugins → Add New → UpdraftPlus → Install & Activate
- Settings → Choose Backup Schedule: فایلها و دیتابیس روزانه یا هفتگی
- Remote Storage → Google Drive / Dropbox / S3
- تست بکاپ: Restore test → اطمینان از سلامت بکاپ
نکات فنی:
- رمزگذاری بکاپها برای امنیت بیشتر
- جلوگیری از overloading سرور هنگام بکاپ خودکار
مرحله ۳: مدیریت کاربران و دسترسیها
حذف یا غیرفعال کردن کاربران بلااستفاده
- وردپرس → Users → All Users
- بررسی کاربران بدون فعالیت یا ایمیل مشکوک
- حذف یا تغییر نقش آنها به Subscriber حداقل دسترسی
نکات فنی:
- همیشه قبل از حذف، مطمئن شوید محتوا و نوشتهها reassigned شده باشد
- کاربران بلااستفاده ممکن است در آینده هدف حملات باشند
تعریف نقشهای کاربری دقیق و محدود
نقشهای پیشفرض وردپرس:
- Administrator: کامل
- Editor: مدیریت محتوا
- Author: انتشار نوشتههای خود
- Contributor: نوشتن بدون انتشار
- Subscriber: فقط خواندن و مشاهده
تنظیمات به صورت دستی :
- از User → Edit → Role → نقش مناسب انتخاب شود
افزونه پیشنهادی:
افزونه مدیریت نقش و دسترسی کاربران | پلاگین User Role Editor Pro
- تغییر دسترسیهای هر نقش
- ایجاد نقش سفارشی برای دسترسی دقیق
- محدود کردن capabilityهایی مثل edit_theme_options, install_plugins
- نقشها دقیق و محدود باشند، از Administrator فقط برای مدیران واقعی استفاده شود
فعال کردن Two-Factor Authentication (2FA)
افزایش امنیت ورود با 2FA
افزونه پیشنهادی:
- افزونه وردفنس | پلاگین امنیت Wordfence Security Pro
- iThemes Security یا Wordfence → Two-Factor Authentication → فعال کردن برای مدیران
- افزونه امنیت و فایروال وردپرس پرو | پلاگین All In One WP Security
نکات فنی:
- توصیه: فقط OTP روی موبایل یا اپلیکیشن Authenticator معتبر باشد
- همه کاربران با دسترسی زیاد باید 2FA فعال کنند
- Backup codes ذخیره شود
تغییر پیشفرض نام کاربری “admin”
نام کاربری پیشفرض admin یک هدف رایج حملات brute-force است
- ایجاد کاربر جدید با نقش Administrator سپس Logout و حذف admin
- یا تغییر نام کاربری از طریق دیتابیس
- یا استفاده از افزونه های امنیتی
تغییر login URL
تغییر login URL به مسیر دلخواه (مثلاً /mylogin) میتواند امنیت را افزایش دهد.
محدود کردن تعداد تلاشهای ورود
جلوگیری از حملات brute-force
دستی:
- میتوان با تنظیمات سرور (htaccess یا nginx) محدودیت ایجاد کرد
افزونه پیشنهادی:
نکات فنی:
- تعداد تلاشها: 5
- بلاک کردن IP برای حداقل 15 دقیقه
- White List آیپیهای امن
- تعداد تلاشهای ورود محدود و لاگها مانیتور شوند
بررسی و مدیریت نشستهای فعال
Logout کاربران بلااستفاده
افزونه پیشنهادی:
افزونه آیتمز سکیوریتی (solid security) | پلاگین امنیتی iThemes Security Pro
- WP Activity Log یا Logged In Users → مدیریت نشستها
نکات فنی:
- بررسی sessionهای مشکوک: نام کاربری، IP، زمان ورود
- اطمینان از logout خودکار پس از زمان مشخص
مرحله ۴: امنیت فایلها و سرور
محافظت از فایل wp-config.php
- فایل wp-config.php در ریشه وردپرس قرار دارد
- محدود کردن دسترسی با htaccess
برای Apache
<files wp-config.php> order allow,deny deny from all </files>
برای Nginx
location ~* wp-config.php {
deny all;
}
نکات فنی:
- شامل اطلاعات دیتابیس و کلیدهای امنیتی است، حفاظت آن ضروری است
- مطمئن شوید که فایل در مسیر ریشه با دسترسی 600 یا 644 باشد
محافظت از فایل .htaccess
جلوگیری از لیست شدن دایرکتوریها و دسترسی غیرمجاز
#Apache # جلوگیری از لیست شدن دایرکتوریها Options -Indexes
# محدود کردن دسترسی به فایلهای حساس
<FilesMatch “.(htaccess|htpasswd|ini|log|sh|sql)$”>
Order Allow,Deny
Deny from all
</FilesMatch>
نکات فنی:
- بررسی conflict با افزونهها
- تغییرات htaccess بعد از هر آپدیت هسته وردپرس بررسی شود
تنظیم مجوزهای پوشهها و فایلها (File Permissions)
دستی:
- پوشهها (directories): 755
- فایلها (files): 644
- wp-config.php: 600 یا 644
دستور برای لینوکس:
find /path/to/wordpress/ -type d -exec chmod 755 {} ;
find /path/to/wordpress/ -type f -exec chmod 644 {} ;
chmod 600 /path/to/wordpress/wp-config.php
افزونه پیشنهادی:
نکات فنی:
- از 777 شدیداً خودداری شود
- بررسی مالکیت فایلها (chown) مطابق با کاربر وب سرور (www-data یا apache)
جلوگیری از دسترسی به پوشههای حساس
پوشههای: /wp-admin/, /wp-includes/, /wp-content/uploads/
تنظیمات دستی:
ایجاد فایل .htaccess در /uploads/ با محتوای:
# جلوگیری از اجرای فایلهای PHP در uploads <Files *.php> deny from all </Files>
نکات فنی:
- بررسی اینکه uploads برای تصاویر، pdf، و فایلهای غیر اجرایی باز باشد
- جلوگیری از upload فایلهای مخرب
- جلوگیری از اجرای PHP در uploads و تغییرات داخلی وردپرس امنیت را بسیار افزایش میدهد
غیر فعال کردن ویرایش فایلها از داخل وردپرس
به صورت دستی:
- در wp-config.php اضافه شود
define('DISALLOW_FILE_EDIT', true);
نکات فنی:
- جلوگیری از تغییر فایلها توسط مدیران یا هکرها بعد از ورود غیرمجاز
محدود کردن دسترسی به آیپی و سرور
تذکر : این تنظیم بسیار حساس می باشد. در صورتی که دانش فنی دارید انجام شود.
Restrict wp-admin by IP در htaccess یا Nginx
#Apache
<Files wp-login.php>
Order Deny,Allow
Deny from all
Allow from 123.123.123.123
</Files>
نکات فنی:
- IP استاتیک یا محدوده مطمئن
- دسترسی برای تیم پشتیبانی از VPN یا IP whitelist
مرحله ۵: امنیت پایگاه داده و هاردنینگ وردپرس
تغییر پیشفرض پیشوند جداول وردپرس
پیشفرض: wp_ ← هدف رایج حملات SQL Injection
- قبل از تغییر، بکاپ کامل دیتابیس بگیرید
- استفاده از افزونه All In One WP Security
- یا با دستورات SQL:
RENAME TABLE wp_posts TO newprefix_posts;
نکات فنی:
- تمامی جداول و ارتباطات باید هماهنگ شوند
- بررسی و بروزرسانی wp-config.php:
$table_prefix = 'newprefix_';
مدیریت دسترسی کاربران دیتابیس
بررسی کاربران دیتابیس با دستور SQL:
SELECT User, Host FROM mysql.user;
- محدود کردن دسترسیها به DB وردپرس فقط به کاربر اصلی (SELECT, INSERT, UPDATE, DELETE)
- حذف یا غیرفعال کردن کاربران بلااستفاده
نکات فنی:
- هر کاربر وردپرس نباید دسترسی root داشته باشد
- استفاده از پسورد قوی برای کاربر دیتابیس ضروری است
بکاپ دیتابیس
افزونهها:
- UpdraftPlus – بکاپ خودکار دیتابیس
- WP-DB-Backup – بکاپ دستی دیتابیس
تنظیمات دستی:
- دستور لینوکس
mysqldump -u username -p database_name > backup.sql
نکات فنی:
- بکاپها در فضای خارج از سرور (S3, Google Drive) ذخیره شود
- تست بکاپ: restore کردن روی staging یا local
هاردنینگ (Hardening) وردپرس (مرحله پیشرفته)
در فایل wp-config.php
define('WP_DEBUG', false); // جلوگیری از نمایش خطاها به هکر
define('DISALLOW_FILE_EDIT', true); // غیر فعال کردن ویرایش فایلها
define('AUTOSAVE_INTERVAL', 300); // افزایش فاصله autosave
define('WP_POST_REVISIONS', 5); // محدود کردن نسخههای نوشتهها
در فایل htaccess
غیر فعال کردن دسترسی مستقیم به فایلهای xmlrpc.php و readme.html
<Files xmlrpc.php> Order Deny,Allow Deny from all </Files> <Files readme.html> Order Deny,Allow Deny from all </Files>
نکات فنی:
- غیر فعال کردن XML-RPC اگر نیاز نیست (هدف حملات brute-force و DDoS)
- تنظیم limit برای Post Size و Upload Size برای جلوگیری از آپلود فایلهای بزرگ مخرب
بررسی و مانیتورینگ دیتابیس
افزونهها:
- افزونه امنیت و فایروال وردپرس | پلاگین All In One WP Security
- WP Activity Log – مشاهده تغییرات دیتابیس و فعالیت کاربران
- iThemes Security – مانیتور تغییرات جداول حساس
دستی :
- بررسی لاگ MySQL برای ورودیهای مشکوک
- اجرای query های مشکوک بررسی شود
مرحله ۶: امنیت پوستهها و افزونهها
حذف افزونهها و قالبهای غیر فعال
تنظیمات دستی:
- وردپرس ← Plugins ← Installed Plugins ← حذف افزونههای غیر فعال
- Appearance ← Themes ← حذف قالبهای غیر فعال
نکات فنی:
- افزونهها و قالبهای غیر فعال میتوانند در صورت وجود آسیبپذیری، دروازه حمله باشند
- حتی قالب یا افزونهای که غیر فعال است ممکن است فایلهای اجرایی روی سرور داشته باشد
- افزونه و یا قالب غیرفعال که در آینده قصد فعال سازی آن را دارید را نیز حتما آپدیت و به روز کنید.
آپدیت منظم هسته، افزونه و قالب
دستی:
- Dashboard ← Updates ← بررسی و نصب آخرین نسخهها
- بررسی release notes برای آسیبپذیریهای رفع شده
افزونه پیشنهادی:
- Easy Updates Manager – کنترل آپدیت خودکار برای هسته، افزونه و قالب
نکات فنی:
- سایت staging قبل از آپدیت سایت live تست شود
- نسخههای قدیمی PHP ممکن است مانع آپدیت شوند
بررسی افزونهها برای آسیبپذیریها
دستی:
- مرور سایتهای vulnerability database مانند WPScan Vulnerability Database
- بررسی CVEهای افزونههای نصب شده
افزونه پیشنهادی:
- WPScan – اسکن امنیتی افزونهها، قالبها و هسته وردپرس
- Wordfence – اسکن خودکار و گزارش آسیبپذیریها
نکات فنی:
- افزونههای با مشکل امنیتی باید فوراً حذف یا بروزرسانی شوند
- افزونههای null یا کرک شده اصلاً استفاده نشود
محدود کردن دسترسی فایلهای افزونه و قالب
دستی:
- دسترسیهای پوشهها برای /wp-content/plugins/ و /wp-content/themes/: 755
- دسترسی فایلها: 644
نکات فنی:
- جلوگیری از اجرای فایلهای PHP در /uploads/
- بررسی تغییرات غیر مجاز فایلها با افزونه: iThemes Security → File Change Detection
پیکربندی امنیتی افزونهها
افزونه Wordfence:
- فعال کردن فایروال و اسکن بدافزار برای افزونهها و قالبها
افزونه iThemes Security:
- File Change Detection ← بررسی تغییرات فایلهای افزونه
- Lockout بعد از تلاشهای غیر مجاز ورود
مرحله ۷: مانیتورینگ، ضد بدافزار و فایروال
مانیتورینگ لاگها و فعالیت کاربران
دستی:
- بررسی ورودها و فعالیت کاربران:
- wp-admin → Users → Logged In Users
- بررسی ورودهای مشکوک از آیپیهای غیرمعمول
- بررسی فایل wp-content/debug.log (در صورت فعال بودن WP_DEBUG_LOG)
افزونه پیشنهادی:
- WP Activity Log – مانیتور تمام تغییرات، ورودها و فعالیتها
- iThemes Security – نمایش ورودهای مشکوک و logout خودکار
نکات فنی:
- بررسی لاگهای سرور (Apache/Nginx) برای دسترسیهای غیرمجاز
تنظیم alert ایمیل برای ورودهای مشکوک
اعلانها و هشدارها
فعال کردن هشدارهای ایمیل یا پیام فوری برای فعالیتهای خطرناک:
- ورود ناموفق بیش از حد مجاز
- تغییر فایلهای حساس
- تغییر سطح دسترسی کاربران
افزونه پیشنهادی:
- Wordfence – هشدار ایمیل برای ورودهای غیرمجاز و تغییر فایلها
- iThemes Security – ایمیل هشدار برای تغییر فایل و ورودهای مشکوک
ضد بدافزار و اسکن دورهای
دستی:
- بررسی فایلهای مشکوک در /wp-content/uploads/ و هسته وردپرس
- بررسی تغییرات غیرمجاز فایلها
افزونه پیشنهادی:
- Wordfence Security – اسکن بدافزار و فایلهای هسته
- MalCare Security – اسکن خودکار و پاکسازی بدافزار
نکات فنی:
- اسکن منظم (مثلاً هفتگی)
- بررسی فایلهای جدید یا تغییر یافته در افزونهها و قالبها
فایروال (Web Application Firewall)
دستی:
- محدود کردن دسترسیهای غیرمجاز با htaccess/Nginx (IP restriction، rate limiting)
افزونه پیشنهادی:
- Wordfence WAF – پیکربندی مرحله به مرحله فایروال
- All In One WP Security & Firewall – فعال کردن Basic + Intermediate + Advanced Firewall
نکات فنی:
- تنظیمات فایروال باید با CDN و caching سازگار باشد
- بررسی false positiveها و whitelist آیپیهای امن
- محدود کردن دسترسی به wp-login.php و xmlrpc.php از IPهای مشخص
امنیت پیشرفته با مانیتورینگ و فایروال
- مانیتورینگ real-time برای جلوگیری از:
- Brute-force attacks
- SQL Injection
- Cross-Site Scripting (XSS)
- بررسی تغییرات ناگهانی در فایلها یا دیتابیس
- هشدارهای فوری از طریق ایمیل یا Slack
مرحله ۸: بکاپ و بازیابی پیشرفته + تنظیمات نهایی امنیتی
بکاپ منظم و خودکار
دستی:
- بکاپ کامل فایلها و دیتابیس به صورت دورهای (روزانه، هفتگی، ماهانه)
- ذخیره بکاپ در محل امن خارج از سرور اصلی (Cloud: S3, Google Drive, Dropbox)
- دستورات نمونه برای دیتابیس:
mysqldump -u dbuser -p dbname > /backup/db_backup_$(date +%F).sql
افزونه پیشنهادی:
- UpdraftPlus – بکاپ خودکار فایل و دیتابیس، امکان restore مستقیم
- BackupBuddy – بکاپ کامل + migration
تست و بازیابی بکاپ
بکاپ بدون تست قابل اعتماد نیست
دستی:
- Restore بکاپ روی محیط staging یا local
- بررسی کامل فایلها، دیتابیس و عملکرد سایت
افزونه پیشنهادی:
- UpdraftPlus → Restore test
نکات فنی:
- مطمئن شوید تمامی لینکها، تصاویر و پایگاه داده سالم هستند
- رمزگذاری بکاپ برای جلوگیری از دسترسی غیرمجاز
تنظیمات نهایی امنیتی
Hardening اضافی:
- غیر فعال کردن XML-RPC اگر نیاز نیست:
add_filter('xmlrpc_enabled', '__return_false');
- غیر فعال کردن directory listing:
Options -Indexes
- محدود کردن آپلود فایلها و MIME typeها
کنترل دسترسی و session:
- Logout خودکار پس از زمان مشخص inactivity
- محدود کردن session فعال برای هر کاربر
لایههای اضافی امنیتی پیشرفته
- استفاده از CDN با WAF (Cloudflare, Sucuri) برای کاهش حملات DDoS
- بررسی منظم نسخه PHP و آپدیت سرور
- بررسی دسترسیها و permission فایلها بعد از هر آپدیت هسته، قالب یا افزونه
- مانیتورینگ real-time با WP Activity Log یا افزونههای مشابه
مستندسازی
- ثبت تمام اقدامات انجام شده در یک سند مرجع
- تاریخ آخرین بکاپ و تست بازیابی
- مستندسازی کاربران، نقشها، افزونههای فعال و نسخهها
