فارسی (Farsi)
€EUR

امن‌سازی اتصال SSH

3 min
سرور مجازی (VPS/VDS)

امن‌سازی اتصال SSH برای جلوگیری از حملات brute force

پورت پیش‌فرض SSH (22) اغلب هدف حملات خودکار brute force است. این راهنما به شما یاد می‌دهد پورت SSH را تغییر دهید و گزینه‌های امنیتی بیشتری برای محافظت از سرور خود پیکربندی کنید.

📋 پیش‌نیازها

  • یک سرور VPS با دسترسی root یا sudo
  • یک اتصال SSH فعال
  • UFW نصب و پیکربندی‌شده (آموزش نصب UFW را ببینید)

⚠️ مهم: یک نشست SSH را باز نگه دارید

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

دو ترمینال SSH را به‌طور موازی باز کنید:

  • ترمینال 1: نشست کاری (برای انجام تغییرات)
  • ترمینال 2: نشست پشتیبان (برای مواقع اضطراری)

🔧 تغییر پورت SSH

مرحله 1: انتخاب پورت جدید

پورتی بین 1024 و 65535 انتخاب کنید. پورت‌های رایجی که باید از آن‌ها پرهیز کرد:

  • 22 (پورت پیش‌فرض SSH، بسیار هدف حمله)
  • 80 و 443 (HTTP/HTTPS)
  • 3306 و 5432 (پایگاه‌های داده)

نمونه پورت‌های امن: 2222، 2200، 1022، 5000

مرحله 2: ویرایش پیکربندی SSH

Bash
# Éditer le fichier de configuration SSH sudo nano /etc/ssh/sshd_config

مرحله 3: تغییر پورت

خط #Port 22 را پیدا کنید و آن را تغییر دهید:

# Avant
#Port 22

# Après (remplacez 2222 par votre port choisi)
Port 2222

نکته: در nano برای جستجوی "Port 22" از Ctrl + W استفاده کنید

مرحله 4: ذخیره و خروج

در nano:

  • Ctrl + X برای خروج
  • Y برای تأیید
  • Entrée برای ذخیره

مرحله 5: بررسی نحو (syntax)

Bash
# Vérifier que la configuration est valide sudo sshd -t

اگر این دستور هیچ خطایی برنگرداند، پیکربندی شما درست است.

مرحله 6: مجاز کردن پورت جدید در UFW

Bash
# Autoriser le nouveau port SSH (remplacez 2222 par votre port) sudo ufw allow 2222/tcp # Optionnel : Supprimer l'ancien port 22 si vous ne l'utilisez plus sudo ufw delete allow 22/tcp # Recharger UFW sudo ufw reload # Vérifier que la règle est active sudo ufw status | grep 2222

مرحله 7: ری‌استارت سرویس SSH

Bash
# Redémarrer SSH avec la nouvelle configuration sudo systemctl restart sshd # Vérifier que SSH fonctionne toujours sudo systemctl status sshd

مرحله 8: آزمایش اتصال جدید

در یک ترمینال جدید، اتصال را با پورت جدید آزمایش کنید:

Bash
# Remplacez 2222 par votre port et utilisateur@votre-ip par vos identifiants ssh -p 2222 utilisateur@votre-ip

اگر اتصال برقرار شد، می‌توانید نشست قدیمی روی پورت 22 را ببندید.

🔒 گزینه‌های امنیتی بیشتر

غیرفعال کردن ورود root

مهم: غیرفعال کردن ورود root از طریق SSH یک روش امنیتی عالی است. پیش از انجام این تغییر مطمئن شوید یک کاربر با sudo پیکربندی کرده‌اید.

Bash
# Éditer la configuration SSH sudo nano /etc/ssh/sshd_config # Chercher et modifier cette ligne PermitRootLogin no # Sauvegarder et redémarrer sudo sshd -t sudo systemctl restart sshd

محدود کردن تلاش‌های اتصال

Bash
sudo nano /etc/ssh/sshd_config # Ajouter ou modifier ces lignes MaxAuthTries 3 # Maximum 3 tentatives de connexion LoginGraceTime 30 # Délai de 30 secondes pour se connecter

غیرفعال کردن احراز هویت با رمز عبور (فقط استفاده از کلیدهای SSH)

Bash
sudo nano /etc/ssh/sshd_config # Modifier cette ligne PasswordAuthentication no PubkeyAuthentication yes

توجه: این گزینه را فقط در صورتی فعال کنید که یک کلید SSH پیکربندی کرده و از کارکرد آن مطمئن شده باشید!

استفاده فقط از نسخه 2 پروتکل SSH

Bash
sudo nano /etc/ssh/sshd_config # Ajouter cette ligne (si elle n'existe pas) Protocol 2

غیرفعال کردن تونل‌های X11 (اگر به آن‌ها نیاز ندارید)

Bash
sudo nano /etc/ssh/sshd_config # Modifier cette ligne X11Forwarding no

پیکربندی کامل پیشنهادی

در اینجا یک پیکربندی کامل و امن SSH آمده که باید به /etc/ssh/sshd_config اضافه شود:

# Port SSH personnalisé
Port 2222

# Désactiver root login
PermitRootLogin no

# Limites de connexion
MaxAuthTries 3
LoginGraceTime 30

# Désactiver l'authentification par mot de passe (si vous utilisez des clés SSH)
# PasswordAuthentication no
# PubkeyAuthentication yes

