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

هر سرور، حتی اگر فقط یک وب‌سایت یا سرویس محدود را میزبانی کند، باید از حداقل اصول امنیتی پیروی کند. در این مقاله، ده اقدام کاربردی برای کاهش سطح حمله (Attack Surface) و بهبود وضعیت امنیتی VPS معرفی می‌شوند.

یک سرور متصل به اینترنت، همیشه در معرض آزمون است

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

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

به همین دلیل، سخت‌سازی سرور (Server Hardening) باید از زمان راه‌اندازی آغاز شود و در تمام دوره بهره‌برداری ادامه پیدا کند.

ده اقدام ضروری برای سخت‌سازی سرور

۱. به‌روزرسانی منظم سیستم‌عامل و نرم‌افزارها

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

اقدامات پیشنهادی:

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

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

۲. محدود کردن دسترسی مستقیم Root

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

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

اقدامات پیشنهادی:

  • برای هر مدیر سرور حساب کاربری مستقل ایجاد کنید.
  • دسترسی مدیریتی را فقط به کاربران موردنیاز بدهید.
  • استفاده مستقیم و غیرضروری از حساب Root را محدود کنید.
  • دسترسی کاربران خارج‌شده از مجموعه را لغو کنید.
  • مجوزهای فایل‌ها و پوشه‌های حساس را به‌صورت دوره‌ای بازبینی کنید.

۳. استفاده از احراز هویت قوی

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

برای اتصال SSH در سرورهای لینوکسی، استفاده از کلید عمومی و خصوصی (SSH Key Authentication) معمولاً انتخاب مناسب‌تری نسبت به اتکای صرف به گذرواژه است.

اقدامات پیشنهادی:

  • برای کاربران مدیریتی از کلید SSH استفاده کنید.
  • کلید خصوصی را در اختیار افراد دیگر قرار ندهید.
  • در صورت امکان، احراز هویت چندعاملی (MFA) را برای پنل‌های مدیریتی و VPN فعال کنید.
  • گذرواژه‌های قوی و منحصربه‌فرد به کار ببرید.
  • کلیدهای قدیمی یا متعلق به کاربران غیرفعال را حذف یا تعویض کنید.

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

۴. تنظیم دقیق فایروال

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

اقدامات پیشنهادی:

  • سیاست پیش‌فرض را بر مسدودسازی ارتباطات ورودی غیرضروری قرار دهید.
  • فقط پورت‌های موردنیاز مانند HTTP، HTTPS و پورت مدیریتی کنترل‌شده را باز بگذارید.
  • دسترسی به پورت‌های مدیریتی را در صورت امکان به IPهای مشخص محدود کنید.
  • قوانین فایروال را مستند و به‌صورت دوره‌ای بازبینی کنید.
  • از بازماندن پورت‌های آزمایشی و سرویس‌های موقت جلوگیری کنید.

در سیستم‌های لینوکسی می‌توان متناسب با توزیع و نیاز عملیاتی از ابزارهایی مانند UFW یا nftables استفاده کرد.

۵. محدود کردن دسترسی از راه دور

سرویس‌های مدیریتی مانند SSH و RDP از جمله نقاط حساس یک سرور هستند. اگر این سرویس‌ها بدون کنترل مناسب در معرض اینترنت قرار بگیرند، ممکن است هدف حملات حدس گذرواژه، سرقت اعتبارنامه یا سوءاستفاده از آسیب‌پذیری‌ها باشند.

برای کاهش ریسک:

  • دسترسی مدیریتی را در صورت امکان به VPN یا شبکه مدیریتی محدود کنید.
  • در صورت نیاز، دسترسی را به IPهای مشخص مجاز محدود کنید.
  • از احراز هویت قوی و ثبت رویدادهای ورود استفاده کنید.
  • سرویس‌های مدیریتی را بدون نیاز عملیاتی در معرض اینترنت قرار ندهید.
  • دسترسی کاربران و مدیران را متناسب با مسئولیت آن‌ها تعریف کنید.

تغییر شماره پورت SSH به‌تنهایی یک کنترل امنیتی کافی نیست و نباید جایگزین احراز هویت قوی و محدودسازی دسترسی شود.

۶. حذف سرویس‌ها و نرم‌افزارهای غیرضروری

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

