در قسمت اول، پایههای مدیریت VPS را بنا کردیم. بعد از انجام تنظیمات اولیه، مهمترین سؤال این است:
آیا سرور در حال حاضر امن است؟
واقعیت این است که از همان لحظه ای که سرور شما به اینترنت متصل میشود، بهصورت خودکار توسط باتها و اسکریپت ها اسکن میشود؛ بدون اینکه سرور شما شناخته شده باشد یا حتی هنوز سرویسی روی آن اجرا کرده باشید. بر اساس گزارشهای امنیتی، یک سرور تازه راه اندازی شده با تنظیمات پیش فرض، بسته به موقعیت جغرافیایی، میتواند در کمتر از ۵۲ ثانیه تا ۲۰ دقیقه پس از اتصال به اینترنت، اولین حمله brute force را تجربه میکند. شاید باور نکنید، اما هکرها حتی قبل از اینکه شما اولین نرمافزار را نصب کنید، سرور شما را پیدا کردهاند!
حالا باید سراغ مهمترینرین لایه دفاعی سرور برویم: ایمن سازی دسترسی ها، SSH و فایروال.
هدف این مقاله این است که VPS شما به یک سرور کنترل شده و امن تبدیل شود.
چرا امنیت VPS ضروری است؟
یکی از بزرگترین اشتباهات رایج این است که بگوییم:
به عنوان مثال سایت من کوچک است، پس کسی کاری با سرور من ندارد!
باید بدانید بخش بزرگی از حملات امروزی:
- خودکار هستند
- بخش قابل توجهی از این حملات هدف مشخصی ندارند یا همهگیر شده اند و فقط به دنبال سرور های ضعیف میگردند
اما بخش دیگری از حملات هدفمند هستند. این حملات هدف مشخصی دارند و معمولاً توسط هکرهای حرفه ای تر، گروه های سازمان یافته یا دولت ها انجام میشوند.
اگر تنظیمات امنیتی پایه را انجام نداده باشید، VPS شما دقیقاً همان هدفی است که این اسکریپت ها دنبال آن هستند.
پس امنیت سرور یعنی:
- تلاشهای مشکوک بهصورت خودکار مسدود شوند
- فقط کاربران مجاز بتوانند وارد شوند
- فقط پورتهای ضروری باز باشند
ایمن کردن SSH؛ حیاتی ترین نقطه ورود
SSH مهمترین درگاه ورود به VPS است. اگر این بخش بهدرستی ایمن نشود، سایر اقدامات امنیتی تقریباً بی فایده خواهند بود.
تغییر پورت پیشفرض SSH
بهصورت پیش فرض، SSH روی پورت 22 فعال است. این پورت اولین گزینهای است که تمام بات ها آن را اسکن میکنند.
ویرایش تنظیمات SSH
فایل تنظیمات SSH را باز کنید در این فایل، خط #Port 22 را پیدا کرده و آن را به پورت دلخواه خود تغییر دهید. میتوانید بهجای 2885 از هر پورت آزاد دیگری (بین 1025 تا 65535) استفاده کنید.
sudo nano /etc/ssh/sshd_config
Uncomment the line #Port 22 and change it to your preferred port:
Port 2885

