ایمن‌سازی OpenSSH در Ubuntu 24.04 و Ubuntu 26.04

OpenSSH یکی از مهم‌ترین سرویس‌های لینوکسی برای مدیریت و دسترسی از راه دور به سرورها است. از آنجایی که تقریباً تمام سرورهای لینوکسی از SSH برای مدیریت استفاده می‌کنند، این سرویس همواره یکی از اهداف اصلی مهاجمان محسوب می‌شود. اگر تنظیمات SSH به‌درستی انجام نشود، سرور شما ممکن است در معرض حملات Brute Force، تلاش برای ورود غیرمجاز و سوءاستفاده از تنظیمات پیش‌فرض قرار بگیرد.

در این آموزش یاد می‌گیرید چگونه سرویس OpenSSH را در Ubuntu 24.04 LTS و Ubuntu 26.04 به‌صورت اصولی و مطابق با بهترین استانداردهای امنیتی (Best Practices) ایمن کنید.


پیش‌نیازها

قبل از شروع، بهتر است موارد زیر را در اختیار داشته باشید:

  • یک سرور Ubuntu 24.04 یا Ubuntu 26.04
  • یک کاربر دارای دسترسی sudo
  • دسترسی SSH به سرور
  • ترجیحاً یک جفت کلید SSH (Public/Private Key)

نکته مهم: قبل از اعمال هرگونه تغییر روی تنظیمات SSH، یک نشست (Session) SSH دیگر باز نگه دارید تا در صورت بروز خطا، دسترسی خود را از دست ندهید.


مرحله اول: بررسی نصب OpenSSH

ابتدا بررسی کنید که سرویس SSH روی سیستم نصب باشد:

ssh -V

خروجی مشابه زیر خواهد بود:

OpenSSH_9.x

برای بررسی وضعیت سرویس:

sudo systemctl status ssh

اگر سرویس در حال اجرا باشد، عبارت زیر را مشاهده خواهید کرد:

Active: active (running)

نصب OpenSSH در صورت نیاز

اگر سرویس نصب نیست:

sudo apt update
sudo apt install openssh-server -y

پس از نصب، سرویس را فعال کنید:

sudo systemctl enable ssh
sudo systemctl start ssh

و وضعیت آن را بررسی کنید:

sudo systemctl status ssh

مرحله دوم: تهیه نسخه پشتیبان از فایل تنظیمات

قبل از هر تغییری، از فایل تنظیمات نسخه پشتیبان تهیه کنید:

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.backup

در نسخه‌های جدید اوبونتو ممکن است فایل‌های تنظیمات اضافی نیز در مسیر زیر قرار داشته باشند:

/etc/ssh/sshd_config.d/

در صورت استفاده از این پوشه، می‌توانید تنظیمات سفارشی خود را داخل یک فایل جدید مانند:

/etc/ssh/sshd_config.d/security.conf

قرار دهید تا فایل اصلی دست‌نخورده باقی بماند.


مرحله سوم: بررسی صحت فایل تنظیمات

قبل از ویرایش فایل:

sudo sshd -T

این دستور تمام تنظیمات نهایی SSH را نمایش می‌دهد.

برای ویرایش فایل اصلی:

sudo nano /etc/ssh/sshd_config

یا اگر از فایل‌های جداگانه استفاده می‌کنید:

sudo nano /etc/ssh/sshd_config.d/security.conf

مرحله چهارم: تغییر پورت SSH

پورت پیش‌فرض SSH برابر 22 است و تقریباً تمام ربات‌های اینترنتی ابتدا این پورت را اسکن می‌کنند.

برای کاهش حملات خودکار، پورت را تغییر دهید.

مثلاً:

Port 2222

یا

Port 54221

از انتخاب پورت‌های بسیار رایج خودداری کنید.

پس از تغییر، باید فایروال را نیز بروزرسانی کنید (در بخش‌های بعدی انجام خواهیم داد).


مرحله پنجم: غیرفعال کردن ورود مستقیم Root

یکی از مهم‌ترین اقدامات امنیتی، جلوگیری از ورود مستقیم کاربر Root است.

