فرض کنید میخواهیم یک سایت وردپرسی تازه راهاندازی کنیم و از همان روز اول جلوی بسیاری از مشکلات امنیتی را بگیریم. در این شرایط، نباید فقط فایلهای وردپرس را روی هاست قرار دهیم و نصب را تمامشده بدانیم؛ چون انتخاب هاست، نحوه ساخت دیتابیس، اطلاعات حساب مدیر و تنظیمات اولیه هم روی امنیت سایت تأثیر میگذارند.
در این قسمت از دوره آموزش امنیت وردپرس، میخواهیم نصب امن وردپرس را از پایه شروع کنیم و نکاتی را یاد بگیریم که رعایت آنها در زمان راهاندازی سایت، احتمال ایجاد مشکلات امنیتی را کمتر میکند. بعضی از این نکات ساده به نظر میرسند، اما میتوانیم از آنها در پروژههای مختلف استفاده کنیم و سایت مطمئنتری داشته باشیم.
در این مقاله چی قراره یاد بگیریم؟
انتخاب هاست مناسب برای نصب امن وردپرس
فایلهای سایت روی هاست قرار میگیرند و کیفیت و امنیت این فضا روی سایت ما تأثیر مستقیمی دارد. برای همین، قبل از خرید هاست فقط قیمت و مقدار فضا را بررسی نمیکنیم و امکانات فنی و امنیتی سرویس را هم در نظر میگیریم. در تصویر زیر برخی از ویژگیهای مهم یک هاست مناسب برای نصب امن وردپرس را مشاهده میکنیم و در ادامه، هرکدام از آنها را بهصورت تخصصیتر بررسی میکنیم.

خرید هاست از یک شرکت معتبر
هاست را از شرکتی تهیه میکنیم که چند سال در حوزه میزبانی وب فعالیت کرده و سرویسهایش امتحان خودشان را پس دادهاند. شرکتهای معتبر معمولاً سرویسها را بهروز نگه میدارند و برای حفظ اعتبارشان از لایسنسهای اصلی و زیرساخت مناسب استفاده میکنند.
برای یک سایت جدی سراغ هاستهای رایگان، بیشازحد ارزان یا سرویسهایی که ارائهدهنده مشخصی ندارند نمیرویم. ممکن است این سرویسها در ابتدای کار هزینه ما را کم کنند، اما بعداً برای امنیت و پایداری سایت دردسر ایجاد میکنند.
بررسی نسخه PHP و پایگاه داده
بهتر است هاستی را انتخاب کنیم که نسخههای جدید PHP، MySQL و MariaDB را در اختیارمان قرار دهد. اگر تازهترین نسخه هنوز روی سرور ارائه نشده باشد، یک نسخه پایدار قبل از آن هم قابل استفاده است. بهروزبودن این سرویسها میتواند روی کارایی، سرعت و امنیت سایت اثر بگذارد.
بررسی CloudLinux، LiteSpeed و NVMe
در مشخصات هاست، سیستمعامل CloudLinux، وبسرور LiteSpeed و فضای NVMe را بررسی میکنیم. در ادامه میتوانیم افزونه لایت اسپید کش را هم روی سایتی که وبسرور LiteSpeed دارد نصب و تنظیم کنیم تا از هماهنگی این دو برای بهبود سرعت استفاده کنیم.

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

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

آشنایی با فایلها و پوشههای اصلی وردپرس
بعد از دانلود، فایل فشرده را روی کامپیوتر از حالت فشرده خارج میکنیم. داخل پوشه WordPress فایلهای هسته و پوشههایی مانند wp-admin، wp-includes و wp-content را میبینیم.
شناخت این ساختار بعداً در عیبیابی سایت هم به ما کمک میکند. برای جایگزینی فایلهای هسته، پوشه wp-content، فایل wp-config.php و فایل .htaccess را کنار میگذاریم و فایلهای اصلی سالم را جایگزین میکنیم.

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

پاککردن فایلهای اولیه public_html
در cPanel وارد File Manager و سپس پوشه public_html میشویم. اگر هاست تازه است و فایلهای اولیهای داخل این مسیر قرار دارند که به آنها نیاز نداریم، آنها را انتخاب و حذف میکنیم تا نصب را روی فضای خالی شروع کنیم.
آپلود فایل ZIP وردپرس
داخل public_html روی Upload کلیک میکنیم و فایل ZIP وردپرسی را که از سایت اصلی دانلود کردهایم داخل صفحه رها میکنیم. با توجه به سرعت اینترنت کمی منتظر میمانیم تا آپلود کامل شود و سپس به File Manager برمیگردیم.

