نکات مهم در تامین امنیت SSH در لینوکس

امنیت SSH

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

بخش اول: تنظیمات اولیه و حیاتی

ایمن‌سازی SSH با چند تغییر ساده اما بسیار تاثیرگذار در فایل پیکربندی اصلی آن (معمولا /etc/ssh/sshd_config) آغاز می‌شود.

تغییر پورت پیش‌فرض (Port Change)

یکی از موثرترین گام‌های اولیه، تغییر پورت ۲۲ پیش‌فرض به یک پورت غیرمعمول دیگر است (مثلا ۲۲۲۲ یا یک عدد بین ۴۹۱۵۲ تا ۶۵۵۳۵). این کار حملات خودکار و ربات‌هایی که به طور پیش‌فرض پورت ۲۲ را اسکن می‌کنند را خنثی کرده و امنیت SSH شما را به شدت بالا می‌برد.

  • فایل /etc/ssh/sshd_config را باز کنید.
  • خط Port 22 را پیدا کرده و آن را به پورت دلخواه خود تغییر دهید: Port 54321
  • پس از تغییر، سرویس SSHD و فایروال خود را به‌روزرسانی کنید.

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

ورود مستقیم کاربر root از طریق SSH یک خطر امنیتی بزرگ است، زیرا این حساب بیشترین سطح دسترسی را دارد و هدف اصلی حملات جستجوی فراگیر (Brute-Force) است. معمولا یکی از راه‌های نفوذ به سرور‌های مجازی مناسب کسب و کار، استفاده از حملات Brute Force روی همین یوزر است.

  • در فایل /etc/ssh/sshd_config، مقدار PermitRootLogin را به no تغییر دهید: PermitRootLogin no
  • در عوض، با یک حساب کاربری عادی وارد شوید و در صورت نیاز از دستور sudo استفاده کنید.

محدود کردن کاربران مجاز

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

  • فقط کاربران مشخص: برای اجازه دادن به گروهی از کاربران: AllowUsers user1 user2
  • فقط گروه‌های مشخص: برای اجازه دادن به اعضای یک گروه: AllowGroups sshusers
تامین امنیت SSH

بخش دوم: استفاده از رمزنگاری قوی

رمزهای عبور ضعیف بزرگترین نقطه ضعف در هر سیستمی هستند. استفاده از کلیدهای عمومی/خصوصی یک جایگزین امن‌تر و راحت‌تر است.

احراز هویت مبتنی بر کلید (Key-Based Authentication)

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

  • تولید کلید: با دستور ssh-keygen در سیستم محلی خود یک جفت کلید تولید کنید.
  • انتقال کلید عمومی: با دستور ssh-copy-id user@server کلید عمومی را به سرور منتقل کنید.
  • غیرفعال کردن ورود با رمز عبور: پس از اطمینان از کارکرد صحیح ورود با کلید، احراز هویت با رمز عبور را به طور کامل غیرفعال کنید.

در فایل /etc/ssh/sshd_config:

PasswordAuthentication no PubkeyAuthentication yes

استفاده از عبارت عبور (Passphrase) برای کلید خصوصی

کلید خصوصی شما باید با یک عبارت عبور (Passphrase) محافظت شود. این کار باعث می‌شود حتی در صورت به سرقت رفتن کلید خصوصی، مهاجم نتواند از آن استفاده کند، مگر اینکه عبارت عبور را بداند.

بخش سوم: دفاع فعال و پیشرفته

برای مقابله با حملات Brute-Force و جلوگیری از دسترسی‌های مکرر، باید از ابزارهای دفاع فعال استفاده کرد.

نصب و پیکربندی Fail2Ban

Fail2Ban ابزاری ضروری است که لاگ‌های سرور را اسکن می‌کند و آدرس‌های IPای که تلاش‌های مکرر و ناموفق برای ورود به SSH (یا سایر سرویس‌ها) دارند را به طور موقت یا دائم در فایروال مسدود می‌کند.

  • نصب: آن را روی سیستم خود نصب کنید (معمولا با دستور apt install fail2ban یا yum install fail2ban).
  • پیکربندی: در فایل تنظیمات Fail2Ban، تعداد تلاش‌های مجاز (maxretry) و مدت زمان مسدودسازی (bantime) را بر اساس نیازهای امنیت SSH خود تنظیم کنید.

استفاده از احراز هویت چند عاملی (Multi-Factor Authentication – MFA)

MFA لایه امنیتی نهایی است. این کار مستلزم آن است که کاربران علاوه بر دانستن یک چیز (کلید یا رمز عبور)، یک چیز دیگر (مثل یک کد یک‌بار مصرف از یک برنامه موبایل مانند Google Authenticator) را نیز داشته باشند.

  • شما می‌توانید ماژول PAM را در لینوکس نصب و پیکربندی کنید تا MFA را برای SSH اجباری کند. این اقدام امنیت SSH را به طور چشمگیری افزایش می‌دهد.
پیکربندی درست امنیت SSH

بخش چهارم: سخت‌گیری در پیکربندی

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

محدود کردن زمان بیکاری (Idle Timeout)

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

  • از دستورالعمل ClientAliveInterval برای تعیین تعداد ثانیه‌هایی که سرور منتظر پاسخ کلاینت می‌ماند و ClientAliveCountMax برای تعیین تعداد دفعات ارسال پیام زنده استفاده کنید. ClientAliveInterval 300 (۵ دقیقه) ClientAliveCountMax 0 (در صورت عدم پاسخ، قطع می‌شود)

