امنیت وردپرس چیست و چه کاری واقعا سایت شما را امن می کند؟

یاسین
1405/7/17
11 دقیقه
142 بازدید
امنیت وردپرس چیست و چه کاری واقعا سایت شما را امن می کند؟

پاسخ کوتاه: امنیت وردپرس از کجا شروع می شود؟

پاسخ کوتاه: امنیت وردپرس یعنی بستن سه در ورودی؛ افزونه و قالب به روز، صفحه ورود محافظت شده، و نسخه پشتیبان سالم که بیرون از هاست نگه داری می شود. هسته وردپرس به تنهایی جای شکستن ندارد و بیشتر سایت هایی که هک می شوند از یک افزونه قدیمی یا یک رمز ساده خورده اند. اگر امروز فقط یک کار می توانید بکنید، به روزرسانی خودکار افزونه ها را روشن کنید.

سایت وردپرسی دارید و نمی دانید امنیت آن در چه وضعی است؟ این راهنما به پرسش «امنیت وردپرس چیست» کوتاه جواب می دهد و بعد به ترتیب اثر جلو می رود. اول می بینیم گناه اصلی گردن چه کسی است، بعد پنج بررسی می کنیم که خودتان در ده دقیقه تکرار می کنید، و آخرش می گوییم کدام بخش را واقعا باید به یک متخصص بسپارید.

آیا وردپرس امن است؟

وردپرس بدنام است و این بدنامی قدیمی شده. واقعیت این است که هسته وردپرس توسط تیم امنیتی رسمی نگه داری می شود و وصله های امنیتی آن سریع منتشر می شود. چیزی که سایت ها را می اندازد جای دیگری است: افزونه و قالبی که کسی به روزشان نمی کند، رمز عبوری که حدس زدنی است، و هاستی که نسخه قدیمی PHP روی آن نصب است.

عدد رسمی امروز این را نشان می دهد. طبق آمار رسمی وردپرس که نهم اکتبر ۲۰۲۶ اندازه گیری کردیم، نسخه پایدار وردپرس ۷٫۱٫۳ است؛ ولی تنها حدود ۶۱ درصد سایت ها روی شاخه ۷٫۱ هستند و نزدیک به چهل درصد روی نسخه های قدیمی تر مانده اند. یعنی مشکل اصلی «امنیت وردپرس» نیست، «به روز نکردن وردپرس» است. اگر سایت تازه راه اندازی کرده اید و می خواهید از پایه درست باشد، مراحل نصب وردپرس روی هاست را با همین نگاه امنیتی بخوانید.

گناه اصلی گردن کیست؟ چهار لایه آسیب پذیری

وقتی یک سایت وردپرسی هک می شود، تقریبا همیشه یکی از این چهار لایه باز مانده است. ترتیب زیر از پرتکرارترین به کم تکرارترین است و همان ترتیب اولویت کار شماست.

لایهشکل باز ماندننشانه در سایت شما
افزونه و قالبنسخه ای که دیگر پشتیبانی نمی شود یا وصله امنیتی نگرفتهافزونه های غیرفعال و قدیمی که پاک نشده اند
رمز و صفحه ورودرمز تکراری و ضعیف، ورود نامحدود، نام کاربری adminدر لاگ ورود، تلاش های پشت سر هم از یک نشانی
هاست و نسخه PHPنسخه قدیمی PHP، جداسازی ضعیف بین سایت ها، پشتیبان نبودننسخه PHP در پنل هاست شما
دسترسی مدیرکاربر غیرفعال یا قدیمی که هنوز دسترسی داردفهرست کاربران با نقش مدیر که نمی شناسید

نکته ای که خیلی ها از دست می دهند این است که لایه اول با یک کلیک درست می شود و لایه چهارم تقریبا هیچ وقت بررسی نمی شود. با این حال بیشترین خرابی از لایه چهارم می آید؛ کاربری که سال پیش برای یک پروژه ساخته شده و هنوز می تواند وارد شود.

از نظر نوع حمله، بیش ترین چیزی که روی سایت های ایرانی می بینیم سه دسته است: تلاش پشت سر هم برای حدس زدن رمز، تزریق کد از راه فرم ها و آدرس ها، و از کار انداختن سایت با فرستادن حجم بالای درخواست. هیچ کدام از این سه با پنهان کاری حل نمی شود؛ همه با همان چهار لایه بالا بسته می شوند.

نُه کاری که واقعا امنیت را بالا می برد

این جدول بر اساس اثر واقعی مرتب شده، نه بر اساس شهرت. هر ردیف را که کنار بگذارید یک در ورودی بازتر می شود.

