هرآنچه باید درباره کلید SSH و OpenSSH بدانید

در این مقاله میخوانید
اگر زمان زیادی را در حوزه فناوری اطلاعات و با ظهور زیرساختهای ابری مانند AWS صرف کرده باشید، احتمالاً با واژه کلیدهای SSH مواجه شدهاید. ممکن است از خودتان بپرسید که کلید SSH چیست؟ OpenSSH چیست؟ خطرهای مرتبط با کلیدهای SSH کداماند؟ دستورالعملهای NIST برای مدیریت کلید SSH چیست؟
کلید SSH اعتبارنامه احراز هویتی است که در پروتکل SSH استفاده میشود و برای پلتفرمهای Infrastructure-as-a-Service یا IaaS مدرن مانند AWS و Google Cloud و Azure مهم است. بهبیان بهتر، از کلیدهای SSH برای مدیریت سیستمعاملها و شبکهها و پیکربندیها استفاده میکنند. در این مقاله از وبلاگ پارس پک، قصد داریم شما را با OpenSSH و کلید SSH آشنا کنیم و به تمامی سؤالها و ابهامهای شما پاسخ دهیم؛ پس تا پایان با ما همراه باشید.
OpenSSH چیست؟
SSH مخفف عبارت Secure Shell و ابزاری برای مدیریت امن سیستم و انتقال فایل و سایر ارتباطات ازطریق اینترنت یا دیگر شبکههای نامعتبر است. درحقیقت، این کلید احراز هویتها و رمزهای عبور و دادههای ارسالشده را رمزگذاری میکند تا امکان شنود و سرقت آنها وجود نداشته باشد.
برنامه OpenSSH پیادهسازی متنبازی از پروتکل SSH است. اولینبار فردی به نام تاتو یلونن (Tatu Ylonen) نسخه رایگان این برنامه را ساخت و سپس تیم برنامهنویسی OpenBSD و جامعه کاربران آن را توسعه دادند. تاتو یلونن SSH Communications Security را برای پشتیبانی تجاری شرکتها توسعه داد و بعدها نسخه اصلی به Tectia SSH تکامل یافت.
نسخه تجاری از پلتفرمهای Windows و IBM mainframe (z/OS) و گواهیهای X.509 و احراز هویت کارت هوشمند (مانند کارتهای CAC و PIV) پشتیبانی میکند. نسخه متنباز بهصورت کد منبع یا باینریهای ازپیشکامپایلشده با مجوز BSD-style ارائه میشود. تیم اجرایی پروژه خدمات پشتیبانی به کاربران ارائه نمیدهد؛ اما پشتیبانیهای انجمنهای امنیتی مختلف وب دردسترس کاربران قرار دارد که درصورت هرگونه مشکل، میتوانند سؤالاتشان را با این انجمنها مطرح و راهنماییهای لازم را دریافت کنند.
برای آموزش کامل تنظیم کلیدهای SSH در اوبونتو مقالهی زیر را از دست ندهید.
کلید SSH چیست؟
کلید SSH مکانیسم احراز هویتی براساس کلیدهای رمزنگاریشده ارائه میدهد که به آن «احراز هویت کلید عمومی» (Public Key) میگویند. در این مکانیسم، یک یا چند کلید عمومی ممکن است بهعنوان کلیدهای مجاز پیکربندی شوند. برای مثال، کلید خصوصی مربوط به کلید مجاز بهعنوان کلید احراز هویت برای سرور عمل میکند. معمولاً هم کلیدهای مجاز و هم کلیدهای خصوصی در دایرکتوری ssh. و دایرکتوری اصلی کاربر ذخیره میشوند.
معمولاً چنین کلیدهایی مانند رمزهای عبور فانتزی هستند؛ یعنی فقط رمزعبور را نمیتوان از شبکه دزدید و به آن دسترسی پیدا کرد. همچنین امکان رمزنگاری کلید خصوصی بهصورت لوکال وجود دارد؛ بهطوریکه استفاده از آن به فایل و رمزعبور نیاز دارد که فقط برای یک کاربر شناخته شده است. بااینحال، درعمل بیشتر کلیدها بهصورت خودکار استفاده میشوند و رمزعبور ندارند.
به کلیدهایی که برای احراز هویت کاربر استفاده میشوند، «کلیدهای کاربر» (User Keys) میگویند. SSH کلیدهای هاست را برای احراز هویت هاست نیز بهکار میبرد. همه اینها باهم کلیدهای SSH نامیده میشوند. درواقع، کلیدهای SSH جایگزین روش احراز هویت ناامن rhosts شدند که دربرابر حملات فعال در سطح شبکه آسیبپذیر و دسترسی به آنها بسیار راحت بود. با جایگزینشدن کلیدهای SSH بهجای rhosts امنیت اینترنت و سیستمهای اطلاعاتی سازمانی افزایش چشمگیری پیدا کرد.
موفقیت گسترده پروتکل SSH با این واقعیت همراه بود که OpenSSH بهرایگان به بیشتر سیستمعاملها ارسال میشد و همین امر فقدان خطمشی و نظارت دررابطهبا کلیدهای SSH را در پی داشت. درنتیجه، حسابرسان و مدیران امنیت فناوری اطلاعات بهاندازه کافی به کلیدهای SSH توجه نمیکردند.
در اغلب مواقع، کلیدهای SSH همان سطح دسترسی به نام کاربری و رمزعبور را به حسابهای دارای امتیاز با دسترسی سیستمعامل ارائه میکنند. معمولاً ده برابر کلیدهای SSH رمزعبور وجود دارد. بااینحال، کلیدهای SSH در اکثر پروژههای مدیریت احراز هویت و دسترسی نادیده گرفته شدهاند. آنها به همان نوع فرایندهای مهیاسازی و پایاندادن و بازرسی ممیزی محتاجاند که رمزهای عبور یا هر روش دیگر احراز هویت نیاز دارند.

