امنیت هاست و سایت: چه چیزی کار میزبان است و چه چیزی کار شما

میزبان مسئول امنیت زیرساخت است — سیستم‌عامل سرور، فایروال، شبکه و جدا نگه داشتن حساب‌ها از هم — و شما مسئول هر چیزی هستید که داخل حسابتان می‌گذارید: سیستم مدیریت محتوا، افزونه‌ها، رمزها و سطح دسترسی فایل‌ها. این مرز را کمتر کسی می‌داند، و دقیقاً به همین دلیل وقتی سایتی هک می‌شود اولین جایی که باید دنبال راه ورود گشت خودِ سایت است، نه سرور. هیچ میزبانی نمی‌تواند جلوی افزونه‌ای را که خودتان نصب کرده‌اید بگیرد.

این راهنما بر پایهٔ آنچه در پلن‌های واقعی بازار ایران دیده می‌شود نوشته شده: ۱۱۲۸ پلن از ۳۳ شرکت که در همین سایت رصد می‌شوند. آخرین بررسی: ۱۸ شهریور ۱۴۰۵.

مرز مسئولیت دقیقاً کجاست

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

موضوعهاست اشتراکیسرور مجازی یا اختصاصی
وصلهٔ امنیتی سیستم‌عامل و وب‌سرورمیزبانشما (مگر پلن مدیریت‌شده)
فایروال شبکه و مقابله با حملهٔ حجمیمیزبانمیزبان تا لبهٔ شبکه، بقیه شما
جدا نگه داشتن حساب‌ها از هممیزبانموضوعیت ندارد
به‌روزرسانی سیستم مدیریت محتوا و افزونه‌هاشماشما
رمز عبور و ورود دومرحله‌ایشماشما
سطح دسترسی فایل‌ها و پوشه‌هاشماشما
آنچه نصب می‌کنید (قالب، افزونه، اسکریپت)شماشما
بکاپ قابل بازگردانیهر دو، ولی مسئولیت نهایی با شماشما

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

میزبان دقیقاً چه چیزی را تأمین می‌کند

سه چیز، و هیچ‌کدامشان در جدول مشخصات پلن نوشته نمی‌شود.

نگهداری سرور. هستهٔ سیستم‌عامل، وب‌سرور، نسخهٔ PHP و پایگاه داده باید مرتب وصله بخورند. شرکتی که هنوز نسخه‌های خیلی قدیمی PHP را به‌عنوان پیش‌فرض سرو می‌کند، معمولاً بقیهٔ نگهداری را هم عقب انداخته است. این یکی را می‌شود قبل از خرید پرسید.

فایروال و پایش. فایروال سطح سرور، محدودسازی نرخ درخواست، و در شرکت‌های جدی‌تر پوشش در برابر حملات حجمی. اگر سایتتان هدف حملهٔ منظم است، این را صریح بپرسید — «فایروال داریم» جملهٔ بی‌معنایی است، بپرسید در برابر چه چیزی و تا چه حجمی.

جداسازی حساب‌ها. در هاست اشتراکی ده‌ها سایت روی یک ماشین‌اند. اگر جداسازی درست نباشد، نفوذ به یکی می‌تواند به بقیه سرایت کند. ابزار رایج این کار CloudLinux و CageFS است که هر حساب را در فضای بستهٔ خودش نگه می‌دارد. پرسیدن «آیا CloudLinux دارید؟» یکی از بهترین سؤال‌های پیش از خرید هاست لینوکس است و جوابش خیلی چیزها را دربارهٔ جدیت شرکت می‌گوید.

چه چیزی صددرصد کار خودتان است

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

هیچ میزبانی این‌ها را برای شما مدیریت نمی‌کند و انصافاً هم نباید بکند — نمی‌داند به‌روزرسانی افزونهٔ شما سایتتان را می‌شکند یا نه. تنها استثنا پلن‌های «مدیریت‌شده» است که صریحاً می‌گویند به‌روزرسانی هسته را انجام می‌دهند؛ در بازار ایران چنین پلن‌هایی کم‌شمارند و معمولاً هم فقط هسته را شامل می‌شوند، نه افزونه‌ها را.

SSL و HTTPS دیگر انتخاب نیست

گواهی SSL ارتباط کاربر با سایت را رمزگذاری می‌کند و جلوی شنود و دستکاری محتوا در مسیر را می‌گیرد. امروز نداشتنش دو هزینهٔ مستقیم دارد: مرورگر سایت شما را «ناامن» علامت می‌زند، و هر رمزی که کاربر در فرم ورود می‌زند به‌صورت متن ساده روی شبکه می‌رود.