تنظیم زیر را پیدا کنید:

PermitRootLogin yes

آن را به شکل زیر تغییر دهید:

PermitRootLogin no

از این پس ابتدا با کاربر عادی وارد شده و سپس از دستور زیر استفاده کنید:

sudo -i

مرحله ششم: غیرفعال کردن ورود با رمز عبور (در صورت استفاده از SSH Key)

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

ابتدا مطمئن شوید ورود با کلید بدون مشکل انجام می‌شود.

سپس این گزینه را تغییر دهید:

PasswordAuthentication no

همچنین بهتر است:

ChallengeResponseAuthentication no

و

KbdInteractiveAuthentication no

را نیز تنظیم کنید.

در نهایت:

UsePAM yes

را بدون تغییر باقی بگذارید مگر اینکه دلیل خاصی برای تغییر آن داشته باشید.


مرحله هفتم: محدود کردن کاربران مجاز SSH

اگر فقط یک یا چند کاربر باید بتوانند وارد سرور شوند، از گزینه زیر استفاده کنید:

AllowUsers admin

یا برای چند کاربر:

AllowUsers admin deploy backup

همچنین می‌توانید گروه مشخصی را مجاز کنید:

AllowGroups sshusers

این کار سطح حمله را به‌شدت کاهش می‌دهد.


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

یکی از رایج‌ترین حملات علیه SSH، Brute Force Attack است؛ حمله‌ای که در آن ربات‌ها هزاران رمز عبور را برای ورود به سرور امتحان می‌کنند.

OpenSSH امکان محدود کردن تعداد تلاش‌های ناموفق را فراهم کرده است.

در فایل تنظیمات SSH مقادیر زیر را اضافه یا ویرایش کنید:

MaxAuthTries 3
MaxSessions 3
LoginGraceTime 30

هر یک از این تنظیمات عملکرد زیر را دارند:

  • MaxAuthTries: حداکثر تعداد دفعات مجاز برای وارد کردن رمز عبور یا کلید اشتباه
  • MaxSessions: حداکثر تعداد نشست‌های همزمان روی یک اتصال
  • LoginGraceTime: مدت زمانی که کاربر فرصت دارد فرآیند ورود را تکمیل کند

این تنظیمات باعث می‌شوند ربات‌ها فرصت کمتری برای آزمودن رمزهای عبور مختلف داشته باشند.


مرحله نهم: غیرفعال کردن ورود کاربران بدون رمز

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

PermitEmptyPasswords no

این گزینه از ورود کاربرانی که رمز عبور خالی دارند جلوگیری می‌کند.


مرحله دهم: غیرفعال کردن X11 Forwarding

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

X11Forwarding no

غیرفعال کردن این ویژگی سطح حمله را کاهش می‌دهد.


مرحله یازدهم: غیرفعال کردن TCP Forwarding (در صورت عدم نیاز)

SSH می‌تواند برای تونل‌سازی (Tunneling) نیز استفاده شود. اگر به این قابلیت نیازی ندارید، آن را غیرفعال کنید.

AllowTcpForwarding no

همچنین می‌توانید:

PermitTunnel no

را نیز تنظیم کنید.

این گزینه‌ها از سوءاستفاده مهاجمان برای ایجاد تونل‌های مخفی جلوگیری می‌کنند.


مرحله دوازدهم: غیرفعال کردن Agent Forwarding

اگر از SSH Agent Forwarding استفاده نمی‌کنید:

AllowAgentForwarding no

این قابلیت در برخی سناریوها می‌تواند توسط مهاجم برای دسترسی به کلیدهای SSH سوءاستفاده شود.


مرحله سیزدهم: تنظیم Idle Timeout

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

ClientAliveInterval 300
ClientAliveCountMax 2

این تنظیمات یعنی:

  • هر ۳۰۰ ثانیه (۵ دقیقه) وضعیت اتصال بررسی شود.
  • اگر دو بار متوالی پاسخی دریافت نشود، اتصال قطع گردد.

در مجموع، اتصال غیرفعال پس از حدود ۱۰ دقیقه بسته خواهد شد.


