نحوه ایمنسازی SSH روی VPS لینوکسی
یک VPS عمومی، چند دقیقه پس از راهاندازی، تلاشهای خودکار ورود را دریافت میکند. این مراحل حمله به SSH را بسیار دشوارتر میکنند. این راهنما برای Ubuntu یا Debian نوشته شده است. اگر هنوز سروری ندارید، میتوانید یک VPS لینوکسی اجاره کنید و از یک ایمیج تمیز شروع کنید. تا زمانی که تنظیمات جدید را از یک پنجره دوم آزمایش نکردهاید، نشست SSH فعلی خود را باز نگه دارید.
1. ساخت کاربر عادی با sudo
adduser deploy
usermod -aG sudo deploy2. استفاده از کلید 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 3syntax را بررسی کنید و سرویس را دوباره بارگذاری کنید. نام سرویس در 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 = 1hsudo systemctl enable --now fail2ban
sudo fail2ban-client status sshd6. نصب خودکار بهروزرسانیهای امنیتی
sudo apt install -y unattended-upgrades
sudo dpkg-reconfigure --priority=low unattended-upgrades7. موارد اختیاری
- تغییر پورت SSH نویز لاگ را کم میکند، اما بهتنهایی اقدام امنیتی محسوب نمیشود.
- کلید خصوصی را با عبارت عبور محافظت کنید و یک نسخه پشتیبان از آن را در جای امن نگه دارید.
- ورودها را با
lastوsudo journalctl -u ssh --since todayبررسی کنید. - پس از پیکربندی کامل سرور، یک snapshot بگیرید تا بتوانید به یک پایه تمیز بازگردید.
اگر از دسترسی به سرور خارج شدید، از کنسول مرورگر در پنل ابری خود وارد شوید و پیکربندی را اصلاح کنید. راهنمای محافظت از DDoS ما لایه بعدی دفاع را پوشش میدهد.
پرسشهای متداول
آیا غیرفعالکردن ورود root امن است؟
بله، به شرطی که ابتدا یک کاربر sudo بسازید و کلید آن را آزمایش کنید. همچنان میتوانید دستورهای مدیریتی را با sudo اجرا کنید.
اگر فقط از کلید استفاده میکنم، آیا به Fail2ban نیاز دارم؟
این گزینه اختیاری است. با غیرفعالبودن ورود با رمز عبور، حملهٔ brute force موفق نمیشود، اما Fail2ban نویز لاگ و بار سیستم را کاهش میدهد.
اگر کلید SSH خود را گم کنم چه کار کنم؟
از کنسول پنل ابری وارد شوید، کلید عمومی جدید را به ~/.ssh/authorized_keys اضافه کنید و کلید قدیمی را حذف کنید.