سرور مجازی (vps) یک نوع منبع کامپیوتری است که فیزیکی نیست، بلکه بر روی یک سرور فیزیکی واقعی ایجاد شده و به نظر میرسد که یک سرور مستقل است. این کار با استفاده از نرمافزار مجازیسازی انجام میشود. و به دلابل مختلف که در ادامه خواهیم گفت باید امنیت سرور مجازی حفظ شود.
تصور کنید یک خانه بزرگ دارید (که این خانه نمایانگر یک سرور فیزیکی است) و در این خانه، چندین اتاق جداگانه به وجود آوردهاید (که هر اتاق نمایانگر یک سرور مجازی است). هر اتاق میتواند مستقل از دیگری و با تنظیمات مختلف باشد. به عبارت دیگر، در یک سرور فیزیکی میتوان چندین سرور مجازی با سیستمعاملها و برنامههای مختلف راهاندازی کرد، به طوری که هر یک از این سرورها فکر میکند که تنها سروری است که بر روی این سختافزار در حال اجرا است.
بیشتر بخوانید: سرور مجازی چیست؟
منظور از امنیت سرورهای مجازی چیست؟
امنیت سرور مجازی به مجموعهای از روشها، فرآیندها و ابزارها اطلاق میشود که با هدف حفاظت از منابع و دادههای موجود در یک سرور مجازی به کار گرفته میشوند.
به طور خلاصه، امنیت سرور مجازی به مفهوم حفاظت از منابع و اطلاعات موجود در سرور مجازی در برابر دسترسیهای غیرمجاز، تهدیدات و آسیبپذیریها است.
راهکارهای افزایش امنیت سرور مجازی
افزایش امنیت سرور مجازی کامل و طولانی مطلب حیاتی است. در ادامه چند گام پیشنهادی برای افزایش امنیت سرور مجازی آورده شدهاست:
1. بهروز رسانی نرمافزارها و سیستمعامل:
همیشه از آخرین نسخههای نرمافزارها و سیستمعامل استفاده کنید.
مثال: برای بهروز رسانی سیستمعامل لینوکس، میتوانید از دستور `sudo apt update && sudo apt upgrade` استفاده کنید.
2. تنظیمات فایروال:
برای افزایش امنیت در یک سرور مجازی با استفاده از فایروال، شما باید مراقب باشید که فقط به سرویسهای ضروری دسترسی داشته باشید و سایر پورتها را مسدود کنید. در اینجا چند گام کلی برای تنظیم فایروال در یک سرور مجازی آورده شده است:
2-1نصب و فعالسازی UFW (Uncomplicated Firewall):
برای نصب:
sudo apt install ufw
برای فعالسازی:
sudo ufw enable
2-2 مسدود کردن همه ارتباطات بهطور پیشفرض:
sudo ufw default deny incoming
sudo ufw default allow outgoing
2-3 اجازه دسترسی به سرویسهای مورد نیاز:
برای مثال، اگر شما میخواهید فقط به SSH، HTTP و HTTPS دستریسی داشته باشید:
sudo ufw allow ssh
sudo ufw allow http
sudo ufw allow https
یا اگر SSH را در یک پورت خاص اجرا میکنید، مانند 2222:
sudo ufw allow 2222/tcp
2-4 محدود کردن دسترسی بر اساس آدرس IP:
اگر فقط میخواهید یک آدرس IP خاص به سرور دسترسی داشته باشد، مانند برای SSH:
sudo ufw allow from 123.456.78.90 to any port 22
2-5 اجازه یا مسدود کردن ارتباطات برای یک نرمافزار مشخص:
اگر UFW اپلیکیشنهای مشخصی را شناسایی کند، شما میتوانید به صورت خاص به آنها دستریسی دهید یا آنها را مسدود کنید. به طور مثال:
sudo ufw allow 'Nginx Full'
2-6 بررسی قوانین و وضعیت فایروال:
برای مشاهده قوانین فعال:
sudo ufw status
برای مشاهده قوانین با شمارهها:
sudo ufw status numbered
2-7 حذف یا ویرایش قوانین:
اگر میخواهید یک قاعده خاص را حذف کنید، از شماره قاعده در خروجی `ufw status numbered` استفاده کنید:
sudo ufw delete [number]
توجه داشته باشید که همیشه پیش از تغییرات اساسی در فایروال، از تنظیمات خود پشتیبان بگیرید و در موارد احتمالی مشکل، برای دسترسی به سرور خود یک راه دیگری در نظر بگیرید.
3. استفاده از احراز هویت دو مرحلهای:
برای دسترسی به سرور، از احراز هویت دو مرحلهای استفاده کنید.
مثال: افزونههایی مثل `Google Authenticator` برای SSH در لینوکس وجود دارد.
4. محدود کردن دسترسی SSH:
فقط به کاربرهای مورد نیاز اجازه دسترسی به SSH دهید و استفاده از گذرواژههای قوی تأکید داشته باشید. برای محدود کردن دسترسی SSH در سرور مجازی (و همچنین در سرورهای فیزیکی)، میتوانید از روشها و تنظیمات زیر استفاده کنید:
4-1. تغییر پورت پیشفرض SSH:
به جای استفاده از پورت پیشفرض 22، یک پورت دیگری را انتخاب کنید.
– ویرایش فایل sshd_config. : sudo nano /etc/ssh/sshd_config
– تغییر خط Port 22 به مثلاً Port 2222
– سپس، سرویس SSH را با دستور sudo service ssh restart مجدداً راهاندازی کنید.
4-2. محدود کردن دسترسی بر اساس نام کاربری:
– در فایل sshd_config، خطوط زیر را اضافه کنید:
AllowUsers username1 username2
– با استفاده از AllowUsers فقط کاربران مذکور میتوانند وارد شوند.
4-3. محدود کردن دسترسی بر اساس آدرس IP:
– در فایل sshd_config، خطوط زیر را اضافه کنید:
AllowUsers [email protected]
یا:
AllowUsers *@your.ip.address.here
– با استفاده از این تنظیم، فقط آدرسهای IP مذکور میتوانند به سرور SSH وارد شوند.
4-4. محدود کردن دسترسی با استفاده از کلیدهای SSH:
– غیرفعال کردن ورود با گذرواژه و اجبار به استفاده از کلیدهای SSH.
– در فایل sshd_config، تنظیمات زیر را اعمال کنید:
PasswordAuthentication no
4-5. استفاده از فایروال:
– استفاده از یک فایروال مانند `UFW` برای محدود کردن دسترسی به پورت SSH.
– مثلاً برای الحاق دسترسی فقط از یک آدرس IP خاص به پورت 22:
sudo ufw allow from your.ip.address.here to any port 22
بعد از هر تغییری که در فایل `sshd_config` ایجاد کردید، مطمئن شوید که سرویس SSH را مجدداً راهاندازی کنید.
نکته: همیشه پیش از اعمال تغییرات، از تنظیمات فعلی پشتیبان بگیرید و مطمئن شوید که در یک جلسه SSH دیگر به سرور وصل هستید تا در صورت مشکلات احتمالی قادر به رفع مشکل باشید.
5. تغییر پورت SSH پیشفرض:
به جای استفاده از پورت 22، پورت دیگری را استفاده کنید. تغییر پورت SSH به 2222 در فایل `/etc/ssh/sshd_config`.
6. جلوگیری از ورود بهصورت رمز نشده:
برای جلوگیری از ورود به سرور مجازی با استفاده از ارتباطهای رمز نشده، شما باید اطمینان حاصل کنید که تمام ارتباطها و ورودها از طریق پروتکلهای امن و رمزگذاری شده انجام میشوند. در مورد SSH، میتوانید از راهنماییهای زیر پیروی کنید:
6-1. استفاده از کلیدهای SSH:
بهجای استفاده از گذرواژه، استفاده از کلیدهای SSH مطمئنتر است. اولاً یک جفت کلید عمومی/خصوصی ایجاد کنید و کلید عمومی را به سرور اضافه کنید. سپس ورود با گذرواژه را غیرفعال کنید. در فایل sshd_config:
PasswordAuthentication no
6-2 استفاده از پروتکل SSH نسخه 2:
SSH نسخه 1 مشکلات امنیتی دارد. مطمئن شوید که فقط از نسخه 2 پشتیبانی میکنید. در فایل sshd_config:
Protocol 2
6-3 محدود کردن رمزهای رمزگذاری و توکنهای مورد پذیرش:
شما میتوانید مشخص کنید که کدام الگوریتمهای رمزگذاری مجاز هستند. در فایل sshd_config:
Ciphers aes256-ctr,aes192-ctr,aes128-ctr
6-4 استفاده از سیستمهای مدیریت تأیید هویت:
استفاده از سیستمهای مانند PAM (Pluggable Authentication Modules) برای اعمال سیاستهای امنیتی مختلف.
6-5. استفاده از اتصالات TLS/SSL برای سرویسهای دیگر:
برای سرویسهایی مانند وب سرور، پایگاه داده یا ایمیل، از اتصالات TLS یا SSL استفاده کنید تا اطمینان حاصل شود که ارتباطات رمزگذاری شدهاند.
با پیادهسازی این راهنماییها، شما میتوانید اطمینان حاصل کنید که ورود به سرور مجازی شما از طریق ارتباطات رمز نشده امکانپذیر نیست. همیشه در ذهن داشته باشید که بهروزرسانی نرمافزارها و سیستمعامل به طور منظم نیز بخش مهمی از یک استراتژی امنیتی موثر است.
7. نصب IDS/IPS:
نصب سیستمهای تشخیص نفوذ و پیشگیری از نفوذ مثل `Fail2Ban` یا `Snort`.
8. بررسی منظم لاگها:
بهطور دورهای لاگهای سرور را بررسی کنید تا از هر گونه فعالیت مشکوک آگاه شوید.
9. پشتیبانگیری:
بهطور منظم از دادهها و تنظیمات سرور پشتیبان بگیرید.
10. استفاده از نرمافزارهای امنیتی:
نرمافزارهایی مثل `ClamAV` برای جلوگیری از ویروسها و `rkhunter` برای جلوگیری از rootkits.
با انجام این گامها، میتوانید امنیت سرور مجازی خود را به طور قابل توجهی افزایش دهید.
بیشتر بخوانید: تفاوت سرور مجازی و هاست اشتراکی
چرا امنیت سرور مجازی اهمیت دارد؟
امنیت در سرورهای مجازی اهمیت زیادی دارد. سرورها اغلب اطلاعات حساسی نگهداری میکنند و هرگونه نقص در امنیت میتواند سبب دسترسی ناخواسته به اطلاعات، سوءاستفاده توسط هکرها، یا حتی توقف خدمات شود. از دیگر آسیبهای احتمالی، آسیب به نام و شهرت سازمان، افزایش هزینههای ناگهانی مانند جریمهها یا هزینههای قانونی و نقض مقررات قانونی است. بنابراین، تأمین امنیت مناسب در سرورهای مجازی نه تنها به حفظ اطلاعات و خدمات کمک میکند، بلکه از نظر اقتصادی نیز برای سازمانها و کسبوکارها حیاتی است.
سخن پایانی
امنیت سرور مجازی به معنای حفاظت از دادهها، منابع و خدماتی است که روی یک ماشین مجازی اجرا میشود. با توجه به افزایش استفاده از سرورهای مجازی در دنیای دیجیتال، محافظت از این سرورها در برابر تهدیدات مختلف، از جمله نفوذ به سیستم، حملات DDoS و سوءاستفادههای مختلف، بسیار حیاتی است. دسترسی نادرست به یک سرور مجازی میتواند منجر به دزدیده شدن اطلاعات حساس، از دست دادن اعتماد کاربران و همچنین هزینههای قابل توجهی شود. بنابراین، استفاده از تکنیکها و ابزارهای مناسب امنیتی برای محافظت از سرورهای مجازی الزامی است تا از دادهها و منابع حفاظت شود و بتوان با خیال آسوده در محیطی امن عملکردی مطمئن داشت.