مرحله چهاردهم: استفاده از الگوریتم‌های رمزنگاری امن

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

الگوریتم‌های رمزنگاری (Ciphers)

Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes256-ctr

الگوریتم‌های تبادل کلید (KexAlgorithms)

KexAlgorithms sntrup761x25519-sha512,sntrup761x25519-sha512@openssh.com,curve25519-sha256

الگوریتم‌های MAC

MACs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com

این الگوریتم‌ها در نسخه‌های جدید OpenSSH امنیت و عملکرد مناسبی ارائه می‌دهند.

نکته: اگر کلاینت‌های قدیمی به سرور متصل می‌شوند، قبل از اعمال این تنظیمات از سازگاری آن‌ها اطمینان حاصل کنید.


مرحله پانزدهم: استفاده از پروتکل SSH نسخه ۲

نسخه‌های جدید OpenSSH فقط از SSH Protocol Version 2 پشتیبانی می‌کنند و نسخه ۱ سال‌هاست حذف شده است. بنابراین معمولاً نیازی به تنظیم دستی نیست.

اگر گزینه زیر را در فایل تنظیمات مشاهده کردید:

Protocol 2

می‌توانید آن را بدون تغییر باقی بگذارید یا در صورت نبودن، نیازی به افزودن آن ندارید؛ زیرا OpenSSH به‌صورت پیش‌فرض از نسخه ۲ استفاده می‌کند.


مرحله شانزدهم: بررسی صحت فایل تنظیمات

قبل از راه‌اندازی مجدد سرویس، حتماً فایل تنظیمات را بررسی کنید تا خطای نحوی نداشته باشد.

sudo sshd -t

اگر خروجی نمایش داده نشد، یعنی فایل تنظیمات صحیح است.

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

sudo sshd -T

مرحله هفدهم: راه‌اندازی مجدد سرویس SSH

پس از اعمال تغییرات، سرویس را مجدداً راه‌اندازی کنید.

sudo systemctl restart ssh

و وضعیت آن را بررسی کنید:

sudo systemctl status ssh

اطمینان حاصل کنید که سرویس بدون خطا در حال اجرا باشد.


مرحله هجدهم: پیکربندی فایروال (UFW)

اگر پورت SSH را تغییر داده‌اید، قبل از خروج از سرور باید فایروال را نیز به‌روزرسانی کنید؛ در غیر این صورت ممکن است دیگر نتوانید به سرور متصل شوید.

ابتدا وضعیت UFW را بررسی کنید:

sudo ufw status

اگر هنوز UFW فعال نیست:

sudo ufw enable

اگر از پورت پیش‌فرض SSH (22) استفاده می‌کنید:

sudo ufw allow OpenSSH

یا

sudo ufw allow 22/tcp

اما اگر پورت SSH را مثلاً به 2222 تغییر داده‌اید:

sudo ufw allow 2222/tcp

در صورتی که قبلاً پورت 22 را باز گذاشته بودید، بهتر است آن را ببندید:

sudo ufw delete allow 22/tcp

در پایان وضعیت قوانین را بررسی کنید:

sudo ufw status numbered

نمونه خروجی:

Status: active

To                         Action      From
--                         ------      ----
2222/tcp                   ALLOW       Anywhere
80/tcp                     ALLOW       Anywhere
443/tcp                    ALLOW       Anywhere

مرحله نوزدهم: نصب و پیکربندی Fail2Ban

یکی از بهترین ابزارهای امنیتی برای SSH، Fail2Ban است.

این نرم‌افزار با بررسی لاگ‌های سیستم، آدرس IP مهاجمانی را که چندین بار ورود ناموفق داشته باشند، به‌صورت موقت یا دائم مسدود می‌کند.

نصب Fail2Ban

sudo apt update
sudo apt install fail2ban -y

فعال کردن سرویس:

sudo systemctl enable fail2ban
sudo systemctl start fail2ban

ایجاد فایل تنظیمات

هرگز فایل اصلی را ویرایش نکنید.

فایل جدید ایجاد کنید:

sudo nano /etc/fail2ban/jail.local

محتوای زیر را قرار دهید:

[DEFAULT]
bantime = 1h
findtime = 10m
maxretry = 5

[sshd]
enabled = true

معنی هر گزینه:

  • bantime مدت زمان مسدود شدن IP
  • findtime بازه زمانی بررسی
  • maxretry تعداد تلاش ناموفق مجاز

اگر پورت SSH را تغییر داده‌اید

مثلاً روی 2222:

[sshd]
enabled = true
port = 2222

راه‌اندازی مجدد Fail2Ban

sudo systemctl restart fail2ban

بررسی وضعیت:

sudo fail2ban-client status

برای مشاهده وضعیت SSH Jail:

sudo fail2ban-client status sshd

نمونه خروجی:

Status for the jail: sshd

Currently banned: 2
Total banned: 15

مرحله بیستم: بررسی لاگ‌های SSH

در Ubuntu 24.04 و نسخه‌های جدید، ساده‌ترین روش استفاده از journalctl است.

مشاهده آخرین لاگ‌های SSH:

sudo journalctl -u ssh

مشاهده لاگ‌های جدید به‌صورت لحظه‌ای:

sudo journalctl -fu ssh

برای مشاهده تلاش‌های ورود ناموفق:

sudo journalctl -u ssh | grep "Failed"

این لاگ‌ها به شما کمک می‌کنند حملات احتمالی یا خطاهای ورود را شناسایی کنید.


مرحله بیست و یکم: آزمایش اتصال قبل از خروج

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

قبل از بستن نشست فعلی:

  1. یک پنجره یا ترمینال جدید باز کنید.
  2. با تنظیمات جدید به سرور متصل شوید.

مثلاً اگر پورت را تغییر داده‌اید:

ssh username@server-ip -p 2222

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


مرحله بیست و دوم: بررسی تنظیمات امنیتی نهایی

برای مشاهده تنظیمات نهایی که OpenSSH از آن‌ها استفاده می‌کند:

sudo sshd -T

در این خروجی می‌توانید مواردی مانند:

  • Port
  • PasswordAuthentication
  • PermitRootLogin
  • Ciphers
  • MACs
  • KexAlgorithms

را بررسی کنید و مطمئن شوید تنظیمات موردنظر شما اعمال شده‌اند.


چک‌لیست نهایی ایمن‌سازی OpenSSH

پس از پایان تنظیمات، موارد زیر را بررسی کنید:

  • ✅ آخرین نسخه OpenSSH نصب شده است.
  • ✅ سیستم به‌روز است.
  • ✅ از کلید SSH استفاده می‌کنید.
  • ✅ ورود با رمز عبور غیرفعال شده است.
  • ✅ ورود مستقیم Root غیرفعال است.
  • ✅ پورت پیش‌فرض SSH تغییر کرده است.
  • ✅ تعداد تلاش‌های ورود محدود شده است.
  • ✅ نشست‌های غیرفعال به‌صورت خودکار قطع می‌شوند.
  • ✅ فقط کاربران مجاز امکان ورود دارند.
  • ✅ الگوریتم‌های رمزنگاری امن استفاده می‌شوند.
  • ✅ UFW به‌درستی پیکربندی شده است.
  • ✅ Fail2Ban فعال است.
  • ✅ قبل از خروج، اتصال جدید آزمایش شده است.
  • ✅ از فایل تنظیمات نسخه پشتیبان تهیه شده است.

جمع‌بندی

ایمن‌سازی OpenSSH یکی از مهم‌ترین اقدامات برای محافظت از سرورهای لینوکسی است. با انجام تنظیماتی مانند غیرفعال کردن ورود مستقیم Root، استفاده از کلیدهای SSH، محدود کردن تعداد تلاش‌های ورود، تغییر پورت پیش‌فرض، فعال‌سازی فایروال UFW و نصب Fail2Ban، می‌توانید سطح امنیت سرور Ubuntu 24.04 یا Ubuntu 26.04 را به میزان قابل توجهی افزایش دهید.

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

از همراهی شما با پارمین کلود سپاسگزاریم.

Click to rate this post!
[Total: 0 Average: 0]

نظرات کاربران

دیدگاهی بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *