نحوه امن‌سازی (Harden) کلاینت OpenSSH در Ubuntu 18.04

مقدمه

سرورهای لینوکسی معمولاً از راه دور و با استفاده از SSH مدیریت می‌شوند؛ یعنی از طریق اتصال به OpenSSH Server که نرم‌افزار پیش‌فرض SSH در توزیع‌هایی مثل Ubuntu، Debian، CentOS و FreeBSD است.

معمولاً تمرکز اصلی روی امن‌سازی سمت سرور SSH است، چون SSH درگاه ورود به سرور محسوب می‌شود.
اما امن‌سازی سمت کلاینت هم اهمیت زیادی دارد.

OpenSSH Client همان سمت کلاینت SSH است؛ یعنی همان دستور ssh.

امن‌سازی SSH در سمت سرور برای جلوگیری از دسترسی مهاجمان به سرور انجام می‌شود، اما در سمت کلاینت هدف محافظت از اتصال SSH و سیستم کاربر در برابر تهدیدهایی مثل این‌هاست:

  • حملات مرد میانی (Man-in-the-Middle)
  • سرورهای مخرب یا آلوده که داده‌های غیرعادی ارسال می‌کنند
  • خطاهای انسانی مثل اشتباه در آدرس سرور یا تنظیمات

در این آموزش یاد می‌گیرید چگونه OpenSSH Client را امن‌تر کنید تا اتصال‌های خروجی SSH تا حد ممکن ایمن باشند.


پیش‌نیازها

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

یک دستگاه کلاینت SSH، مثل:

  • کامپیوتر شخصی
  • سرور Bastion یا Jump Host
  • سرور Ubuntu 18.04 با دسترسی sudo

و یک سرور مقصد SSH، مثل:

  • سرور ابری
  • سرویس‌هایی مثل GitHub یا GitLab
  • دستگاهی که اجازه دسترسی به آن دارید

مرحله اول: امن‌سازی عمومی تنظیمات OpenSSH Client

فایل اصلی تنظیمات SSH Client در این مسیر قرار دارد:

/etc/ssh/ssh_config

و فایل تنظیمات کاربر:

~/.ssh/config

قبل از تغییر، از فایل‌ها بکاپ بگیرید:

sudo cp /etc/ssh/ssh_config /etc/ssh/ssh_config.bak
cp ~/.ssh/config ~/.ssh/config.bak

فایل تنظیمات را باز کنید:

sudo nano /etc/ssh/ssh_config

غیرفعال کردن X11 Forwarding

ForwardX11 no
ForwardX11Trusted no

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


غیرفعال کردن SSH Tunneling

Tunnel no

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


غیرفعال کردن Agent Forwarding

ForwardAgent no

این کار جلوی سوءاستفاده سرور مقصد از SSH Agent شما را می‌گیرد.


غیرفعال کردن روش‌های احراز هویت اضافی

GSSAPIAuthentication no
HostbasedAuthentication no

این روش‌ها معمولاً استفاده نمی‌شوند و حذفشان سطح حمله را کمتر می‌کند.


جلوگیری از ارسال متغیرهای محیطی

اطمینان حاصل کنید که این گزینه غیرفعال باشد:

# SendEnv

فعال کردن بررسی دقیق Host Key

StrictHostKeyChecking ask

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


بعد از اعمال تنظیمات، فایل را ذخیره کنید و بررسی کنید که خطای syntax نداشته باشد:

ssh -G .

مرحله دوم: محدود کردن Cipherهای مجاز

فایل تنظیمات را باز کنید:

sudo nano /etc/ssh/ssh_config

این خط را اضافه کنید:

Ciphers -arcfour*,-*cbc

این تنظیم الگوریتم‌های رمزنگاری قدیمی و ناامن را غیرفعال می‌کند.

برای تست:

ssh -G .

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

بررسی سطح دسترسی فایل تنظیمات اصلی:

stat -c “%a %A %U:%G” /etc/ssh/ssh_config

باید خروجی شبیه این باشد:

644 -rw-r–r– root:root

اگر متفاوت بود:

sudo chown root:root /etc/ssh/ssh_config
sudo chmod 644 /etc/ssh/ssh_config

تنظیم دسترسی فایل تنظیمات کاربر

stat -c “%a %A %U:%G” ~/.ssh/config

اگر لازم بود:

chown user:user ~/.ssh/config
chmod 644 ~/.ssh/config

تنظیم دسترسی کلید خصوصی SSH

stat -c “%a %A %U:%G” ~/.ssh/id_rsa

باید:

600 -rw——- user:user

اگر نبود:

chown user:user ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa

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


مرحله چهارم: محدود کردن اتصال‌های خروجی SSH

فایل تنظیمات کاربر را باز کنید:

nano ~/.ssh/config

در انتهای فایل اضافه کنید:

Match host !203.0.113.1,!192.0.2.1,!server1.your-domain,!github.com,*
Hostname localhost

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

تست اتصال:

ssh disallowed.your-domain

اگر درست کار کند:

Cannot connect to localhost: connection refused

نتیجه‌گیری

در این آموزش موارد زیر را برای امن‌سازی OpenSSH Client انجام دادید:

  • غیرفعال کردن قابلیت‌های غیرضروری
  • حذف الگوریتم‌های رمزنگاری ضعیف
  • محدود کردن سطح دسترسی فایل‌های SSH
  • جلوگیری از اتصال به هاست‌های ناشناس

این تنظیمات باعث می‌شود:

  • اتصال SSH شما امن‌تر شود
  • احتمال حملات MITM کمتر شود
  • خطاهای انسانی کاهش یابد
  • کلیدهای خصوصی بهتر محافظت شوند

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

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

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

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

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