استخراج و انتقال فایلها به public_html
روی فایل فشرده راستکلیک میکنیم و Extract را میزنیم. فایلها معمولاً داخل پوشهای به نام wordpress قرار میگیرند. وارد این پوشه میشویم، همه محتویات را انتخاب میکنیم و با Move مستقیماً به public_html انتقال میدهیم.

بعد از انتقال، پوشه خالی WordPress و فایل ZIP را حذف میکنیم تا فایل اضافی روی هاست باقی نماند. حالا فایلهای اصلی باید مستقیماً داخل public_html دیده شوند.

بررسی SSL و نسخه PHP قبل از نصب وردپرس
قبل از اجرای نصب، دو مورد را بررسی میکنیم: گواهی SSL باید برای دامنه فعال باشد و نسخه PHP هاست را هم روی نسخه مناسب قرار میدهیم.
بررسی فعالبودن SSL در cPanel
از صفحه اصلی سی پنل وارد SSL/TLS Status میشویم. سبزبودن وضعیت دامنه نشان میدهد گواهی SSL فعال شده است. بعداً هم بررسی میکنیم که سایت با HTTPS باز شود.

انتخاب نسخه PHP هاست
از بخش Select PHP Version نسخه PHP را بررسی میکنیم و آن را روی نسخه پیشنهادی وردپرس قرار میدهیم. در همین صفحه میتوانیم ماژولهای موردنیاز را هم فعال کنیم و در پایان Apply را بزنیم.

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

انتخاب نام غیرقابلحدس برای دیتابیس
از Database Wizard یک دیتابیس تازه میسازیم. برای نام آن از عبارتهای قابلحدس مانند wordpress یا wp استفاده نمیکنیم و یک نام تصادفی انتخاب میکنیم.

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

دادن دسترسیهای دیتابیس به کاربر
در مرحله بعد گزینه All Privileges را انتخاب میکنیم تا کاربر ساختهشده دسترسیهای لازم را روی همان دیتابیس داشته باشد. سپس Next Step را میزنیم تا ساخت دیتابیس کامل شود.

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

تنظیم حساب مدیر هنگام نصب امن وردپرس
بعد از برقراری اتصال دیتابیس، عنوان سایت، حساب مدیر و ایمیل را مشخص میکنیم. اطلاعات این صفحه باید با دقت انتخاب شوند، چون نام کاربری و رمز همین حساب برای ورود به پیشخوان استفاده خواهند شد.
انتخاب نام کاربری و رمز عبور قوی
برای نام کاربری مدیر از عبارتهایی مثل admin، administrator و manager استفاده نمیکنیم. یک نام غیرقابلحدس میسازیم و رمز تصادفی و قوی انتخاب میکنیم. بعداً میتوانیم این اطلاعات را در نرمافزار مدیریت رمز عبور ذخیره کنیم.

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

تنظیمات امنیتی بعد از نصب وردپرس
بعد از ورود به پیشخوان، نصب امن وردپرس هنوز تمام نشده است. چند تنظیم اولیه را انجام میدهیم تا نام کاربری مدیر نمایش داده نشود، آدرسها روی HTTPS باشند و بخشهای اضافی هم از سایت حذف شوند.
تغییر نام نمایشی حساب مدیر
وردپرس ممکن است نام کاربری ورود را بهعنوان نام عمومی نمایش دهد. برای جلوگیری از این موضوع وارد «کاربران ← شناسنامه» میشویم، یک لقب عمومی مثل «مدیر سایت» قرار میدهیم و از قسمت «نمایش عمومی نام» همان لقب را انتخاب میکنیم. در پایان روی «بهروزرسانی شناسنامه» میزنیم.

بررسی آدرسهای HTTPS و تنظیمات عمومی
از «تنظیمات ← عمومی» بررسی میکنیم که نشانی وردپرس و نشانی سایت هر دو با https:// شروع شوند. منطقه زمانی را روی تهران قرار میدهیم و عنوان، معرفی کوتاه و نماد سایت را هم تنظیم میکنیم.

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

رفع خطای Mixed Content بعد از فعالسازی SSL
گاهی سایت با HTTPS باز میشود، اما بعضی تصاویر، فیلمها، فایلهای CSS یا اسکریپتها هنوز با HTTP بارگذاری میشوند. در این حالت خطای Mixed Content ایجاد میشود و ممکن است علامت قفل مرورگر نمایش داده نشود یا بخشی از ظاهر صفحه بههم بریزد.
برای بررسی، ابزار توسعهدهنده مرورگر را با F12 باز میکنیم و به Console میرویم. اگر خطای Mixed Content وجود داشت، آدرس فایل مشخصشده را پیدا میکنیم و آن را از HTTP به HTTPS تغییر میدهیم. سپس صفحه را دوباره بارگذاری میکنیم و نتیجه را میبینیم.