تقریباً همهٔ هاست‌های ایرانی گواهی رایگان می‌دهند و فعال کردنش از کنترل‌پنل چند کلیک است. دو نکتهٔ عملی: ریدایرکت دائمی از نسخهٔ ناامن به امن را حتماً بگذارید، وگرنه هر دو نسخه در دسترس می‌مانند؛ و تمدید خودکار را چک کنید، چون گواهی رایگان کوتاه‌مدت است و اگر تمدید نشود یک روز صبح سایت با اخطار امنیتی بالا می‌آید. تفاوت انواع گواهی و اینکه کِی خرید پولی معنا دارد را در راهنمای گواهی SSL باز کرده‌ایم.

شرکتپلنفضاقیمت ماهانه
آن هاستPositiveSSL (DV)۴۰٬۷۵۰ تومان
آن هاست(DV) RapidSSL۵۶٬۶۶۷ تومان
آپ وبگواهینامه SSL استاندارد Certum۹۱٬۶۶۷ تومان
پارس وب سرورCommercial SSL DV۱۰۰٬۰۰۰ تومان
صبا هاستگواهینامه امنیتی DV SSL یکساله۱۴۰٬۸۳۳ تومان
قیمت‌ها از جدول کامل گواهی SSL — به‌روزرسانی خودکار.

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

رمز عبور و ورود دومرحله‌ای — روی خود پنل میزبانی

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

سه کار که همین امروز باید انجام دهید:

  • رمز کنترل‌پنل و ناحیهٔ کاربری شرکت میزبان را طولانی و یکتا کنید. «یکتا» یعنی این رمز جای دیگری استفاده نشده باشد.
  • اگر ناحیهٔ کاربری یا پنل، ورود دومرحله‌ای دارد فعالش کنید. cPanel و DirectAdmin هر دو این قابلیت را دارند، هرچند در بعضی هاست‌ها پیش‌فرض خاموش است.
  • برای انتقال فایل از SFTP یا FTPS استفاده کنید، نه FTP ساده. FTP معمولی نام کاربری و رمز را بدون رمزگذاری می‌فرستد.

و یک کار که نباید بکنید: رمز هاست را به هر فریلنسری که چند روز روی سایت کار می‌کند ندهید. در cPanel و DirectAdmin می‌شود حساب FTP جداگانه با دسترسی محدود ساخت و بعد از پایان کار حذفش کرد. تفاوت این دو پنل در مدیریت دسترسی را در مقایسهٔ کنترل‌پنل‌ها نوشته‌ایم.

افزونه و قالب قدیمی؛ رایج‌ترین راه ورود

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

نسخهٔ ایرانی این مشکل یک لایهٔ اضافه دارد: قالب و افزونهٔ کرک‌شده که از سایت‌های دانلود فارسی گرفته می‌شود. اینها دو مشکل هم‌زمان دارند — به‌روزرسانی نمی‌گیرند، پس آسیب‌پذیری‌شان برای همیشه باز می‌ماند؛ و در بسیاری موارد خودِ فایل دستکاری شده و کد اضافه دارد. اگر روی هاست وردپرس پول می‌دهید ولی قالبتان را از سایت دانلود گرفته‌اید، پول را جای اشتباهی خرج کرده‌اید.

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

تنظیم‌های کوچکی که اثر بزرگ دارند

هیچ‌کدام از اینها بیشتر از چند دقیقه وقت نمی‌گیرد و هر کدام یک راه ورود را می‌بندد.

سطح دسترسی فایل‌ها

قاعدهٔ سرانگشتی روی هاست اشتراکی: پوشه‌ها ۷۵۵ و فایل‌ها ۶۴۴. فایل تنظیمات را می‌شود سخت‌گیرانه‌تر گرفت. اگر جایی سطح دسترسی ۷۷۷ می‌بینید، آن را عوض کنید؛ ۷۷۷ یعنی هر فرایندی روی سرور اجازهٔ نوشتن دارد و معمولاً از سر تنبلی و برای رفع یک خطای آپلود گذاشته شده است.

فهرست شدن پوشه‌ها

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

محدود کردن تلاش ورود

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

حذف نشانی‌های بی‌مصرف

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

اسکن بدافزار: چه انتظاری داشته باشید

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

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