آشنایی با پروتکل SSH
خطرهای جدی کلیدهای SSH
خطرهای SSH بهدلایل مختلفی ایجاد میشوند و سازمانها را درمعرض خطرهای امنیتی عمده قرار میدهند. برخی از این خطرها عبارتاند از:
- پایان نظارت بر فرایندها و خطمشیهای کلیدهای SSH ارائه و نمایش داده نمیشود.
- بهنظر میرسد تعداد کلیدهای SSH قدیمی موجود همه را شگفتزده میکند. برای مثال، برای یک مشتری، ۳میلیون کلید (۷۵۰هزار جفت کلید متمایز) پیدا شده است. در نمونهای دیگر، برای یکی دیگر از مشتریان ۴.۵میلیون کلید مجاز یافت شد. از قرار معلوم اکثر شرکتهای بزرگ حداقل صدهاهزار کلید دارند؛ اما درواقع خودشان نمیدانند این تعداد کلید دارند. بهخطرانداختن فقط یک کلید برای دستیابی به دسترسی غیرقانونی کافی است.
- بسیاری از کلیدها استفاده نمیشوند و به دسترسیهایی مربوط هستند که هرگز بهدرستی خاتمه داده نشدهاند. در یکی از شرکتهای بزرگ دریافتیم که حدود ۹۰درصد از کل کلیدهای SSH در دوره نظارت ششماهه استفاده نشدهاند.
- هیچکس نمیداند چه کسی کلیدهای خصوصی مرتبط را دارد؛ زیرا کلیدها را میتوان آفلاین نگه داشت.
- کلیدهای SSH معمولاً هرگز تغییر نمیکنند؛ درحالیکه مانند رمزهای عبور، کلیدها نیز باید بهصورت دورهای تغییر کنند (دوره چرخش کلید ششماهه رایج است).
- کلیدهای SSH دسترسی ممتازی را به شما ارائه میدهند. در یکی از شرکتهای بزرگ متوجه شدیم که ۱۰درصد از کل کلیدهای SSH دسترسی root را اعطا میکنند.
- اخیراً بسیاری از بستههای بدافزار در حال جمعآوری کلیدهای SSH هستند.
- از کلیدهای SSH میتوان برای مخفیکردن راههای خروج استفاده کرد. چنین راههای خروجی بدون مدیریت کلید SSH بهاحتمال زیاد هرگز کشف نمیشوند و هیچکس نمیتواند بگوید که راه خروج بوده یا کلیدی که فراموش شده است.
- باتوجهبه تعداد زیاد کلیدها، نمودارهای دسترسی کنترلنشده که ازطریق کلیدها تشکیل شدهاند و این واقعیت که از کلیدها برای کپی دادهها در وبسایتهای بازیابی و سیستمهای پشتیبان استفاده میکنند، ممکن است این کلیدها در چند دقیقه بهصورت خودکار برای گسترش حملهای در سراسر محیط سرور، ازجمله وبسایتهای پشتیبان بهکار برده شوند.
- بسیاری از حوادث سایبری منتشرشده حاکی از آن است که مدیران سیستم از کلیدهای SSH استفاده میکردند و مجرمان مستقیماً کلیدهای SSH را از خودیها میخریدند.
- کلیدهای سرور با مدیریت نامناسب هاستها را درمعرض حملات سطح شبکه قرار میدهد.
آموزش کامل تنظیم SSH در پاورشل مقالهی زیر را از دست ندهید.
دستورالعملهای NIST برای مدیریت کلید SSH
در اواخر سال ۲۰۱۵، NIST دستورالعملهایی با عنوان NIST IR 7966 برای مدیریت و دسترسی خودکار و تعاملی کلیدهای SSH منتشر کرد. دستورالعملهای NIST مشکل را توضیح میدهند و چهارچوبی برای رسیدگی به مدیریت کلید SSH ایجاد میکنند.
مدیریت کلید SSH
OpenSSH چندین مشکل برای مدیریت کلید SSH بهوجود میآورد که درادامه، به آنها اشاره میکنیم:
- فقدان متداول خطمشیها و فرایندهای ساخت و خاتمه برنامه: کاربران معمولاً مجازند کلیدهایی را برای خود و افراد دلخواهشان تهیه کنند.
- گواهیهای اختصاصی پشتیبانیشده OpenSSH ممیزی دسترسی مبتنیبر کلید SSH را غیرممکن میکند؛ درنتیجه، با آنها نمیتوانید به بخش تجزیهوتحلیل سرور دستور دهید که سرور کدام کلیدها را بپذیرد. معمولاً هیچ سابقه یا ممیزی مطمئنی وجود ندارد تا مشخص کند که کدام کلیدها را به کلید مرجع دارای گواهی امضا تبدیل کرده است؛ ازاینرو، استفاده از گواهیهای OpenSSH را برای احراز هویت کاربر توصیه نمیکنیم.
- مکانهای مهم معمولاً در فایلهای پیکربندی تنظیم میشوند.
- برخی از سازمانها از نسخههای سفارشی کامپایلشده استفاده میکنند که مسیرهای غیراستانداردی را برای تعیین محل کلیدهای SSH کامپایل کردهاند.
- کلیدهای SSH ممکن است در حجمهای NFS (سیستم فایل شبکه) ذخیره شوند و این تغییر احتمال دارد روی بسیاری از هاستها تأثیر بگذارد.
- حسابهای کاربری ممکن است از سرورهای NIS و Active Directory (سیستم اطلاعات شبکه) و LDAP (مخفف Lightweight Directory Access Protocol) باشند.
- کلیدها ممکن است در LDAP ذخیره شوند.
- SELinux در بسیاری از توزیعهای رایج لینوکس فعال و ممکن است نتوان مستقیماً فایلهای authorized_keys را خواند.
- نحوه پیکربندی فایل و معنای برخی از گزینهها بارها بین نسخهها تغییر کرده است.
- گزینههای موجود در فایلهای authorized_keys برای درک دسترسی ارائه شدهاند و برای محدودکردن استفاده از کلیدهای دزدیده یا کپی شده با استفاده از stanzaها اهمیت دارند.
تنها راهحلی که درحالحاضر میتواند بهطورعملی مشکل مدیریت کلید SSH را با پیچیدگی کامل محیطهای سازمانی حل کند، Universal SSH Key Manager است. امنیت اطلاعات با کنترل افرادی شروع میشود که به سیستمها دسترسی دارند و بقیه موارد فقط اعمال دسترسی است. اگر اطلاعاتی درباره این موضوع وجود نداشته باشد که چه کسی با استفاده از کلیدهای SSH به آنها دسترسی داده است، هیچ امنیتی وجود نخواهد داشت. درواقع بدون محرمانهبودن و صداقت، تضمینی برای ادامه عملیات وجود نخواهد داشت.

چگونه کلیدهای SSH را مدیریت کنیم؟
مقایسه با Tectia SSH
درحالیکه اجرای OpenSSH متنباز و Tectia SSH تجاری همان نیاز اساسی را برای ایمنسازی لاگینها و ارتباطات و انتقال فایلها به هاست برطرف میکنند، تفاوتهایی در رویکردهای آنها وجود دارد. سازمانهایی که به پشتیبانی تجاری یا پشتیبانی ۲۴ساعته در ۷ روز هفته یا تأیید اعتبار کارت هوشمند نیاز دارند، ممکن است بخواهند Tectia SSH را امتحان کنند.
سنجش رابط کاربری و خط فرمان و گرافیکی
باتوجهبه دردسترسبودن SSH روی Linux/BSD، رابط کاربری پیشفرض آن برای عملکرد خط فرمان OpenSSH است. شکل زیر نمایی معمولی از OpenSSH Client را نشان میدهد که از خط فرمان لینوکس شروع شده است. کاربران نسخه متنباز با کار در این محیط آشنا هستند و تیم پروژه به رابطهای کاربری گرافیکی خارج از مدیریت سیستم و بخشهای خاص بازار توسعه نرمافزار نیاز ندارد. کاربران سرویسگیرنده SSH که به رابطهای کاربری گرافیکی نیاز دارند، از این گزینه میتوانند در یکی از پکیجهای SSH Client Software تجاری یا غیرتجاری استفاده کنند که بسیاری از آنها رابط گرافیکی بومی پلتفرم را ارائه میدهند.

