رفتن به محتوای اصلی
کرگدن | ارائه‌کننده سرورهای ابری و اختصاصی
بهترین روش‌ها برای افزایش امنیت SSH در سرورهای لینوکس: راهنمای کامل و کاربردی

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

افزایش امنیت SSH (Secure Shell) برای جلوگیری از حملات و دسترسی‌های غیرمجاز به سرور، امری ضروری است. در ادامه، چندین روش کاربردی برای بالا بردن امنیت SSH را مرور می‌کنیم.

افزایش امنیت SSH (Secure Shell) برای جلوگیری از حملات و دسترسی‌های غیرمجاز به سرور، امری ضروری است. در ادامه، چندین روش کاربردی برای بالا بردن امنیت SSH را مرور می‌کنیم.

1. غیرفعال کردن ورود با رمز عبور (Password Authentication)

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

پس از تنظیم کلید SSH، مراحل زیر را دنبال کنید:

  • فایل پیکربندی SSH را با استفاده از ویرایشگر متنی باز کنید:

sudo nano /etc/ssh/sshd_config
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

  • خط زیر را پیدا کنید و مقدار آن را به no تغییر دهید:
PasswordAuthentication no
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید
 
  • سرویس SSH را مجدداً راه‌اندازی کنید تا تغییرات اعمال شوند:
sudo systemctl restart ssh
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

این کار باعث می‌شود که ورود با رمز عبور غیرفعال شود و تنها کاربرانی که کلید SSH معتبر دارند، بتوانند وارد شوند.

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

کلیدهای SSH جایگزین ایمن‌تری برای رمزهای عبور هستند. برای ایجاد کلید SSH، از دستور زیر در سیستم محلی خود استفاده کنید:

ssh-copy-id username@server_ip
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید
 

پس از این کار، می‌توانید بدون وارد کردن رمز عبور، به سرور متصل شوید.

3. تغییر پورت پیش‌فرض SSH (Port 22)

پورت پیش‌فرض SSH، یعنی پورت 22، یکی از اهداف متداول برای حملات است. تغییر این پورت می‌تواند امنیت را بهبود بخشد، زیرا حمله‌کنندگان معمولاً پورت 22 را جستجو می‌کنند.

برای تغییر پورت SSH:

فایل پیکربندی SSH را باز کنید

sudo nano /etc/ssh/sshd_config
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

خط Port 22 را پیدا کنید و پورت دلخواه خود را جایگزین کنید، مثلاً:

Port 2222
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

سرویس SSH را مجدداً راه‌اندازی کنید:

sudo systemctl restart ssh
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید
 به یاد داشته باشید که فایروال سرور نیز باید پورت جدید را اجازه دهد:
sudo ufw allow 2222/tcp
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید
 

4. فعال کردن احراز هویت دو مرحله‌ای (2FA)

با فعال‌سازی احراز هویت دو مرحله‌ای (Two-Factor Authentication)، می‌توانید یک لایه امنیتی دیگر به SSH اضافه کنید. این کار از ابزارهایی مانند Google Authenticator یا Duo استفاده می‌کند.

برای نصب Google Authenticator:


برای نصب Google Authenticator:

      1. ابزار PAM مورد نیاز برای احراز هویت دو مرحله‌ای را نصب کنید:

sudo apt install libpam-google-authenticator
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید
  • سپس با اجرای دستور زیر، کد QR خود را دریافت کنید:

  • google-authenticator
    برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید
  • تنظیمات PAM را ویرایش کنید:

  • sudo nano /etc/pam.d/sshd
    برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید
     
  • خط زیر را به ابتدای فایل اضافه کنید:

  • auth required pam_google_authenticator.so
    برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید
     
  • فایل sshd_config را ویرایش کرده و این تنظیمات را تغییر دهید:

  • ChallengeResponseAuthentication yes
    برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید
     
     
  • سرویس SSH را مجدداً راه‌اندازی کنید.

  • 5. محدود کردن دسترسی با استفاده از فایروال (UFW)

    برای محدود کردن دسترسی به SSH، می‌توانید از فایروال UFW استفاده کنید تا فقط IPهای مشخص به سرور شما دسترسی داشته باشند.

      • برای اجازه دسترسی از یک IP خاص:

    sudo ufw allow from your_ip_address to any port 22
    برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید
  • فعال‌سازی فایروال:

  • sudo ufw enable
    برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

    6. استفاده از Fail2Ban برای جلوگیری از حملات Brute Force

    Fail2Ban ابزاری است که تلاش‌های ناموفق برای ورود به SSH را شناسایی کرده و IPهای مشکوک را مسدود می‌کند.

    • برای نصب Fail2Ban:

    sudo apt install fail2ban
    برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید
  • سپس فایل پیکربندی را ویرایش کنید:

  • sudo nano /etc/fail2ban/jail.local
    برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید
  • تنظیمات مربوط به SSH را اضافه کنید:

  • [sshd] enabled = true port = 22 filter = sshd logpath = /var/log/auth.log maxretry = 3
    برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید
     
  • Fail2Ban را راه‌اندازی کنید:

  • sudo systemctl restart fail2ban
    برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

    7. استفاده از TCP Wrappers برای محدود کردن دسترسی IPها

    TCP Wrappers یک ابزار ساده برای محدود کردن دسترسی بر اساس آدرس IP است. شما می‌توانید با ویرایش فایل‌های /etc/hosts.allow و /etc/hosts.deny دسترسی به SSH را محدود کنید.

    • اجازه دسترسی به یک IP خاص در hosts.allow:

    sshd: your_ip_address
    برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید
  • مسدود کردن همه دسترسی‌ها به غیر از IPهای مجاز در hosts.deny:

  • sshd: ALL
    برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

    8. غیرفعال کردن ورود مستقیم با کاربر Root

    به دلایل امنیتی، توصیه می‌شود ورود مستقیم با کاربر Root را غیرفعال کنید و به جای آن از یک کاربر با دسترسی sudo استفاده کنید.

    برای غیرفعال کردن ورود Root:

    1. فایل sshd_config را باز کنید:

    sudo nano /etc/ssh/sshd_config
    برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید
  • خط زیر را پیدا کنید و مقدار آن را به no تغییر دهید:

  • PermitRootLogin no
    برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید
  • سپس سرویس SSH را مجدداً راه‌اندازی کنید:

  • sudo systemctl restart ssh
    برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

    نتیجه‌گیری

    افزایش امنیت SSH از طریق استفاده از کلیدهای SSH، غیرفعال کردن ورود با رمز عبور، تغییر پورت، فعال‌سازی 2FA و استفاده از ابزارهایی مانند Fail2Ban و TCP Wrappers می‌تواند به جلوگیری از دسترسی‌های غیرمجاز و حملات احتمالی کمک کند. این اقدامات به شما این اطمینان را می‌دهد که سرور لینوکس شما به بهترین شکل از حملات محافظت می‌شود.