فعالکردن HSTS برای سایت وردپرسی
HSTS به مرورگر اعلام میکند که سایت را فقط از طریق HTTPS باز کند و اتصال HTTP را نپذیرد. قبل از فعالکردن آن مطمئن میشویم گواهی SSL درست کار میکند، همه صفحات با HTTPS باز میشوند، نسخه HTTP به HTTPS هدایت میشود و خطای Mixed Content نداریم.

قراردادن کد HSTS در فایل htaccess
در هاستهایی که وبسرور LiteSpeed یا Apache دارند، کد معرفیشده را داخل فایل .htaccess قرار میدهیم. اگر فایل را نمیبینیم، از Settings گزینه نمایش فایلهای مخفی را فعال میکنیم. سپس فایل را ویرایش میکنیم و کد را قبل از بخش BEGIN WordPress قرار میدهیم.

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

تنظیم سطح دسترسی فایلها و پوشههای وردپرس
در File Manager ستون Permissions را بررسی میکنیم. سطح دسترسی معمول پوشهها 755 و سطح دسترسی فایلها 644 است. اگر مقدار دیگری دیدیم، روی Permission کلیک میکنیم و آن را اصلاح میکنیم. هیچ فایل یا پوشهای را روی 777 قرار نمیدهیم.

محافظت از فایل wp-config.php
فایل wp-config.php اطلاعات اتصال به دیتابیس مانند نام دیتابیس، نام کاربری و رمز را نگه میدارد. به همین دلیل یکی از فایلهای مهم وردپرس محسوب میشود و باید از آن محافظت کنیم.
فایل را از public_html انتخاب میکنیم و با Move یک سطح بالاتر، یعنی پوشه Home، انتقال میدهیم. وردپرس میتواند این فایل را در مسیر بالاتر شناسایی کند و سایت بعد از انتقال هم بدون خطای اتصال به دیتابیس باز میشود.

تغییر Salt Keys وردپرس در زمان نیاز
Salt Keys مجموعهای از رشتههای طولانی و تصادفی داخل wp-config.php هستند که وردپرس برای مدیریت امن اطلاعات ورود و کوکیها از آنها استفاده میکند. اگر احتمال میدهیم افراد غیرمجاز وارد سایت شدهاند، بعد از پاکسازی سایت میتوانیم این کلیدها را دوباره تولید کنیم.

تولید و جایگزینی کلیدهای تازه
وارد تولیدکننده رسمی کلیدهای وردپرس میشویم. با هر بار تازهسازی صفحه، کلیدهای جدیدی ساخته میشوند. همه خطوط را کپی میکنیم، بخش قبلی Salt Keys در wp-config.php را جایگزین میکنیم و فایل را ذخیره میکنیم.
با انجام این کار، تمام کاربران واردشده از جمله خود مدیر از حساب خارج میشوند و باید دوباره وارد شوند. تغییر دورهای Salt Keys ضروری نیست و بیشتر زمانی انجام میشود که احتمال نفوذ وجود داشته باشد یا پاکسازی سایت را انجام داده باشیم.

حذف فایلها و محتواهای اضافی وردپرس
بعد از نصب، فایلهای license.txt، readme.html و wp-config-sample.php را از مسیر اصلی وردپرس حذف میکنیم. این فایلها برای اجرای سایت ضروری نیستند و بعضی از آنها اطلاعاتی درباره وردپرس نمایش میدهند. ممکن است با بهروزرسانی وردپرس دوباره ایجاد شوند و در آن صورت دوباره آنها را بررسی میکنیم.

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

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

جمعبندی آموزش نصب امن وردپرس
در این آموزش یاد گرفتیم که نصب امن وردپرس فقط به آپلود فایلها و ساخت دیتابیس محدود نمیشود. ابتدا هاست مناسب را انتخاب کردیم، وردپرس را از منبع اصلی گرفتیم، دیتابیس و حساب مدیر را با اطلاعات غیرقابلحدس ساختیم و سپس تنظیمات امنیتی اولیه را انجام دادیم.
در ادامه SSL و HSTS را بررسی کردیم، سطح دسترسی فایلها را تنظیم کردیم، از wp-config.php محافظت کردیم، با کاربرد Salt Keys آشنا شدیم و فایلها و دسترسیهای اضافی را حذف کردیم. رعایت همین نکات از ابتدای راهاندازی، پایه امنیتی سایت را محکمتر میکند. اگر سؤال یا نکتهای درباره امنیت وردپرس دارید، میتوانید آن را در قسمت نظرات مطرح کنید.
لینکهای دانلود
- دانلود آخرین نسخه وردپرس 36 مگابایت-نسخه 7.1.3