رابط کاربری و خط فرمان SSH
دانلود OpenSSH
برای دانلود OpenSSH، میتوانید به وبسایت http://www.openssh.com/ مراجعه کنید. همچنین، امکان دانلود آن در سیستمعاملهای مختلف و سیستمهای مدیریت بسته ویژه توزیع فراهم است. دانلود و کامپایل کد منبع برای مخاطبان خاص (توسعهدهندگان نرمافزار و توسعهدهندگان توزیع لینوکس) مناسب است. به کاربران توصیه میکنیم که OpenSSH را از مدیران بسته خاص سیستمعامل بخرند یا محصول تجاری پشتیبانیشدهای مانند Tectia SSH را در نظر بگیرند. ناگفته نماند مشارکت در پروژه ازطریق OpenBSD Foundation امکانپذیر است.
OpenSSH Client – SSH
برنامه OpenSSH Client در حالت کلی SSH نامیده میشود. SSH Client معمولاً از اطلاعات موجود در دایرکتوری ssh. برای دایرکتوری اصلی کاربر استفاده میکند. همچنین، دستور /etc/ssh/ssh_config را میخواند که شامل پیکربندی گسترده سیستم برای آن است.
OpenSSH Server – SSHD
برنامه OpenSSH Server درحقیقت SSHD نام دارد. سرور معمولاً در هنگام بوت سیستم راهاندازی میشود و پیکربندی آن را از دایرکتوری دستور etc/ssh/ میخواند. فایل تنظیمات اصلی آن نیز معمولاً /etc/ssh/sshd_config است.
جمعبندی
SSH پروتکلی ایمن است که برای برقراری ارتباط امن بین سرور و کاربر استفاده میشود. درحقیقت، این پروتکل از کلیدهای عمومی و خصوصی برای فراهمکردن ارتباطی امن بهره میبرد. کاربران با استفاده از کلیدهای عمومی اطلاعات خود را موقع ارسال رمزنگاری میکنند و سپس در مقصد این اطلاعات با استفاده از کلیدهای خصوصی رمزگشایی میشوند. کلیدهای SSH برای نامهای کاربری و رمزهای عبور قدیمی جایگزین بسیار مناسبی بهشمار میروند. در این مقاله، OpenSSH و کلیدهای SSH را معرفی و خطرهای جدی SSH و دستورالعملهای NIST برای مدیریت آن را بررسی کردیم. امیدواریم که این مقاله برایتان مفید بوده باشد. شما میتوانید سؤالها و ابهامهای خود درباره این موضوع را در بخش نظرات همین مطلب با ما در میان بگذارید.
سؤالات متداول
1. خطرهای امنیتی کلیدهای SSH چیست؟
- فقدان پاسخگویی درباره حسابها؛ زیرا کلیدهای SSH به حسابهای موجود در سرور یونیکس گره خوردهاند، نه به یک فرد.
- کلیدهای SSH را باید بهصورت دستی چرخاند.
- برای تمامی کلیدهای SSH از رمزعبور یکسان استفاده میشود.
2. OpenSSH چه کاربردهایی دارد؟
OpenSSH یک دیمون سرور را فراهم میکند و از ابزارهای کلاینت برای تسهیل عملیات کنترل از راه دور ایمن و رمزگذاریشده و انتقال فایل استفاده میکند و بهطور مؤثر جایگزین ابزارهای قدیمی میشود.
3. کلید SSH چیست؟
کلید SSH اعتبارنامهای برای دسترسی پروتکل شبکه (SSH (Secure Shell است. این پروتکل ایمن از احراز هویت رمزگذاریشده برای ارتباط از راه دور و بین ماشینها در شبکه باز ناامن بهره میبرد. SSH بهمنظور انتقال فایل از راه دور و مدیریت شبکه و دسترسی از راه دور به سیستمعامل استفاده میشود.