افزایش امنیت وردپرس از چند تصمیم ساده شروع میشود: انتخاب هاست مناسب، مدیریت دسترسی کاربران، استفاده از پوسته و افزونه معتبر، بهروزرسانی منظم و داشتن نسخه پشتیبان قابلبازیابی. هیچکدام از این کارها به تنهایی امنیت سایت را تضمین نمیکند، اما کنار هم میتوانند احتمال بروز مشکلات و هزینه جبران آنها را کاهش دهند.
بحث امنیت در وردپرس توسط توسعهدهندگان هسته آن جدی گرفته میشود. با این حال، مشابه سایر سیستمها، چنانچه اقدامات مراقبتی لازم توسط ادمینها و مدیران سایت به کار گرفته نشود، همواره احتمال بروز مشکلات امنیتی وجود خواهد داشت.
در این رشته مقاله، مبحث افزایش امنیت وردپرس یا همان ایمنسازی وردپرس (WordPress Hardening) را با جزییات بیشتر مورد بررسی قرار میدهیم. قسمت اول به اصول پایه و تصمیمهایی اختصاص دارد که پیش از رفتن سراغ تنظیمات فنی باید روشن شوند. در قسمتهای بعدی، آسیبپذیریها و تنظیمات فایلها و دسترسیها را بررسی میکنیم.
این مقاله یا هیچ نوشته دیگری نمیتواند همه نگرانیهای صاحبان سایت را برای همیشه از بین ببرد. پس امنیت وبسایت خود را یک کار مقطعی در نظر نگیرید؛ همانطور که برای تولید محتوا و نگهداری سایت وقت میگذارید، برای مراقبت از آن نیز برنامه داشته باشید.
فهرست مطالب
امنیت سایت چیست؟
امنیت به معنای داشتن یک سیستم کاملاً ایمن و به دور از هر گونه آسیب نیست. از دیدگاه عملی، امنیت یعنی کاهش ریسکها و مخاطرات. در این رویکرد، افزایش امنیت سایت شامل راهکارهایی است که احتمال دسترسی غیرمجاز و آسیب را کمتر میکنند و امکان بازگشت به وضعیت عادی را فراهم میسازند. این نگاه در راهنمای رسمی ایمنسازی وردپرس نیز مبنای بحث امنیت است.
برای روشنتر شدن موضوع، یک فروشگاه اینترنتی را در نظر بگیرید. مشکل امنیتی همیشه به معنای از دسترس خارج شدن سایت نیست؛ تغییر اطلاعات سفارش، دسترسی غیرمجاز به دادههای مشتریان یا تغییر محتوای صفحات نیز میتواند به کسبوکار آسیب بزند. در یک وبلاگ شخصی هم نوشتهها، تصاویر و اعتبار نویسنده داراییهایی هستند که باید از آنها مراقبت کرد.
پیشنهاد من این است که پیش از انتخاب ابزار امنیتی، سه سؤال را برای سایت خود پاسخ دهید:
- چه اطلاعاتی برای شما و کاربران سایت مهم است؟
- چه کسانی برای انجام کار خود به این اطلاعات و تنظیمات سایت نیاز دارند؟
- اگر سایت دچار مشکل شود، برای بازگرداندن آن چه راهی دارید؟
پاسخ این سؤالها کمک میکند هزینه و زمان خود را روی نیاز واقعی سایت بگذارید. برای مثال، سایتی که هر ساعت سفارش دریافت میکند، نمیتواند همان برنامه پشتیبانگیری یک وبلاگ کمفعالیت را داشته باشد.
مؤلفههای مؤثر بر افزایش امنیت وردپرس
۱) هاست یا سرور میزبانی
اغلب، بهترین مکان برای شروع بررسی امنیت یک وبسایت، هاست یا سرور میزبانیکننده آن است. قبل از خرید، محدوده خدمات و مسئولیت شرکت میزبانی را در قوانین خدماتدهی (ToS)، موافقتنامه سطح خدمات (SLA) و توضیحات پلن مطالعه کنید. به نام شرکت یا عبارتهایی مثل «هاست امن» اکتفا نکنید. پیشنهاد میکنم این سؤالها را از پشتیبانی بپرسید و پاسخ آنها را برای زمان نیاز نگه دارید:
- بکاپ با چه فاصلهای گرفته میشود و چند نسخه قبلی نگهداری میشود؟
- آیا نسخه پشتیبان خارج از سرور اصلی هم نگهداری میشود؟
- بازیابی بکاپ چطور انجام میشود و آیا هزینه جداگانه دارد؟
- در صورت مشاهده آلودگی، خدمات شرکت شامل بررسی و پاکسازی هم هست یا فقط اطلاعرسانی میکند؟
- مسئول بهروزرسانی نرمافزارهای سرور چه کسی است؟
- در صورت از دسترس خارج شدن سایت، از چه مسیری میتوان پیگیری کرد؟
این سؤالها برای مقایسه دو سرویس با قیمت مشابه هم کاربرد دارند. ممکن است هر دو پلن از بکاپ روزانه صحبت کنند، اما مدت نگهداری نسخهها و شرایط بازیابی آنها متفاوت باشد.
محدوده مسئولیت میزبان را با مسئولیت خودتان اشتباه نگیرید. نصب یک افزونه نامطمئن یا واگذاری حساب مدیر به افراد غیرضروری، مسئلهای است که باید در سطح مدیریت سایت به آن رسیدگی کنید. امکانات زیرساخت را از شرکت میزبانی بپرسید و نگهداری نرمافزار سایت را نیز در برنامه خود قرار دهید.
۲) نرمافزارهای وبسایت
بخش مهمی از مراقبت از سایت به هسته وردپرس، پوستهها و افزونههایی مربوط میشود که نصب کردهاید. چهار محور اصلی این بخش، مدیریت دسترسی، انتخاب منابع معتبر، بهروزرسانی و پشتیبانگیری است.
۲-۱) مدیریت دسترسی کاربران وردپرس
هر کسی که در سایت فعالیت میکند، لزوماً به نقش «مدیر کل» نیاز ندارد. در نقشهای پیشفرض وردپرس، نویسنده میتواند نوشتههای خودش را مدیریت و منتشر کند و ویرایشگر امکان مدیریت نوشتههای دیگران را هم دارد. نقش مشارکتکننده برای کسی مناسب است که نوشته را آماده میکند، اما نباید خودش آن را منتشر کند. جزییات این دسترسیها در مستندات نقشها و قابلیتهای وردپرس آمده است.
برای مثال، اگر همکارتان فقط مسئول نوشتن مقاله است، ابتدا نیازهای کاری او را با نقش نویسنده یا مشارکتکننده مقایسه کنید. دسترسی مدیر کل را زمانی در اختیار او قرار دهید که واقعاً مسئولیت مدیریتی مرتبطی داشته باشد.
برای هر فرد حساب جداگانه بسازید. استفاده چند نفر از یک حساب، پیگیری تغییرات و پایان دادن به دسترسی یک همکار را دشوار میکند. بعد از پایان همکاری نیز دسترسی حساب را بازبینی کنید؛ اگر تصمیم به حذف کاربر گرفتید، پیش از تأیید حذف، تکلیف نوشتهها و محتوای متعلق به او را مشخص کنید.
جدول نقشهای پیشفرض نقطه شروع خوبی است، اما اگر افزونهای نقش یا قابلیت جدیدی اضافه کرده، دسترسی واقعی کاربران را نیز بررسی کنید.
۲-۲) رمز عبور قوی و احراز هویت دومرحلهای
برای حساب مدیر، رمز عبور طولانی و منحصربهفرد انتخاب کنید و آن را در سایتهای دیگر به کار نبرید. پیشنهاد من استفاده از ابزارهای مدیریت رمز عبور است تا مجبور نباشید برای به خاطر سپردن رمزها، آنها را ساده یا تکراری انتخاب کنید.
احراز هویت دومرحلهای یا 2FA یک عامل دیگر به ورود اضافه میکند؛ مثلاً کدی که برنامه احراز هویت تولید میکند. برای راهاندازی آن در وردپرس، میتوانید از افزونه سازگار یا راهکار ورود مورد استفاده سایت کمک بگیرید. راهنمای رسمی احراز هویت دومرحلهای وردپرس مفهوم و روشهای آن را توضیح میدهد.
قبل از فعالسازی اجباری برای همه کاربران، ورود و روش بازیابی را با یک حساب آزمایشی بررسی کنید. کدهای بازیابی را، اگر ابزار در اختیارتان میگذارد، در محل امن نگه دارید. امنیت حساب ایمیلی را که برای بازیابی رمز وردپرس استفاده میکنید هم جدی بگیرید.
۲-۳) استفاده از پوسته و افزونه معتبر
پوستهها و افزونهها را از مخزن رسمی وردپرس یا وبسایت رسمی توسعهدهنده و فروشنده تهیه کنید. خرید از یک فروشگاه شناختهشده، به تنهایی تضمین نمیکند که محصول همیشه بدون آسیبپذیری باشد؛ وضعیت پشتیبانی همان محصول را هم بررسی کنید. پیش از نصب، این موارد را کنار هم ببینید:
- تاریخ آخرین بهروزرسانی و سابقه انتشار نسخهها؛
- سازگاری اعلامشده با نسخه وردپرس و PHP سایت؛
- پاسخگویی توسعهدهنده به مشکلات کاربران؛
- امکاناتی که واقعاً در سایت به آنها نیاز دارید.
نسخههای دستکاریشده یا موسوم به نالشده انتخاب قابلاعتمادی برای سایت نیستند. اگر هزینه یک محصول مناسب نیست، پیشنهاد من پیدا کردن جایگزین رایگان یا حذف قابلیت غیرضروری است.
فهرست افزونهها را هم هر چند وقت یک بار مرور کنید. پیش از حذف، مشخص کنید هر افزونه چه کاری انجام میدهد و آیا داده یا قابلیت وابستهای دارید که باید حفظ شود. تعداد کمتر افزونه به خودی خود معیار امنیت نیست؛ انتخاب و نگهداری درست اهمیت بیشتری دارد.
۲-۴) بهروزرسانی منظم، همراه با بررسی نتیجه
هسته وردپرس، پوستهها و افزونهها را بهروز نگه دارید. پیش از بهروزرسانی، نسخه پشتیبان تهیه کنید تا در صورت بروز مشکل امکان بازیابی داشته باشید. راهنمای بهروزرسانی وردپرس نیز روی تهیه بکاپ پیش از شروع تأکید دارد.
برای سایتهای حساس، پیشنهاد میکنم تغییرات مهم را ابتدا در محیط آزمایشی یا Staging بررسی کنید. پس از بهروزرسانی سایت اصلی هم فقط به باز شدن صفحه نخست اکتفا نکنید؛ بخشهایی را بررسی کنید که کار واقعی کاربران در آنها انجام میشود:
- ورود به حساب کاربری و پیشخوان؛
- ارسال فرم تماس یا ثبتنام؛
- نمایش صفحات مهم و فایلهای رسانهای؛
- افزودن محصول به سبد و طی کردن فرایند سفارش، اگر سایت فروشگاهی است.
بهروزرسانی خودکار میتواند بخشی از کار نگهداری را ساده کند، اما وضعیت موفقیت آن و عملکرد سایت را همچنان پیگیری کنید. اگر از ناسازگاری یک افزونه نگران هستید، برای رفع ناسازگاری برنامه بگذارید؛ عقب انداختن نامحدود بهروزرسانی راهحل مناسبی نیست.
۳) بکاپگیری منظم و آزمایش بازیابی
نسخه پشتیبان کامل وردپرس باید فایلها و پایگاه داده را پوشش دهد. دانلود پوشه سایت به تنهایی معمولاً بکاپ پایگاه داده نیست. نوشتهها و بسیاری از تنظیمات در پایگاه داده قرار دارند و تصاویر و سایر فایلهای بارگذاریشده نیز باید جداگانه پوشش داده شوند.
فاصله بکاپها را بر اساس میزان تغییر اطلاعات تعیین کنید. برای فروشگاهی که در طول روز سفارش جدید دارد، ابتدا مشخص کنید از دست دادن چند ساعت سفارش تا چه حد قابلقبول است. سپس سرویس پشتیبانگیری را با همین نیاز انتخاب کنید.
فقط یک نسخه روی همان هاست نگه ندارید. چند نسخه مربوط به زمانهای متفاوت و دستکم یک نسخه خارج از محیط میزبانی اصلی داشته باشید. دسترسی به محل بکاپ را محدود کنید، چون فایل پشتیبان ممکن است حاوی اطلاعات کاربران و تنظیمات حساس باشد.
پیشنهاد میکنم بازیابی را در محیط جداگانه آزمایش کنید: آیا وارد پیشخوان میشوید؟ نوشتهها و تصاویر موجودند؟ بخشهای ضروری کار میکنند؟ برای نسخه آزمایشی فروشگاه، ارسال ایمیل و اتصال به درگاه پرداخت واقعی را نیز کنترل کنید. داشتن فایل بکاپ با داشتن مسیر بازیابی آزمایششده فرق دارد.
نقش HTTPS در امنیت وردپرس
HTTPS ارتباط میان مرورگر و سرور را رمزنگاری میکند و برای محافظت از اطلاعات ورود ضروری است. اما وجود گواهی SSL به این معنا نیست که افزونهها، حسابهای کاربری و فایلهای سایت نیز امن شدهاند. مستندات HTTPS وردپرس استفاده از آن را برای ورود و بازدید کاربران توصیه میکند.
در بررسی اولیه، مطمئن شوید صفحه ورود و پیشخوان هم با HTTPS باز میشوند و مرورگر هشدار گواهی نمیدهد. اگر از CDN یا پراکسی استفاده میکنید، تنظیمات HTTPS را متناسب با همان محیط انجام دهید؛ تغییر بدون بررسی تنظیمات میتواند باعث حلقه تغییر مسیر (redirect loop) شود.
آیا نصب افزونه امنیتی کافی است؟
پیشنهاد من این است که افزونه امنیتی را بر اساس یک نیاز مشخص انتخاب کنید: کنترل ورود، ثبت رویدادها یا دریافت هشدار. پیش از نصب، مشخص کنید کدام قابلیت در هاست یا ابزارهای فعلی شما وجود دارد و چه کمبودی باقی مانده است. برای مثال، وقتی حسابهای مدیریتی بدون بازبینی در اختیار چند نفر قرار گرفتهاند، ابتدا باید دسترسیها را سامان دهید. اضافه کردن ابزار جدید، جای تصمیم درست درباره مسئولیت افراد را نمیگیرد.
پس از فعالسازی امکانات افزونه، مسیرهای معمول سایت را بررسی کنید. اگر قانون امنیتی باعث مسدود شدن فرم یا اختلال در ورود کاربران میشود، علت و محدوده آن را پیدا کنید. فعال کردن همه گزینهها بدون شناخت اثر آنها، روش مناسبی برای نگهداری سایت نیست.
چکلیست اولیه افزایش امنیت وردپرس
برای شروع، نتیجه بررسی خود را مقابل هر مورد یادداشت کنید. عبارت «انجام شده» وقتی مفید است که بتوانید نشان دهید چه چیزی را بررسی کردهاید.
- محدوده خدمات امنیتی و بازیابی بکاپ هاست مشخص است.
- حسابها و نقش کاربران با مسئولیت فعلی آنها تطبیق داده شدهاند.
- ورود مدیر با رمز منحصربهفرد و روش دومرحلهای محافظت میشود.
- منبع تهیه و وضعیت پشتیبانی افزونهها و پوسته مشخص است.
- نتیجه بهروزرسانیها و عملکرد بخشهای مهم بررسی میشود.
- بکاپ فایلها و پایگاه داده، همراه با نسخه خارج از هاست، موجود است.
- بازیابی بکاپ در محیط جداگانه آزمایش شده است.
- صفحه ورود و پیشخوان با HTTPS معتبر باز میشوند.
این فهرست را پس از تغییر هاست، نصب افزونه مهم یا تغییر اعضای تیم دوباره مرور کنید. چنین تغییراتی ممکن است تصمیمهای قبلی شما درباره دسترسی و نگهداری سایت را نیازمند بازبینی کنند.
پرسشهای متداول
-
آیا وردپرس به خودی خود ناامن است؟
برای ارزیابی یک سایت، باید مجموعه هسته وردپرس، افزونهها، پوسته، هاست و شیوه مدیریت آن را بررسی کرد. صرف استفاده از وردپرس برای نتیجهگیری درباره امنیت یک وبسایت کافی نیست.
-
برای افزایش امنیت وردپرس از کجا شروع کنیم؟
ابتدا وضعیت بکاپ و امکان بازیابی، حسابهای مدیریتی و بهروزرسانیها را بررسی کنید. بعد، کمبودهای مشخص سایت را مبنای انتخاب ابزار و تنظیمات تکمیلی قرار دهید.
-
آیا گواهی SSL جلوی هک شدن وردپرس را میگیرد؟
SSL و HTTPS از ارتباط مرورگر و سرور محافظت میکنند. رسیدگی به آسیبپذیری نرمافزار، دسترسی کاربران و نگهداری سایت همچنان لازم است.
-
هر چند وقت یک بار باید از وردپرس بکاپ بگیریم؟
به میزان تغییر اطلاعات و مقدار دادهای بستگی دارد که از دست دادن آن برای شما قابلقبول است. برنامه یک فروشگاه فعال باید با برنامه یک وبلاگ کمفعالیت متفاوت باشد.
-
آیا خرید افزونه از فروشگاه معتبر، امنیت آن را تضمین میکند؟
خرید از منبع معتبر مهم است، اما وضعیت پشتیبانی و بهروزرسانی خود محصول هم باید بررسی شود. پس از نصب نیز باید نسخهها و مشکلات اعلامشده آن را پیگیری کنید.
-
آیا سایت کوچک هم به مراقبت امنیتی نیاز دارد؟
بله؛ نوشتهها، حسابهای کاربری و زمان صرفشده برای ساخت یک سایت کوچک هم ارزشمند هستند. میتوانید برنامه نگهداری را ساده انتخاب کنید، اما دسترسیها، بهروزرسانی و بکاپ را از آن حذف نکنید.
در قسمت اول، تعریف امنیت وردپرس و اصول عمومی مراقبت از سایت را مرور کردیم. بهتر است همین حالا یک مورد قابلبررسی انتخاب کنید؛ مثلاً حسابهای مدیر را بازبینی کنید یا از قابلبازیابی بودن آخرین بکاپ مطمئن شوید. نتیجه را ثبت کنید تا بررسی بعدی از نقطه مشخصی شروع شود.
در قسمت دوم: آسیبپذیریهای وردپرس، عوامل مرتبط با نرمافزار، وبسرور، شبکه و کامپیوتر مدیر سایت بررسی میشود. سپس در قسمت سوم: فایلها و دسترسیها، سراغ تنظیمات فنیتر میرویم.