مقدمه
سرورهای لینوکسی معمولاً از راه دور و با استفاده از 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 در این مسیر قرار دارد:
و فایل تنظیمات کاربر:
قبل از تغییر، از فایلها بکاپ بگیرید:
cp ~/.ssh/config ~/.ssh/config.bak
فایل تنظیمات را باز کنید:
غیرفعال کردن X11 Forwarding
ForwardX11Trusted no
این قابلیت اجرای برنامههای گرافیکی از راه دور را فراهم میکند ولی معمولاً لازم نیست و میتواند خطر امنیتی ایجاد کند.
غیرفعال کردن SSH Tunneling
اگر از تونل SSH استفاده نمیکنید، بهتر است غیرفعال شود.
غیرفعال کردن Agent Forwarding
این کار جلوی سوءاستفاده سرور مقصد از SSH Agent شما را میگیرد.
غیرفعال کردن روشهای احراز هویت اضافی
HostbasedAuthentication no
این روشها معمولاً استفاده نمیشوند و حذفشان سطح حمله را کمتر میکند.
جلوگیری از ارسال متغیرهای محیطی
اطمینان حاصل کنید که این گزینه غیرفعال باشد:
فعال کردن بررسی دقیق Host Key
این تنظیم باعث میشود اگر کلید سرور تغییر کرد، SSH به شما هشدار دهد.
بعد از اعمال تنظیمات، فایل را ذخیره کنید و بررسی کنید که خطای syntax نداشته باشد:
مرحله دوم: محدود کردن Cipherهای مجاز
فایل تنظیمات را باز کنید:
این خط را اضافه کنید:
این تنظیم الگوریتمهای رمزنگاری قدیمی و ناامن را غیرفعال میکند.
برای تست:
مرحله سوم: امنسازی سطح دسترسی فایلهای SSH
بررسی سطح دسترسی فایل تنظیمات اصلی:
باید خروجی شبیه این باشد:
اگر متفاوت بود:
sudo chmod 644 /etc/ssh/ssh_config
تنظیم دسترسی فایل تنظیمات کاربر
اگر لازم بود:
chmod 644 ~/.ssh/config
تنظیم دسترسی کلید خصوصی SSH
باید:
اگر نبود:
chmod 600 ~/.ssh/id_rsa
این بخش بسیار مهم است، چون اگر کلید خصوصی در دسترس دیگران باشد، میتوانند به سرورهایتان وصل شوند.
مرحله چهارم: محدود کردن اتصالهای خروجی SSH
فایل تنظیمات کاربر را باز کنید:
در انتهای فایل اضافه کنید:
Hostname localhost
این تنظیم باعث میشود فقط به هاستهای مشخصشده بتوانید SSH بزنید و سایر آدرسها بلاک شوند.
تست اتصال:
اگر درست کار کند:
نتیجهگیری
در این آموزش موارد زیر را برای امنسازی OpenSSH Client انجام دادید:
- غیرفعال کردن قابلیتهای غیرضروری
- حذف الگوریتمهای رمزنگاری ضعیف
- محدود کردن سطح دسترسی فایلهای SSH
- جلوگیری از اتصال به هاستهای ناشناس
این تنظیمات باعث میشود:
- اتصال SSH شما امنتر شود
- احتمال حملات MITM کمتر شود
- خطاهای انسانی کاهش یابد
- کلیدهای خصوصی بهتر محافظت شوند
از همراهی شما با پارمین کلود سپاسگزاریم.
نظرات کاربران