روزی که فهمیدید هک شده‌اید

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

  1. سایت را از دسترس خارج کنید. صفحهٔ موقت بگذارید یا سایت را در پنل ببندید. هدف این است که آسیب بیشتر نشود، بازدیدکننده‌ها آلوده نشوند و موتور جستجو صفحه‌های تزریق‌شده را ثبت نکند.
  2. قبل از هر پاک‌سازی، یک کپی از وضعیت فعلی بگیرید. بله، کپی از سایت آلوده. این تنها چیزی است که بعداً به شما می‌گوید مهاجم از کجا آمده. اگر همه را پاک کنید، ردپا هم پاک می‌شود.
  3. فایل‌های مشکوکِ دیده‌شده را صرفاً حذف نکنید. صفحهٔ تغییر چهره یا آن یک فایل عجیب، نتیجه است نه علت. تقریباً همیشه یک درِ پشتی جای دیگری کاشته شده و اگر فقط ظاهر را پاک کنید، فردا برمی‌گردد.
  4. از یک بکاپ سالم بازگردانی کنید. نسخه‌ای که مطمئنید تاریخش پیش از نفوذ است. برای همین است که فقط نگه داشتن بکاپ دیروز کافی نیست و باید نسخه‌های قدیمی‌تر هم در آرشیو باشند.
  5. همهٔ رمزها را عوض کنید. کنترل‌پنل، ناحیهٔ کاربری شرکت، همهٔ حساب‌های FTP، کاربر دیتابیس، مدیران سیستم مدیریت محتوا، و صندوق‌های ایمیل. اگر یکی را جا بگذارید، کل کار بی‌اثر است.
  6. حالا راه ورود را پیدا کنید. از لاگ دسترسی سرور و زمان تغییر فایل‌ها شروع کنید و ببینید کدام افزونه یا مسیر، اولین فایل دستکاری‌شده را ساخته است. تا این را نبندید، بازگردانی فقط تأخیر انداختن است.
  7. بعد از بالا آوردن، بررسی کنید سایت در فهرست سیاه نمانده باشد و در ابزار وبمستر درخواست بازبینی بدهید.

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

پرسش‌های متداول

آیا هاست ایران از هاست خارج امن‌تر است؟

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

سایت من کوچک است؛ چرا باید کسی سراغش بیاید؟

چون کسی سراغ شما نیامده. اسکن‌های خودکار کل اینترنت را دنبال نسخه‌های آسیب‌پذیر می‌گردند و اندازهٔ سایت برایشان بی‌اهمیت است. سایت‌های کوچک اغلب برای ارسال هرزنامه یا میزبانی صفحهٔ جعلی استفاده می‌شوند.

افزونه‌های امنیتی وردپرس واقعاً لازم‌اند؟

یکی، بله؛ سه تا، نه. افزونهٔ امنیتی سالم کارهایی مثل محدود کردن تلاش ورود و پایش تغییر فایل را ساده می‌کند. اما نصب چند افزونهٔ امنیتی هم‌زمان معمولاً تداخل می‌سازد، سایت را کند می‌کند و هیچ‌کدام هم جای به‌روزرسانی را نمی‌گیرد.

هاستم می‌گوید مصرف منابعم بالا رفته. یعنی هک شده‌ام؟

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

روی سرور مجازی چه چیزی اضافه می‌شود؟

وصلهٔ سیستم‌عامل، تنظیم فایروال، بستن ورود مستقیم کاربر ریشه، و پایش سرویس‌ها — همه به عهدهٔ شماست. اگر تیم فنی ندارید، پلن مدیریت‌شده بخرید یا در هاست اشتراکی بمانید. پیش‌نیازها را در راهنمای خرید سرور مجازی جمع کرده‌ایم.

جمع‌بندی: مسیر تصمیم

  1. مشخص کنید کدام ستون جدول بالا مال شماست. اگر سرور مجازی دارید، سهمتان بزرگ‌تر است.
  2. رمز کنترل‌پنل و ناحیهٔ کاربری را عوض کنید و ورود دومرحله‌ای را روشن کنید.
  3. گواهی SSL و ریدایرکت به نسخهٔ امن را چک کنید؛ تمدید خودکار را هم ببینید.
  4. افزونه‌های بی‌استفاده را حذف و بقیه را به‌روز کنید. هر چیز کرک‌شده را بردارید.
  5. سطح دسترسی فایل‌ها، فهرست‌شدن پوشه‌ها و محدودیت تلاش ورود را یک بار درست تنظیم کنید.
  6. یک بکاپ بیرونی و آزمایش‌شده داشته باشید. بدون آن، همهٔ مراحل بالا فقط کاهش احتمال است، نه راه برگشت.
  7. اگر میزبان فعلی جواب سؤال‌های امنیتی‌تان را نمی‌دهد، در یابندهٔ هاست گزینه‌های دیگر را ببینید.

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

آماده‌اید قیمت‌ها را ببینید؟ جدول هاست

مطالب مرتبط

بکاپ سایت: چه چیزی، هر چند وقت، و کجا نگه داریم

بکاپ میزبان مال شما نیست و نسخه‌ای که روی همان سرور مانده بکاپ حساب نمی‌شود. اینجا می‌گوییم چه بگیرید، کجا نگه دارید و چطور مطمئن شوید کار می‌کند.

آپتایم و SLA هاست: عدد ۹۹٫۹ درصد واقعاً یعنی چه؟

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

واژه‌نامهٔ هاست: ۵۲ اصطلاحی که موقع خرید هاست می‌بینید

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

انتقال هاست بدون قطعی سایت: چک‌لیست عملی

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