استفاده از MACهای قوی‌تر و الگوریتم‌های رمزنگاری به‌روز

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

  • MAC (Message Authentication Codes): از الگوریتم‌های قوی مانند hmac-sha2-512-etm@openssh.com استفاده کنید.
  • Ciphers: از aes256-gcm@openssh.com یا chacha20-poly1305@openssh.com به جای الگوریتم‌های قدیمی‌تر مانند CBC استفاده کنید.
  • Key Exchange (Kex) Algorithms: از الگوریتم‌های مدرن مانند diffie-hellman-group-exchange-sha256 یا منحنی‌های بیضوی (ECDH) استفاده کنید.

غیرفعال کردن فورواردینگ X11 و TCP (Disable X11 and TCP Forwarding)

اگر به قابلیت‌های X11 یا فورواردینگ TCP نیازی ندارید، آنها را غیرفعال کنید تا سطح حملات بالقوه (Attack Surface) را کاهش دهید.

  • AllowTcpForwarding no
  • X11Forwarding no
 امنیت SSH و نگهداری و مانیتورینگ سرور

بخش پنجم: نگهداری و مانیتورینگ

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

به‌روزرسانی منظم سیستم و SSHD

اطمینان حاصل کنید که سیستم عامل لینوکس و بسته SSHD همیشه به آخرین نسخه‌های پایدار به‌روزرسانی شده‌اند تا از آسیب‌پذیری‌های امنیتی جدید جلوگیری شود.

مانیتورینگ فعال لاگ‌ها

به طور منظم لاگ‌های SSH (معمولا در /var/log/auth.log یا /var/log/secure) را بررسی کنید تا هرگونه تلاش مشکوک برای ورود را شناسایی کنید. استفاده از ابزارهای مدیریت لاگ می‌تواند این فرآیند را خودکار و آسان‌تر کند.

 استفاده از ابزارهای اسکن امنیتی

از ابزارهایی مانند ssh-audit برای اسکن پیکربندی SSHD خود استفاده کنید تا نقاط ضعف، الگوریتم‌های قدیمی یا ضعیف را شناسایی کنید و یک گزارش دقیق از وضعیت امنیت SSH خود به دست آورید.

 نتیجه‌گیری و جمع‌بندی

تامین امنیت SSH در لینوکس نه تنها یک توصیه، بلکه یک ضرورت برای هر مدیر سیستمی است. با اجرای ترفندهای ذکر شده، از تغییر پورت پیش‌فرض و غیرفعال کردن روت گرفته تا استفاده از احراز هویت مبتنی بر کلید و ابزارهای دفاع فعال مانند Fail2Ban، شما یک لایه دفاعی بسیار مستحکم در برابر اکثریت حملات سایبری ایجاد خواهید کرد. به یاد داشته باشید که امنیت یک وضعیت ایستا نیست؛ بلکه یک فرآیند دینامیک است که نیازمند توجه و به‌روزرسانی مداوم است.

سوالات متداول

01SSH چیست؟

SSH مخفف Secure Shell است و یک پروتکل شبکه رمزنگاری شده برای اجرای سرویس‌های شبکه به صورت ایمن بر روی یک شبکه ناامن است. معمولا از آن برای دسترسی از راه دور به سرورهای لینوکس و اجرای دستورات استفاده می‌شود.

 

02چرا تغییر پورت SSH پیش‌فرض (۲۲) مهم است؟

پورت ۲۲ هدف اصلی حملات جستجوی فراگیر (Brute-Force) خودکار است. تغییر این پورت به یک پورت غیرمعمول، ترافیک حمله را به میزان قابل توجهی کاهش می‌دهد و مهاجمان را مجبور به انجام اسکن‌های هدفمندتر و زمان‌بر می‌کند که این کار امنیت را افزایش می‌دهد.

 

03احراز هویت مبتنی بر کلید SSH چگونه از رمز عبور امن‌تر است؟

کلیدهای SSH شامل یک جفت کلید خصوصی و عمومی هستند که بسیار طولانی‌تر و پیچیده‌تر از رمزهای عبور معمول هستند و عملاً نمی‌توان آن‌ها را با حدس زدن یا حملات Brute-Force شکست داد. کلید خصوصی همچنین می‌تواند با یک عبارت عبور (Passphrase) محافظت شود که لایه امنیتی دیگری اضافه می‌کند.

 

04Fail2Ban دقیقا چه کاری برای امنیت SSH انجام می‌دهد؟

Fail2Ban یک ابزار پیشگیری از نفوذ است که فایل‌های لاگ سرور را اسکن می‌کند. اگر تعداد تلاش‌های ورود ناموفق (مثلا وارد کردن رمز عبور اشتباه) از یک آدرس IP مشخص از یک حد مجاز فراتر رود، Fail2Ban آن آدرس IP را به طور موقت یا دائم در فایروال مسدود می‌کند. این کار به طور موثر از حملات Brute-Force جلوگیری می‌کند.

 

05آیا غیرفعال کردن ورود کاربر Root از طریق SSH کافی است؟

غیرفعال کردن ورود مستقیم کاربر Root یک گام حیاتی است، اما کافی نیست. باید از حساب‌های کاربری عادی با رمزهای عبور یا کلیدهای قوی استفاده کنید و تنها در صورت لزوم با دستور sudo یا su به دسترسی Root ارتقا پیدا کنید. همچنین باید ورود را فقط برای کاربران مجاز محدود کنید.

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

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

logo
ثبت نام ناحیه کاربری ارسال تیکت راهنمای خرید
ناحیه کاربری
ثبت نامناحیه کاربریداشبورد ابریارسال تیکتتماس تلفنی
تماس با ما
مشاوره تلفنی 1779 | 79625000
واحد مارکتینگ داخلی 1
واحد مشتریان داخلی 2
مالی و اداری داخلی 3
منابع انسانی داخلی 4