#کاراثرزمان لازم
۱به روزرسانی خودکار افزونه، قالب و هستهبالا۱۰ دقیقه یک بار تنظیم
۲رمز یکتا برای هر کاربر و ورود دو مرحله ای برای مدیربالا۱۰ دقیقه
۳محدود کردن تعداد تلاش ورود ناموفقبالا۵ دقیقه
۴پاک کردن افزونه و قالبی که استفاده نمی کنیدبالا۱۵ دقیقه
۵بکاپ خودکار روزانه و بیرون از هاستبالا۲۰ دقیقه
۶حذف کاربران غیرفعال و کم کردن تعداد مدیرانمتوسط۱۰ دقیقه
۷نسخه PHP به روز روی هاستمتوسط۱۵ دقیقه
۸گواهی SSL معتبر و انتقال خودکار به نسخه امنمتوسط۱۰ دقیقه
۹افزونه امنیتی برای اسکن و فایروالمتوسط۲۰ دقیقه

ترتیب بالا تصادفی نیست. چهار ردیف اول بیشترین آسیب را می بندند و اگر فقط یک ساعت وقت داشته باشید، همان چهار کار کافی است. افزونه امنیتی که همه از آن حرف می زنند، ردیف نهم است؛ مفید است، ولی جایگزین ردیف های بالاتر نمی شود.

قفل بشقابی فولادی روی در سفید
کارهایی که فقط امنیت نمایشی می سازند، جای کارهای موثر را نمی گیرند.

سه مورد هم هست که در جدول نیامد چون به ابزار شما بستگی دارد: اسکن بدافزار به صورت دوره ای، غیرفعال کردن ویرایش فایل در کنترل پنل مدیریت، و اگر سایت تان پرداخت آنلاین دارد، تست نفوذ سالانه. برای سایت های کوچک این سه اختیاری اند و برای سایت هایی که اطلاعات کاربر نگه می دارند ضروری می شوند.

کارهایی که «امنیتی» به نظر می رسند ولی وقت تلف کردن اند

بخشی از توصیه هایی که در اینترنت می خوانید، فقط پیچیدگی اضافه می کند و اثر واقعی ندارد. سه موردش را ببینید تا وقت تان را برای کارهای موثر نگه دارید.

تغییر پیشوند جدول ها در دیتابیس. سال ها به عنوان یک کار امنیتی فروخته شده، ولی وقتی مهاجم به دیتابیس دسترسی داشته باشد، پیشوند جدول جلوی او را نمی گیرد. اثر واقعی آن نزدیک صفر است.

مخفی کردن نسخه وردپرس به تنهایی. اگر نسخه سایت شما را نشناسند، کمک می کند که فقط به صورت حاشیه ای؛ چون اسکنرها با یک فایل دیگر نسخه را می فهمند. عوض کردن این نسخه ها اولویت آخر است، نه اول.

بستن کلیک راست و کپی متن. هیچ اثری روی امنیت ندارد و فقط کاربر واقعی را اذیت می کند. این کار جلوی دزدیدن متن را نمی گیرد و جلوی هک را هم نمی گیرد.

در مقابل این ها، سه کاری که واقعا اثر دارند: نصب نکردن افزونه ای که به روزرسانی آن قطع شده، نساختن نقش مدیر برای کسی که فقط به محتوا نیاز دارد، و نگه داشتن دامین و سرویس ایمیل روی حساب شرکتی که همه به آن دسترسی ندارند.

در ده دقیقه سایت خودتان را بسنجید: پنج بررسی با دستور واقعی

لازم نیست منتظر کسی بمانید. این پنج بررسی را در ترمینال یا هر ابزار خط فرمانی که دارید اجرا کنید و نتیجه را ببینید. اگر ترمینال ندارید، همه این ها در پنل هاست و در گزارش افزونه امنیتی هم پیدا می شود.

بررسی اول، سربرگ های امنیتی سرور است. دستور curl زیر را اجرا کنید و ببینید کدام سربرگ برمی گردد. نبودن سربرگ Strict-Transport-Security یک نقطه ضعف رایج است.

curl -sI https://example.com \
  | grep -iE 'strict-transport|x-frame|x-content'

بررسی دوم، لو رفتن فهرست کاربران است. وردپرس به صورت پیش فرض فهرست کاربران را باز می گذارد و مهاجم از همین جا نام کاربری مدیر را پیدا می کند. دستور زیر را بزنید؛ اگر نام کاربری برگشت، این نقطه را باید ببندید.

curl -s https://example.com/wp-json/wp/v2/users | head -c 200

بررسی سوم، صفحه ورود و فایل قدیمی xmlrpc است. هر دو نقطه ورود شناخته شده اند. دستور زیر را بزنید و کد پاسخ را ببینید؛ کد ۲۰۰ برای هر کدام یعنی آن در باز است.