# Protocole SSH version 2 uniquement
Protocol 2

# Désactiver X11 forwarding
X11Forwarding no

# Désactiver les tunnels TCP
AllowTcpForwarding no

# Temps d'inactivité avant déconnexion
ClientAliveInterval 300
ClientAliveCountMax 2

پس از هر تغییر، فراموش نکنید که:

Bash
# Vérifier la syntaxe sudo sshd -t # Redémarrer SSH sudo systemctl restart sshd

🔄 ایجاد کاربر با sudo (در صورت نیاز)

اگر ورود root را غیرفعال کرده‌اید، مطمئن شوید یک کاربر با دسترسی‌های sudo دارید:

Bash
# Créer un nouvel utilisateur sudo adduser monutilisateur # Ajouter l'utilisateur au groupe sudo sudo usermod -aG sudo monutilisateur # Tester que l'utilisateur peut utiliser sudo su - monutilisateur sudo whoami # Devrait afficher "root"

✅ بررسی نهایی

بررسی کارکرد SSH

Bash
# Vérifier le statut du service sudo systemctl status sshd # Vérifier que SSH écoute sur le bon port sudo netstat -tlnp | grep ssh # ou sudo ss -tlnp | grep ssh # Vérifier la configuration sudo sshd -T | grep port

بررسی لاگ‌های SSH

Bash
# Voir les tentatives de connexion sudo tail -f /var/log/auth.log # Voir les connexions réussies sudo grep "Accepted" /var/log/auth.log # Voir les tentatives échouées sudo grep "Failed" /var/log/auth.log

🛡️ محافظت بیشتر با fail2ban

fail2ban ابزاری است که IPهایی را که حملات brute force انجام می‌دهند به‌طور خودکار مسدود می‌کند.

نصب fail2ban

Bash
sudo apt update sudo apt install fail2ban -y

پیکربندی پایه

Bash
# Copier le fichier de configuration sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local # Éditer la configuration sudo nano /etc/fail2ban/jail.local

پیکربندی پیشنهادی برای SSH:

INI
1[sshd] 2enabled = true 3port = 2222 # Votre nouveau port SSH 4maxretry = 3 # Nombre de tentatives avant bannissement 5bantime = 3600 # Temps de bannissement en secondes (1 heure) 6findtime = 600 # Fenêtre de temps pour compter les tentatives (10 minutes)

فعال‌سازی fail2ban

Bash
# Démarrer fail2ban sudo systemctl start fail2ban # Activer au démarrage sudo systemctl enable fail2ban # Vérifier le statut sudo systemctl status fail2ban # Voir les IPs bannies sudo fail2ban-client status sshd

🆘 عیب‌یابی

دیگر نمی‌توانم با SSH وصل شوم

اگر از سرور بیرون مانده‌اید:

  1. از نشست پشتیبان خود استفاده کنید (ترمینال 2 که باز نگه داشته‌اید)

  2. اگر نشست پشتیبان ندارید:

    • با پشتیبانی Infrawire و اطلاعات ورود خود تماس بگیرید
    • از کنسول VNC/KVM در پنل کنترل خود استفاده کنید
    • مستقیم وصل شوید و پیکربندی قبلی را بازگردانید:
      Bash
      sudo nano /etc/ssh/sshd_config # Remettez Port 22 sudo systemctl restart sshd

پورت SSH پاسخ نمی‌دهد

Bash
# Vérifier que SSH écoute sur le port sudo netstat -tlnp | grep ssh # Vérifier que le port est ouvert dans UFW sudo ufw status | grep 2222 # Vérifier les logs SSH sudo journalctl -u sshd -n 50

باید موقتاً با پورت قدیمی وصل شوم

اگر پیش از حذف پورت قدیمی (22) باید با آن وصل شوید:

Bash
# Autoriser temporairement le port 22 sudo ufw allow 22/tcp # Vous connecter ssh -p 22 utilisateur@votre-ip # Une fois connecté, supprimer la règle sudo ufw delete allow 22/tcp

📚 منابع بیشتر

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

پرسش: برای SSH چه پورتی انتخاب کنم؟
پاسخ: پورتی بین 1024 و 65535 انتخاب کنید. از پورت‌های رایج (80، 443، 3306 و غیره) پرهیز کنید. پورت‌هایی مانند 2222، 2200 یا 1022 انتخاب‌های خوبی هستند.

پرسش: آیا می‌توانم یک پورت را برای چند سرویس استفاده کنم؟
پاسخ: خیر، هر سرویس باید پورت منحصربه‌فرد خودش را داشته باشد.

پرسش: آیا واقعاً باید پورت SSH را تغییر دهم؟
پاسخ: به‌شدت توصیه می‌شود. این کار حملات خودکار brute force را به‌طور چشمگیری کاهش می‌دهد.

پرسش: اگر پورت را تغییر داده‌ام، آیا fail2ban لازم است؟
پاسخ: خیر، اما یک لایه امنیتی اضافی توصیه‌شده است.

پرسش: چگونه از یک کلاینت SSH با پورت جدید وصل شوم؟
پاسخ: از گزینه -p استفاده کنید: ssh -p 2222 utilisateur@votre-ip


امن‌سازی موفق! 🚀

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

مشاهده تخفیف‌ها

ما از کوکی استفاده می‌کنیم

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