نحوه ایمن‌سازی SSH روی VPS لینوکسی

نویسنده تیم مهندسی ONIE · به‌روزرسانی: 21 آبان 1405 · زمان مطالعه: 3 دقیقه

یک VPS عمومی، چند دقیقه پس از راه‌اندازی، تلاش‌های خودکار ورود را دریافت می‌کند. این مراحل حمله به SSH را بسیار دشوارتر می‌کنند. این راهنما برای Ubuntu یا Debian نوشته شده است. اگر هنوز سروری ندارید، می‌توانید یک VPS لینوکسی اجاره کنید و از یک ایمیج تمیز شروع کنید. تا زمانی که تنظیمات جدید را از یک پنجره دوم آزمایش نکرده‌اید، نشست SSH فعلی خود را باز نگه دارید.

1. ساخت کاربر عادی با sudo

adduser deploy
usermod -aG sudo deploy

2. استفاده از کلید SSH به جای رمز عبور

روی کامپیوتر شخصی خود:

ssh-keygen -t ed25519 -C "you@example.com"
ssh-copy-id deploy@YOUR_SERVER_IP
ssh deploy@YOUR_SERVER_IP

یک‌بار با کلید وارد شوید تا پیش از خاموش‌کردن رمز عبور، از درستی کار آن مطمئن شوید.

3. غیرفعال‌کردن ورود با رمز عبور و ورود root

فایل /etc/ssh/sshd_config.d/99-hardening.conf را بسازید:

PasswordAuthentication no
PermitRootLogin no
PubkeyAuthentication yes
MaxAuthTries 3

syntax را بررسی کنید و سرویس را دوباره بارگذاری کنید. نام سرویس در Ubuntu و Debian برابر با ssh و در سیستم‌های مبتنی بر RHEL برابر با sshd است:

sudo sshd -t && sudo systemctl reload ssh

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

4. فعال‌سازی فایروال

sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow OpenSSH
sudo ufw enable
sudo ufw status verbose

فقط پورت‌های موردنیاز را باز کنید، مثلاً 80 و 443 برای وب‌سرور. همچنین می‌توانید با یک قانون فایروال در کنسول ابری، دسترسی SSH را فقط به آدرس IP خودتان محدود کنید.

5. مسدودکردن تلاش‌های تکراری با Fail2ban

sudo apt install -y fail2ban

فایل /etc/fail2ban/jail.local را بسازید:

[sshd]
enabled = true
maxretry = 5
findtime = 10m
bantime = 1h
sudo systemctl enable --now fail2ban
sudo fail2ban-client status sshd

6. نصب خودکار به‌روزرسانی‌های امنیتی

sudo apt install -y unattended-upgrades
sudo dpkg-reconfigure --priority=low unattended-upgrades

7. موارد اختیاری

  • تغییر پورت SSH نویز لاگ را کم می‌کند، اما به‌تنهایی اقدام امنیتی محسوب نمی‌شود.
  • کلید خصوصی را با عبارت عبور محافظت کنید و یک نسخه پشتیبان از آن را در جای امن نگه دارید.
  • ورودها را با last و sudo journalctl -u ssh --since today بررسی کنید.
  • پس از پیکربندی کامل سرور، یک snapshot بگیرید تا بتوانید به یک پایه تمیز بازگردید.

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

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

آیا غیرفعال‌کردن ورود root امن است؟

بله، به شرطی که ابتدا یک کاربر sudo بسازید و کلید آن را آزمایش کنید. همچنان می‌توانید دستورهای مدیریتی را با sudo اجرا کنید.

اگر فقط از کلید استفاده می‌کنم، آیا به Fail2ban نیاز دارم؟

این گزینه اختیاری است. با غیرفعال‌بودن ورود با رمز عبور، حملهٔ brute force موفق نمی‌شود، اما Fail2ban نویز لاگ و بار سیستم را کاهش می‌دهد.

اگر کلید SSH خود را گم کنم چه کار کنم؟

از کنسول پنل ابری وارد شوید، کلید عمومی جدید را به ~/.ssh/authorized_keys اضافه کنید و کلید قدیمی را حذف کنید.

منابع و مطالعه بیشتر

راهنماهای بیشتر VPS