هنگام دسترسی به رایانه از طریق شبکه، مدیران سیستم به یک اتصال امن نیاز دارند تا از حملات سایبری مخرب مانند شناسایی رمز عبور پنهان شوند. از آنجایی که شبکههای بزرگ دارای نقصهای امنیتی هستند، پروتکلهای رمزگذاری مانند TLS/SSL، IPsec، S/MIME، PGP و SSH برای اطمینان از حفاظت لازم ضروری هستند. در این مقاله به شما خواهیم گفت پروتکل SSH چیست و در ادامه با عملکرد، اصطلاحات، موارد استفاده و انواع آن آشنا خواهیم شد.
SSH چیست؟
SSH یک پروتکل شبکه محبوب است که به ما امکان می دهد از طریق یک شبکه ناامن مانند اینترنت به یک کامپیوتر یا سرور راه دور دسترسی داشته باشیم.
Secure Shell یا Secure Socket Shell یک پروتکل شبکه است. این پروتکل یک پروتکل لایه کاربردی است که در هفتمین مدل شبکه Open Systems Interconnection (OSI) قرار دارد. همچنین به مجموعه ابزارهایی اشاره دارد که پروتکل SSH را پیاده سازی می کنند.
همانطور که میدانید در این دنیای اپلیکیشنها، کلان دادهها و دیجیتال، نمیتوانید بدون خرید سرور و داشتن زیرساختهای محاسباتی پیشرفته در صدر صنعت خود باقی بمانید. نقش اصلی آن پشتیبانی از همه برنامههای کاربردی و بار کاری حیاتی است که همه سازمانها برای اجرای تجارت خود از آنها استفاده میکنند.
SSH برای اتصال به انواع سرورها استفاده میشود. Secure Shell از احراز هویت مبتنی بر رمز عبور و کلید پشتیبانی می کند. احراز هویت مبتنی بر رمز عبور به کاربران امکان می دهد نام کاربری و رمز عبور را برای احراز هویت به سرور راه دور ارائه دهند. احراز هویت مبتنی بر کلید به کاربران اجازه می دهد تا از طریق یک جفت کلید احراز هویت کنند. جفت کلیدها دو کلید امن رمزنگاری برای احراز هویت یک کلاینت در سرور Secure Shell هستند.
علاوه بر این، پروتکل Secure Shell ارتباطات داده بین دو رایانه را رمزگذاری می کند و به طور گسترده برای برقراری ارتباط با یک سرور راه دور از طریق اینترنت استفاده می شود.
تاریخچه SSH
مخفف SSH مخفف “Secure Shell” است. پروتکل SSH به عنوان جایگزین ایمن برای پروتکلهای راه دور ناامن برای سرورها طراحی شده است.
SSH توسط Tatu Ylönen در سال 1995 ایجاد شد. این پروتکل برای جلوگیری از حملات شناسایی رمز عبور در دانشگاه فناوری هلسینکی طراحی شده بود. اولین نسخه از پروتکل که اکنون SSH-1 نامیده میشود، برای جایگزینی پروتکلهای ناامن مانند rsh، rlogin و Telnet طراحی شد و به عنوان یک نرم افزار رایگان شروع به کار کرد اما به زودی به نرم افزار اختصاصی تبدیل شد.
پس از اینکه SSH-1 Ylönen به یک ابزار محبوب در سراسر جهان تبدیل شد، گروه ضربت مهندسی اینترنت (IETF) گروهی را تشکیل داد که هدف آن ایجاد جانشین این پروتکل بود. در سال 2006، SSH-2 به یک استاندارد جدید تبدیل شد که دارای پیشرفتهای امنیتی مانند تبادل کلید Diffie-Helman بود.
جامعه منبع باز OSSH، نسخه جدید پروتکل SSH بر اساس نسخه 1.2.12 SSH-1 را توسعه داد. توسعهدهندگان OpenBSD بعداً OSSH را برای ایجاد OpenSSH، محبوبترین پیادهسازی SSH در جهان امروز، ایجاد کردند. در حال حاضر پشتیبانی از SSH-1 متوقف شده است.
SSH چگونه کار میکند؟
Ssh از یک الگوی کلاینت-سرور استفاده میکند که در آن کلاینتها و سرورها از طریق یک کانال امن با هم ارتباط برقرار میکنند.
پروتکل SSH دارای سه لایه است:
- لایه حمل و نقل: ارتباط امن بین سرور و مشتری را تضمین میکند، رمزگذاری/رمزگشایی دادهها را نظارت میکند و از یکپارچگی اتصال محافظت میکند. همچنین ذخیره و فشرده سازی دادهها را انجام میدهد.
- لایه احراز هویت: روال احراز هویت مشتری را انجام میدهد.
- لایه اتصال: کانالهای ارتباطی را پس از احراز هویت مدیریت میکند.
SSH یک پروتکل مبتنی بر سرویس گیرنده-سرور است. این به این معنی است که این پروتکل به دستگاهی که درخواست اطلاعات یا خدمات (سرویس گیرنده) میکند اجازه میدهد تا به دستگاه دیگری (سرور) متصل شود.
هنگامیکه یک کلاینت از طریق SSH به یک سرور متصل میشود، دستگاه سرور را میتوان مانند یک کامپیوتر محلی کنترل کرد. سرور دارای یک پورت TCP تعیین شده است که از طریق آن شبکه را نظارت میکند و منتظر میماند تا کلاینتها اتصال را اولیه کنند. قبل از اینکه یک کلاینت متصل شود و دستورات SSH را صادر کند، باید فرآیند احراز هویت را پشت سر بگذارد.
تکنیکهای رمزگذاری در SSH
SSH از سه نوع رمزگذاری داده در جریان ارتباط بین ماشینها استفاده میکند که عبارتند از:
۱- رمزگذاری متقارن (Symmetric Encryption)
رمزگذاری متقارن یک کلید واحد تولید میکند که دو ماشین آن را با هم تبادل میکنند. سپس، ماشینها از کلید هم برای رمزگذاری و هم برای رمزگشایی استفاده میکنند. این روش سریع است، نیاز به منابع زیادی ندارد و SSH برای هر جلسه از آن استفاده میکند.
هر زمان که کلاینت و سرور در مورد اینکه کدام الگوریتم را برای یک جلسه SSH استفاده کنند مذاکره میکنند، همیشه اولین الگوریتم را در لیست مشتری که سرور پشتیبانی میکند، انتخاب میکنند.
۲- رمزگذاری نامتقارن (Asymmetric Encryption)
زمانی که ماشینها از دو کلید متفاوت (اما از نظر ریاضی مرتبط)، عمومیو خصوصی برای انجام رمزگذاری استفاده میکنند، دادهها بهطور نامتقارن رمزگذاری میشوند. ماشین کلاینت که در راه اندازی رمزگذاری شرکت کرده است میتواند اطلاعات را با استفاده از کلید خصوصی رمزگشایی کند.
همچنین SSH از کلیدهای نامتقارن نیز برای مبادله کلیدهای متقارن استفاده میکند، مانند فرآیند احراز هویت کاربر.
۳- هش کردن (Hashing)
SSH از هش برای تأیید اعتبار استفاده میکند. الگوریتمهای درهمسازی که برای تولید هش در SSH استفاده میشوند، کد احراز هویت پیام (MAC) و کد احراز هویت هش پیام (HMAC) هستند.
یک الگوریتم هش از یک بسته داده برای ایجاد یک رشته هش منحصر به فرد استفاده میکند. دستگاه ارسال کننده بسته همیشه بسته را همراه با مقدار هش ارسال میکند.
ماشین دریافت کننده، الگوریتم مورد استفاده برای ایجاد هش را میشناسد و میتواند آن را روی دادهها اعمال کند. هدف این است که ببینیم آیا مقدار هش محاسبه شده یکسان خواهد بود یا خیر. اگر مقدار هش به دست آمده با هش فرستنده متفاوت باشد، دادهها در حین انتقال حذف میشوند.
چگونه SSH با این تکنیکهای رمزگذاری کار میکند؟
Session Encryption Negotiation
به محض دریافت درخواست اتصال، سرور مجموعه ای از پروتکلهای رمزگذاری پشتیبانی شده را برای مشتری ارسال میکند. سرور از کلید عمومیبه عنوان روش احراز هویت استفاده میکند.
مشتری پروتکلها را با مجموعه خود مقایسه میکند. اگر پروتکلهای منطبق وجود داشته باشد، ماشینها موافقت میکنند که از یکی از آنها برای برقراری اتصال استفاده کنند.
مشتری در اولین تلاش برای اتصال، کلید عمومیسرور را با کلید خصوصی ذخیره شده در سیستم خود مقایسه میکند. اگر کلیدها مطابقت داشته باشند، مشتری و سرور موافقت میکنند که از رمزگذاری متقارن برای برقراری ارتباط در طول جلسه SSH استفاده کنند. برای این منظور، آنها با استفاده از یک فرآیند رمزگذاری نامتقارن که از الگوریتم تبادل کلید Diffie-Hellman (DH) استفاده میکند، ارتباط برقرار میکنند.
الگوریتم DH ماشینها را قادر میسازد تا با هم کار کنند و به طور ایمن یک کلید رمزنگاری را روی یک شبکه عمومیایجاد کنند. برای تولید یک کلید، ماشینها مراحل زیر را انجام میدهند:
ماشینها روی دو عدد توافق دارند: یک مدول و یک عدد پایه. برای جلوگیری از رمزگشایی کلید توسط الگوریتمهای هک نظیر brute force، مدول انتخاب شده یک عدد اول حداقل 600 رقمیاست.
ماشینها به طور جداگانه یک عدد را انتخاب میکنند و آن را در معادله شامل دو عدد عمومیاعمال میکنند.
سرور و مشتری مقادیر محاسبه شده را مبادله میکنند.
اکنون هر ماشین با استفاده از نتیجه دریافتی از دیگری محاسبه ای را انجام میدهد.
با انجام مراحل بالا، هر دو ماشین با الگوریتم یکسان، کلید مخفی خود را محاسبه میکنند. در نهایت، سرور تلاش میکند تا کاربری را که درخواست دسترسی میکند، احراز هویت کند.
Authenticating the User
دو مورد از متداولترین روشهای احراز هویت کاربر SSH که استفاده میشود، رمز عبور و کلیدهای SSH هستند. مشتریان با خیال راحت رمزهای عبور رمزگذاری شده را به سرور ارسال میکنند. با این حال، رمزهای عبور یک روش احراز هویت خطرناک هستند، زیرا قدرت آنها به آگاهی کاربر از آنچه رمز عبور قوی میسازد، بستگی دارد.
جفتهای کلید عمومی-خصوصی SSH رمزگذاری نامتقارن گزینه بهتری هستند. هنگامیکه مشتری پیام را رمزگشایی میکند، سرور به مشتری اجازه دسترسی به سیستم را میدهد.
برای ایجاد یک جفت کلید SSH، ssh-keygen را در ترمینال تایپ کنید. در نتیجه، سیستم کلیدها را تولید و ذخیره میکند.
کاربردهای SSH
SSH به طور گسترده در مراکز داده برای ارائه مدیریت ایمن، دسترسی از راه دور به منابع، وصلههای نرم افزاری و به روز رسانیها استفاده میشود. همچنین این پروتکل مدیریت محافظت شده روتر، نگهداری سخت افزار سرور و مدیریت پلتفرم مجازی سازی را امکان پذیر میکند.
به دلیل سهولت استفاده، استحکام و ویژگیهای متعدد، SSH را میتوان در سناریوهای مختلف اعمال کرد.
این سناریوها عبارتند از:
-
اتصال به یک میزبان راه دور
هدف اصلی ssh هدایت اتصال به سرور با یک پورت یا آدرس IP خاص است. این کار به ما اجازه می دهد تا یک میزبان راه دور به طور مستقیم به برنامه های موجود در ماشین محلی قابل دسترسی داشته باشد ویا بالعکس.
-
تهیه نسخه پشتیبان، کپی و انعکاس فایلها با استفاده از SFTP
کلیدهای SSH برای دسترسی خودکار به سرورها استفاده می شود و اغلب در اسکریپت ها، سیستم های پشتیبان گیری و ابزارهای مدیریت پیکربندی استفاده می شود. کلیدهای SSH به دلیل طراحی آنها که امکان اتصال در سراسر مرزهای سازمانی را فراهم میکند، قابلیتهای یکبار ورود (SSO) را فراهم میکنند که به کاربران اجازه میدهد هر بار بدون تایپ رمز عبور، بین حسابهای خود حرکت کنند.
-
نگاشت پورت مشتری به پورت سرور برای ایمن سازی TCP/IP و سایر پروتکلهای شبکه
ارسال پورت SSH مکانیزمی در SSH برای تونل کردن پورت های برنامه از ماشین کلاینت به ماشین سرور یا بالعکس است. می توان از آن برای افزودن رمزگذاری به برنامه های قدیمی، و یا عبور از فایروال ها استفاده کرد و برخی از مدیران سیستم و متخصصان فناوری اطلاعات از آن برای باز کردن درهای پشتی به شبکه داخلی از دستگاه های خانگی خود استفاده می کنند. همچنین می تواند توسط هکرها و بدافزارها برای باز کردن دسترسی از اینترنت به شبکه داخلی مورد سوء استفاده قرار گیرد.
-
تونل سازی دادههای حساس از طریق یک کانال امن
ssh تکنیکی است که کاربر را قادر می سازد تا یک تونل امن بین میزبان محلی و سرور راه دور ایجاد کند و امکان انتقال فایلها را فراهم می سازد.
-
استفاده از شبکه خصوصی مجازی
علاوه بر ایجاد یک کانال امن بین کامپیوترهای محلی و راه دور، پروتکل SSH برای مدیریت زیرساخت های مهم شرکت مانند روترها، سخت افزار سرور، پلت فرم های مجازی سازی و سیستم عامل ها استفاده می شود.
کلیدهای SSH اغلب در خودکارسازی دسترسی به سرور با ورود بدون رمز عبور، مدیریت پیکربندی و پشتیبانگیری استفاده میشوند.
چطور میتوان از ssh استفاده کرد؟
اتصال به سرور SSH با استفاده از کلاینت SSH انجام میشود. در اکثر سیستمعاملهای مبتنی بر یونیکس و یونیکس مانند دیمون و کلاینت از قبل نصب شده هستند. در این سیستمها، سرویس گیرنده SSH در ترمینال موجود است.
برای اتصال به یک میزبان راه دور با استفاده از ترمینال، کاربر دستور ssh و سپس نام کاربری و آدرس سرور یا نام میزبان را صادر میکند:
ssh [username]@[server_ip_or_hostname]
ویندوز 10 سرویس گیرنده و سرور OpenSSH را از نسخه 1709 ارائه میدهد. در نسخههای قبلی ویندوز SSH به عنوان یک ویژگی ارائه نمیشد، بنابراین از ابزارهایی مانند PuTTY برای ایجاد یک اتصال SSH استفاده شد. PuTTY یک کلاینت SSH با رابط کاربری گرافیکی برای SSH و Telnet است.
کلام آخر
هدف این مقاله این است که درک بهتری از مکانیسمهای پشت سر SSH به شما بدهد. درک نحوه کار SSH و اینکه چرا مفید است باید به شما کمک کند تصمیم بگیرید که آیا میخواهید از آن در محیط شخصی یا کاری خود استفاده کنید.
سوالات متداول
- دسترسی ایمن از راه دور به منابع
- اجرای دستورات از راه دور
- ارائه وصلههای نرم افزاری و به روز رسانی.
- انتقال فایلهای تعاملی و خودکار
دیدگاهتان را بنویسید