سپس سرویس SSH را ریستارت کنید:
sudo systemctl restart ssh
نکته بسیار مهم:
قبل از بستن ترمینال فعلی، در یک پنجره جدید با پورت جدید تست اتصال بگیرید.
برای تست اتصال میتوانید از روش زیر استفاده کنید:
ssh -vvv -p 2885 user@server_ip
فلگهای -v در SSH برای Verbose mode (حالت با جزئیات) استفاده میشوند، سطوح Verbose:
-v : سطح اول – اطلاعات پایه
-vv : سطح دوم – جزئیات بیشتر
-vvv : سطح سوم – حداکثر جزئیات (برای رفع اشکال)
هشدار، اگر پس از تغییر پورت SSH و ریستارت، در پنجره جدید نتوانستید وصل شوید:
- اگر پنجره قبلی هنوز باز است، فایل کانفیگ را دوباره باز کنید و پورت را به ۲۲ برگردانید، سپس ریستارت کنید.
- اگر هر دو پنجره بسته شدند، باید از Web Console یا VNC دیتاسنتر استفاده کنید. اکثر شرکت های ارائهدهنده VPS (مثل DigitalOcean، Vultr، Hetzner) در کنترل پنل خود گزینه “Web Console” یا “VNC Access” دارند.
غیرفعال کردن ورود مستقیم با کاربر root
ورود مستقیم با کاربر root یکی از بزرگترین ریسکهای امنیتی است. در قسمت اول مدیریت VPS یک کاربر جدید ساختیم؛ حالا وقت استفاده جدی از آن است.
در همان فایل تنظیمات SSH، عبارت PermitRootLogin را پیدا کرده و مقدار آن را از yes به no تغییر دهید:
PermitRootLogin no
سپس مجدداً SSH را ریستارت کنید:
sudo systemctl restart ssh
از این پس:
- ورود مستقیم با root ممکن نیست
- فقط کاربران عادی + sudo اجازه مدیریت دارند
احراز هویت با SSH Key (توضیح مختصر)
SSH Key یک کلید رمزنگاریشده است که جایگزین رمز عبور میشود. با فعالسازی آن، حتی اگر کسی رمز عبور شما را حدس بزند، بدون داشتن کلید خصوصی نمیتواند وارد سرور شود.
اگر میخواهید امنیت SSH را یک پله بالاتر ببرید، استفاده از SSH key بهجای رمز عبور توصیه میشود. برای فعالسازی SSH Key میتوانید به مقاله زیر مراجعه کنید:
آموزش راه اندازی SSH Key و تغییر پورت در اوبونتو (3 گام)
فایروال چیست و چرا بدون آن VPS ناامن است؟
فایروال مثل نگهبان ورودی سرور عمل میکند:
- مشخص میکند چه ترافیکی اجازه ورود دارد
- و چه چیزی باید مسدود شود
بدون فایروال:
- تمام پورتها بالقوه در دسترس هستند
- حتی سرویسهایی که استفاده نمیکنید
راهاندازی فایروال با UFW (روش استاندارد Ubuntu)
در اوبونتو، سادهترین و مطمئنترین ابزار فایروال UFW (Uncomplicated Firewall) است.
بررسی وضعیت فایروال
sudo ufw status
اگر خروجی inactive بود، یعنی فایروال هنوز فعال نیست.
تعریف سیاستهای پیشفرض (بسیار مهم)
sudo ufw default deny incoming
sudo ufw default allow outgoing
معنی این تنظیم:
یعنی هر درخواستی که از بیرون به سرور شما بیاید (مثلاً کسی بخواهد به سایت شما دسترسی پیدا کند یا به SSH وصل شود) مسدود است، مگر اینکه شما صریحاً اجازه داده باشید. اما سرور شما میتواند هر درخواستی به بیرون بدهد (مثلاً برای آپدیت شدن یا پاسخ دادن به یک کاربر).
اجازه دسترسی به SSH (پورت جدید)
اگر پورت SSH را مثلاً روی 2885 گذاشتهاید:
sudo ufw allow 2885/tcp
(در صورت نیاز) اجازه دسترسی وب سرور
اگر در آینده وبسرور نصب میکنید:
sudo ufw allow 80
sudo ufw allow 443
فعالسازی فایروال
sudo ufw enable
هشدار: اگر قبل از این مرحله SSH را Allow نکرده باشید، ممکن است دسترسیتان قطع شود.
بررسی نهایی قوانین
sudo ufw status verbose
جلوگیری از حملات Brute Force با Fail2Ban
Fail2Ban ابزاری است که:
- لاگها را بررسی میکند
- IPهایی که تلاش ناموفق مکرر دارند را شناسایی میکند
- آنها را بهصورت خودکار مسدود میکند
نصب Fail2Ban
sudo apt install fail2ban -y
پس از نصب:
- سرویس بهصورت خودکار فعال میشود
- محافظت از SSH بهصورت پیشفرض وجود دارد
Fail2Ban جایگزین فایروال نیست؛ بلکه مکمل آن است.
مشاهده لاگ ها در Fail2Ban
با دستور زیر لاگها به صورت زنده نمایش داده میشوند. برای خروج از حالت زنده، Ctrl+C بزنید:
sudo tail -f /var/log/fail2ban.log
اصل طلایی امنیت: کمترین سطح دسترسی
هرچه:
- پورت کمتر
- سرویس کمتر
- دسترسی محدودتر
در نتیجه امنیت بالاتر.
برای بررسی پورتهای باز:
ss -tuln
خروجی این دستور را با این الگو بخوانید: 0.0.0.0:22 یعنی پورت ۲۲ روی تمام آیپیها باز است. اگر پورتی فقط روی 127.0.0.1 باز باشد (مثل 127.0.0.1:3306) یعنی فقط برای خود سرور قابل دسترس است و از بیرون قابل مشاهده نیست – این همان چیزی است که میخواهیم.
هر پورتی که نمیدانید چرا باز است، باید بررسی و در صورت عدم نیاز بسته شود.
اشتباهات امنیتی رایج در VPSها
این موارد، دلایل اصلی هک شدن سرورها هستند:
- استفاده دائمی از کاربر root
- باز گذاشتن تمام پورتها
- نصب اسکریپت ها و پنل های ناشناس (مثل بسیاری از پنل های تلگرامی یا ربات های فروشی) که اغلب دارای بکدور (Backdoor) هستند. هرگز اسکریپتی را از منبع نامعتبر روی سرور اصلی اجرا نکنید؛ ابتدا در یک محیط آزمایشی بررسی کنید.
- نداشتن بکاپ
- بیتوجهی به لاگها
اگر از همین ابتدا این اشتباهات را مرتکب نشوید، بخش بزرگی از ریسک را حذف کردهاید.
عیبیابی سریع
خطاهای رایج و راهحل
| خطا | مشکل احتمالی | راه حل |
|---|---|---|
ssh: connect to host port 22: Connection refused | پورت اشتباه است یا فایروال مسدود کرده | مطمئن شوید با پورت جدید وصل میشوید و فایروال آن را باز کرده |
Permission denied (publickey) | SSH Key فعال شده ولی شما رمز میزنید | از کلید SSH استفاده کنید یا اگر قصد استفاده از رمز را دارید، تنظیمات SSH را مجدداً بررسی کنید |
sudo: unable to resolve host | نام host درست تنظیم نشده | فایل /etc/hosts را بررسی کنید |
جمعبندی: چکلیست امنیت VPS
قبل از رفتن به مرحله بعد، مطمئن شوید:
- سیستمعامل بهروز است
- ورود root غیرفعال شده
- پورت SSH تغییر کرده
- فایروال فعال است
- فقط پورتهای ضروری باز هستند
- Fail2Ban نصب شده
با تکمیل این مراحل، VPS شما در برابر ۹۰٪ حملات خودکار ایمن شده است. امنیت کامل وجود ندارد، اگر همه این موارد انجام شود، VPS شما از نظر امنیت پایه در وضعیت بسیار خوبی قرار دارد.
قدم بعدی در نقشه راه
در قسمت سوم آموزش مدیریت VPS لینوکس، بر روی ابزارهای مانیتورینگ و عیبیابی کار میکنیم.
Greate post. Keep posting such kind of info on your page.
Im really impressed by it.
Hello there, You’ve done a great job. I’ll certainly digg it and
personally suggest to my friends. I am confident they’ll be
benefited from this web site.