اقدامات پیشنهادی:

  • سرویس‌های در حال اجرا را بررسی کنید.
  • نرم‌افزارها و بسته‌های غیرضروری را حذف کنید.
  • سرویس‌هایی را که استفاده نمی‌شوند غیرفعال کنید.
  • پورت‌های باز را به‌صورت دوره‌ای بررسی کنید.
  • پس از نصب نرم‌افزار جدید، تنظیمات شبکه و دسترسی آن را بازبینی کنید.

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

۷. استفاده از کنترل‌های امنیتی سیستم‌عامل

سیستم‌عامل‌های مدرن ابزارهایی برای محدودکردن دسترسی برنامه‌ها به منابع سیستم در اختیار مدیران قرار می‌دهند.

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

این رویکرد باعث می‌شود در صورت آسیب‌پذیری یا نفوذ به یک برنامه، دامنه دسترسی آن به سایر بخش‌های سیستم محدودتر باشد.

اقدامات پیشنهادی:

  • وضعیت فعال‌بودن ابزارهای کنترل دسترسی سیستم‌عامل را بررسی کنید.
  • پروفایل‌های امنیتی متناسب با سرویس‌های نصب‌شده را فعال کنید.
  • دسترسی برنامه‌ها به فایل‌ها و مسیرهای حساس را محدود کنید.
  • از اجرای سرویس‌ها با سطح دسترسی Root، در صورت غیرضروری بودن، خودداری کنید.

در کنار AppArmor، فناوری‌هایی مانند SELinux نیز در برخی توزیع‌های لینوکس برای اعمال سیاست‌های کنترل دسترسی اجباری (MAC) استفاده می‌شوند.

۸. رمزنگاری ارتباطات

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

برای سرویس‌های وب، استفاده از HTTPS مبتنی بر TLS امکان رمزنگاری ارتباط و اعتبارسنجی هویت سرور را فراهم می‌کند.

اقدامات پیشنهادی:

  • برای وب‌سایت‌ها و APIها از HTTPS استفاده کنید.
  • گواهی دیجیتال معتبر نصب کنید.
  • تاریخ انقضای گواهی‌ها را پایش کنید و تمدید به‌موقع آن‌ها را در نظر بگیرید.
  • از پروتکل‌ها و تنظیمات رمزنگاری قدیمی و ناامن اجتناب کنید.
  • ارتباطات مدیریتی و انتقال فایل را نیز با پروتکل‌های امن برقرار کنید.

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

۹. ثبت و پایش رویدادهای امنیتی

ثبت رویدادها (Logging) و پایش مستمر (Monitoring) کمک می‌کنند فعالیت‌های غیرعادی شناسایی شوند و مدیر سرور بتواند در زمان مناسب واکنش نشان دهد.

رویدادهایی که بهتر است ثبت و بررسی شوند عبارت‌اند از:

  • تلاش‌های ورود موفق و ناموفق
  • تغییرات حساب‌های کاربری و سطح دسترسی
  • اجرای دستورات مدیریتی حساس
  • تغییر تنظیمات فایروال و سرویس‌ها
  • خطاهای مجوزدهی و دسترسی به فایل‌های حساس
  • افزایش غیرعادی مصرف CPU، RAM یا شبکه

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

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

۱۰. تهیه نسخه پشتیبان امن و آزمایش بازیابی

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

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

اقدامات پیشنهادی:

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

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

امنیت، یک اقدام مقطعی نیست

سخت‌سازی سرور (Server Hardening) فرایندی مستمر است. تغییر در نرم‌افزارها، ایجاد کاربران جدید، انتشار سرویس‌های تازه و بازشدن پورت‌های جدید می‌تواند وضعیت امنیتی سیستم را تغییر دهد.

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

راهنمای امنیت Ubuntu Server بر مدیریت کاربران، پیکربندی فایروال و استفاده از AppArmor تأکید می‌کند. توصیه‌های CISA نیز محدودکردن سرویس‌های در معرض اینترنت، به‌روزرسانی نرم‌افزارها و کنترل دسترسی‌های راه دور را از اقدامات مهم کاهش ریسک می‌دانند.

نتیجه‌گیری

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

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

اول‌سرور؛ زیرساختی متناسب با نیاز امروز و مسیر رشد فردای کسب‌وکار شما.

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