curl -s -o /dev/null -w "%{http_code}\n" \
  https://example.com/wp-login.php
curl -s -o /dev/null -w "%{http_code}\n" \
  https://example.com/xmlrpc.php

بررسی چهارم، فهرست نگه داری نسخه پشتیبان است. بسیاری از سایت ها بکاپ روزانه دارند ولی هرگز بازگردانی آن را تمرین نکرده اند. یک بار روی یک نسخه آزمایشی بازگردانی کنید و زمان بگذارید؛ اگر بیش از یک ساعت طول کشید، بکاپ شما در روز حادثه کار نمی کند.

بررسی پنجم، فهرست کاربران با نقش مدیر و آخرین ورود آن هاست. هر کاربری که نمی شناسید باید امروز حذف یا به نقش پایین تر تغییر کند. این پنج بررسی روی هم ده دقیقه وقت می گیرد و تصویر روشنی از وضعیت سایت شما می دهد.

کابینت شبکه با کابل های مرتب
افزونه امنیتی فقط یک لایه است؛ لایه های سرور و شبکه جای خودشان را دارند.

افزونه امنیتی: کدام، چند تا، و چه چیزی را نمی تواند بگیرد

افزونه امنیتی مفید است، به شرطی که به آن به عنوان لایه نهم نگاه کنید نه لایه اول. آمار رسمی مخزن وردپرس را امروز اندازه گیری کردیم تا انتخاب بر پایه عدد باشد نه تبلیغ.

افزونهنصب فعالآخرین به روزرسانیسازگاری گزارش شده
Wordfenceبیش از ۵ میلیون۳۰ سپتامبر ۲۰۲۶وردپرس ۷٫۱٫۳
All In One WP Securityبیش از ۱ میلیون۱۷ سپتامبر ۲۰۲۶وردپرس ۷٫۱٫۳
Solid Securityبیش از ۷۰۰ هزار۳۰ سپتامبر ۲۰۲۶وردپرس ۷٫۱٫۳

دو نکته مهم. اول اینکه یک افزونه امنیتی کافی است؛ نصب دو افزونه فایروال روی هم معمولا باعث تعارض و کندی می شود، نه امنیت بیشتر. دوم و مهم تر، چیزی که افزونه نمی تواند بگیرد: اگر هاست شما پشتیبان ندارد یا رمز شما در جای دیگری لو رفته، فایروال سایت کمکی نمی کند.

پس پیش از انتخاب افزونه، مطمئن شوید هاست شما امکانات پایه امنیتی را دارد؛ فهرست مشخصات هاست وردپرسی همین موارد را با عدد توضیح می دهد.

هزینه نگه داری این ابزارها تقریبا صفر است، ولی یک نکته مالی هم بگوییم. نسخه رایگان هر سه افزونه بالا برای سایت های کوچک کافی است؛ پلن پرداختی وقتی معنی دارد که اسکن زمان بندی شده و پشتیبانی بخواهید.

صفحه ورود و رمز عبور: سه کار با بیشترین اثر

لایه دوم بیشترین حمله ها را روی خود می بیند، چون نیازی به دانش فنی ندارد. سه کار زیر را به ترتیب انجام دهید.

اول، ورود دو مرحله ای (احراز هویت دو مرحله ای) برای همه کاربرانی که نقش مدیر دارند. با یک برنامه روی گوشی انجام می شود و جلوی بیشترین حالت لو رفتن رمز را می گیرد.

دوم، محدودیت تعداد تلاش ناموفق. با یک افزونه امنیتی تنظیم می شود و باعث می شود حمله حدس زدن رمز عملا بی فایده شود.

سوم، رمز یکتا برای هر کاربر. رمزی که در چند سایت استفاده شده باشد، با لو رفتن یک سایت دیگر همه جا بی فایده می شود. این سه کار بیشتر از هر تنظیم دیگری در پنل امنیتی ارزش دارند.

بکاپ: تنها چیزی که بعد از هک نجات می دهد

فایروال جلوی حمله را می گیرد، ولی وقتی سایت هک شد، آنچه نجات می دهد بکاپ سالم است. سه قاعده ساده که تفاوت را می سازد: روزانه گرفته شود، بیرون از هاست نگه داری شود، و بازگردانی آن حداقل یک بار تمرین شده باشد.

اگر بکاپ روی همان هاستی باشد که هک شده، با هم پاک می شود. اگر هم سی روز یک بار باشد، یک ماه کار از دست می رود. بررسی چهارم بخش قبل همین را می سنجید و جدی تر از آن چیزی است که به نظر می رسد.

دیسک های پشتیبان روی میز کار
بکاپ سالم و بیرون از هاست، تنها چیزی است که روز حادثه نجات می دهد.

اگر سایت هک شد: ترتیب کارها در بیست و چهار ساعت اول

در لحظه هک، بیشترین خسارت از کارهای شتابزده می آید. این ترتیب را رعایت کنید.

اول، عکس بگیرید. از صفحه ها، از فایل پلاگین های ناشناس و از کاربران جدید اسکرین شات بگیرید. این ها بعدا برای فهمیدن نقطه ورود لازم است.

دوم، دسترسی ها را ببندید. رمز همه کاربران مدیر را عوض کنید، کلیدهای امنیتی را بازتولید کنید و کاربران ناشناس را حذف کنید.

سوم، به هاست اطلاع دهید و بخواهید آی پی حمله را در لاگ بررسی کند. چهارم، از بکاپ سالم یک نسخه تازه بگیرید. فقط اگر این سه مرحله تمام شد سراغ پاک کردن فایل ها بروید؛ پاک کردن شتابزده معمولا مدرک را از بین می برد و نقطه ورود را نامعلوم می گذارد.

هاست و نسخه PHP: امنیتی که در افزونه نیست

هاست ارزان با نسخه قدیمی PHP، همان لایه سومی است که کمتر کسی بررسی می کند. آمار رسمی وردپرس امروز نشان می دهد حدود ۲۶ درصد سایت ها روی PHP ۸٫۳ هستند، حدود ۲۴ درصد روی ۸٫۲، و نزدیک به ۱۸ درصد هنوز روی ۷٫۴ یا قدیمی تر مانده اند. یعنی برای بخش بزرگی از سایت ها، یک ارتقای ساده نسخه PHP امنیتی بیشتر از هر افزونه ای می آورد.

برای اتصال امن هم اگر گواهی سایت تان تازه نیست یا انتقال خودکار به نسخه امن روی آن تنظیم نشده، مطلب گواهی SSL را ببینید؛ این یکی از همان سه کار متوسط جدول بالاست.

خودتان انجام بدهید یا بسپارید؟

این جدول را بر اساس زمان و ریسک بسته ایم تا تصمیم روشن باشد.

کارخودتانبسپارید
به روزرسانی و پاک کردن افزونه های بی استفادهبلهلازم نیست
رمز، ورود دو مرحله ای و فهرست کاربرانبلهلازم نیست
افزونه امنیتی و تنظیم اولیه آنبا راهنمااگر وقت ندارید، سفارش دهید
نسخه PHP و تنظیم های سرورخیربله
پاکسازی بعد از هک و پیدا کردن نقطه ورودخیربله

سه ردیف اول را واقعا خودتان می توانید انجام دهید و اگر انجام دهید، سطح امنیت سایت شما از بیشتر سایت های هم صنف بالاتر می رود. دو ردیف آخر دانش سرور می خواهد و اشتباه در آن ها خسارت را بیشتر می کند.

پایش ماهانه: چهار نشانه و یک دستور

امنیت کار یک روز نیست. این دستور ساده را ماهی یک بار اجرا کنید و کد پاسخ صفحه اصلی و صفحه ورود را با ماه قبل مقایسه کنید؛ تغییر ناگهانی کد پاسخ، اولین نشانه دستکاری است.

for u in https://example.com/ \
         https://example.com/wp-login.php; do
  d=$(date '+%F %H:%M')
  c=$(curl -s -o /dev/null -w '%{http_code}' "$u")
  echo "$d $c $u"
done

این چهار چیز را هم ماهی یک بار نگاه کنید: فهرست کاربران مدیر، فهرست افزونه ها برای پیدا کردن افزونه ای که به روزرسانی نگرفته، حجم فایل های هاست برای رشد بی دلیل، و وضعیت آخرین بکاپ.

اگر همه این ها را همین هفته انجام دهید و بعد ماهی یک بار تکرار کنید، سایت شما از بخش بزرگی از سایت های وردپرسی فارسی جلوتر است. برای سایت هایی که چند نفر پشت آن کار می کنند و امنیت برایشان جدی است، این کار را در قالب طراحی سایت در شیراز همراه با نگه داری ماهانه انجام می دهیم: دسترسی ها محدود می شوند، بکاپ آزمایشی گرفته می شود و گزارش ماهانه تحویل داده می شود. اگر سایت تان همین حالا مشکل دارد، پیش از هر چیز رمزها را عوض کنید و سراغ بکاپ بروید.

اشتراک‌گذاری مقاله:

سوالات متداول

نظرات کاربران

ارسال نظر جدید

حداقل ۱۰ و حداکثر ۱۰۰۰ کاراکتر

هنوز نظری ثبت نشده است

اولین نفری باشید که دیدگاه خود را می‌نویسد!

مطالب مرتبط

مقالات مشابه که ممکن است برایتان جالب باشد