پروتکل SSH مخفف Secure Shell یک پروتکل شبکه است که به سامانههای هوشمند مثل کامپیوترها اجازه میدهد بر مبنای یک زبان واحد مشترک و ایمن از طریق یک شبکه غیرامن مثل اینترنت با یک دیگر ارتباط برقرار کرده و به تبادل اطلاعات بپردازند.
SSH به مدیران شبکه اجازه میدهد از طریق یک شبکه غیرامن به شکل ایمن و از راه دور به کامپیوترها دسترسی داشته باشند. این پروتکل با پیادهسازی یک اتصال ایمن تضمین میکند دو طرف ارتباط میتوانند بدون نگرانی در ارتباط با شنود اطلاعات، با یکدیگر در ارتباط باشند. برای دستیابی به این هدف، پروتکل SSH نه تنها از طریق الگوریتمهای رمزگذاری یک کانال امن فراهم میکند، بلکه مکانیزم احراز هویت رمز عبور کارآمد و احراز هویت مبتنی بر کلید عمومی را فراهم میکند.
اگر میخواهید درباره سرورهای SSH و برنامههای سرویس گیرندهای که قادر به استفاده از پروتکل مذکور هستند، اطلاعات بیشتری به دست آورید، این مقاله را تا انتها مطالعه کنید.
رمزگذاری و رمزنگاری چه تفاوتی با یکدیگر دارند؟
قبل از آنکه بحث را ادامه دهیم، اجازه دهید به یک موضوع مهم اشاره کنیم که متاسفانه در منابع فارسی کمتر به آن دقت میشود. رمزگذاری (Encryption) یک کاربرد اساسی از رمزنگاری (cryptography) است که پیامی را با یک الگوریتم رمزگذاری میکند. رمزنگاری (cryptography) از دو واژه Crypto و Graphy ساخته شده است که واژه اول Crypto به معنای پنهانی و واژه Graphy به هنر ارائه یک فرآیند (بیانگر علم یا شکلی از طراحی، نوشتن، نمایش، ضبط، توصیف و غیره است.) اشاره دارد. بر مبنای این تعریف واژه cryptography به معنای علم ارتباط رمزی یا در اصطلاح سادهتر رمزنگاری است.
رمزگذاری، از یک الگوریتم برای رمزگذاری دادهها و از یک کلید پنهان برای رمزگشایی آنها استفاده میکند. بنابراین، علم ارتباط رمزی (رمزنگاری) مطالعه مفاهیمی مانند رمزگذاری است. در حالی که رمزگذاری تکنیکی است که برای پنهان کردن محتوای پیامها از الگوریتمها و محاسبات ریاضی استفاده میکند.
تاریخچه کوتاه در ارتباط با شکلگیری پروتکل SSH
SSH یکی از پر استفادهترین پروتکلهای حال حاضر است، زیرا با استفاده از آن نیازی به دسترسی فیزیکی به دستگاهها ندارید. به طور مثال، هنگامی که قصد پیکربندی و مدیریت از راه دور تجهیزاتی مثل روترها و سوییچهای سیسکو را دارید، پروتکل فوق اجازه میدهد به شکل ایمن اطلاعات احراز هویت را وارد کرده و دستورات پیکربندی برای تجهیزاتی که ممکن است کیلومترها دور از شما قرار داشته باشند ارسال کنید. علاوه بر این، پروتکل مذکور اجازه میدهد از طریق اینترنت به سرورها متصل شده و آنها را کنترل کنیم.
SSH اولین بار در اواسط دهه 90 میلای به دنیای فناوری معرفی شد و در حقیقت به عنوان جایگزینی برای Telnet توسعه پیدا کرد. تلنت یک پروتکل لایه کاربردی است که دادهها را بدون رمزگذاری ارسال میکند، به این معنا که دادهها از طریق اینترنت و در قالب متن ساده انتقال پیدا میکنند. به همین دلیل هر فردی که بین شما و دستگاه راه دور قرار داشته باشد قادر به شنود (sniff) بستههای اطلاعاتی است و میتواند هرگونه دادهای که انتقال میدهید و کارهایی که انجام میدهید را مشاهده کند. همانگونه که در شکل زیر مشاهده میکنید، اگر پیامی میان کلاینت و سرور به شکل عادی ارسال شود، هکر قادر به ضبط کامل اطلاعات است.
رمزگذاری روشی برای پنهانسازی دادهها و غیرقابل خواندن کردن آنها است، به طوریکه تنها با اطلاع از نحوه رمزگذاری و داشتن کلید مربوطه قادر به مشاهده محتوای پیامها خواهید بود. پروتکل SSH به عنوان یک مکانیزم ارتباطی ایمن با ایجاد یک تونل رمزگذاری، مانع از آن میشود تا افرادی مثل هکرها بتوانند دادههایی که از طریق کانالهای ارتباطی انتقال پیدا میکنند را مشاهده کنند یا دادهها را در فرآیند انتقال تغییر دهند. با اینکه هنگام استفاده از SSH میتوانید حجم دادههای در حال انتقال را ببینید، اما نمیتوانید به محتوای آنها دسترسی داشته باشید، اما نمیتوانید مشاهده کنید که محتوای دادهها چیست. در تصویر زیر مشاهده میکنید که اطلاعات ابتدا رمزگذاری شده و سپس ارسال میشوند. در این حالت هکر تنها کاراکترهای غیرقابل فهمی را دریافت میکند.
به طور معمول، SSH با استفاده از مدل کلاینت-سرور (Client-Server) پیادهسازی میشود. در اینجا، سیستمی که درخواستی را ارسال میکند، کلاینت پروتکل پوسته امن (SSH Client) و سیستمی که به درخواست پاسخ میدهد، میزبان یا سرور پوسته امن (SSH server) نامیده میشود. به عبارت دیگر، کلاینتهای SSH با سرورهای SSH ارتباط برقرار میکنند تا یک مسیر ایمن پیادهسازی شود. در ادامه، سرور SSH کلید عمومی خود را برای کلاینت ارسال میکند تا کلاینت بتواند با استفاده از این کلید رمزنگاری عمومی، هویت سرور را تأیید کند. پس از برقراری مسیر ارتباطی، پروتکل SSH از پروتکلهای رمزگذاری متقارن قوی و الگوریتمهای هش برای حفظ حریم خصوصی و انتقال امن فایلها استفاده میکند. به این ترتیب دادهها بین کلاینت و سرور به صورت ایمن مبادله میشوند.
سرویسگیرنده و سرویسدهنده SSH اینکار را با کمک روشهای مختلف رمزگذاری انجام میدهند، اما رایجترین آنها الگوریتمهای Blowfish و Advanced Encryption Standard هستند.
Blowfish قدیمیترین الگوریتم رمزگذاری متقارن است. با این حال، استاندارد رمزگذاری پیشرفته (AES) که توسط موسسه ملی استاندارد و فناوری توسعه یافته است، به طور گستردهتری مورد استفاده قرار میگیرد.
فرآیند برقراری ارتباط میان کلاینت SSH و سرور SSH در شکل زیر نشان داده شده است.
SSH چه تفاوتی با شبکه خصوصی مجازی دارد؟
SSH مشابه یک شبکه خصوصی مجازی معمولی کار میکند. یک شبکه خصوصی مجازی یک تونل رمزگذاری شده برای ارتباط امن ایجاد میکند. تنها تفاوت این است که شبکه خصوصی مجازی از مدل سرویس گیرنده-سرور استفاده نمیکند، بلکه از یک اتصال امن بین دستگاه کاربر و سرور شبکه خصوصی مجازی استفاده میکند. همچنین، مهم است به این نکته دقت کنید که اتصال امن SSH در سیستمعاملهای مختلف متفاوت است.
- در مک و لینوکس: از طریق ترمینال.
- در ویندوز از طریق یک سرویسگیرنده SSH نصب شده.
اکنون اجازه دهید، نحوه عملکرد سرورهای SSH و سرویسگیرندگان SSH را بررسی کنیم تا شناخت دقیقتری در این زمینه به دست آوریم.
سرور SSH
همانگونه که اشاره شد، سرور SSH سروری است که اتصال شبکه را آغاز میکند. با این حال، باید آمادگی لازم برای پذیرش اتصالات جدید را داشته باشد و به آنها پاسخ دهد. سرور اینکار را با استفاده از پورت 22 پروتکل TCP سیستم میزبان انجام میدهد.
در ابتدای هر اتصال سرور SSH باید با استفاده از رمزنگاری کلید عمومی، هویت خود را به کلاینت اعلام دارد. این احراز هویت ضروری است، زیرا کلاینت SSH اطمینان حاصل خواهد کرد در حال برقراری ارتباط با یک سرور معتبر و نه سروری است که تحت کنترل هکرها قرار دارد. هنگامیکه سرویس گیرنده و سرور یک اتصال ایمن برقرار کردند، کاربران میتوانند کارهای زیر را انجام دهند:
- انتقال فایل.
- اجرای فرمان از راه دور.
- مدیریت میزبان از راه دور.
- تامین امنیت ترافیک برنامههای کاربردی دیگر.
متأسفانه، سرور SSH اغلب هدف مهاجمان سایبری است زیرا دسترسی از راه دور به سیستم میزبان را فراهم میکند. به همین دلیل مهم است از نرمافزارهای کلاینت ایمنی استفاده شود و تمهیدات امنیتی سختگیرانهای روی سرور پیادهسازی شده باشد.
کلاینت SSH
مدیران سیستم میتوانند با نصب یک برنامه بر روی ماشین محلی خود و کامپیوتر راه دور از اتصالات امن به بهترین شکل استفاده کنند. این نرمافزار به نام Secure Socket Client شناخته میشود. امروزه نرمافزارهای سرویسگیرنده SSH کارآمدی در وب وجود دارند که میتوانید از آنها برای اتصال به کامپیوترهای محلی یا راه دور استفاده کنید.
در حالی که دستگاههای مک و لینوکس معمولاً از یک برنامه ترمینال استفاده میکنند، سیستم عامل ویندوز برای اجرای دستورات SSH به یک برنامه کلاینت اختصاصی نیاز دارد. از نمونههای کارآمد در این زمینه باید به PuTTY، KITTY، MobaXterm یا WinSCP اشاره کرد.
هنگامی که یک کلاینت را روی یک ماشین محلی نصب کردید، باید یک سرور SSH نیز برای پذیرش اتصالات SSH نصب کنید. به این ترتیب میتوانید از این مکانیزم امن برای دسترسی از راه دور به سامانهها استفاده کنید.
وقتی صحبت از احراز هویت SSH میشود، پیشنهاد بر استفاده از نام کاربری و رمز عبور است، البته این امکان وجود دارد که از یک جفت کلید عمومی و خصوصی برای مدیریت ایمن دسترسی از راه دور بدون رمز عبور استفاده کنید. به طور کلی، کلیدهای Secure Shell بخش مهمی از پروتکل SSH هستند. بنابراین، ارزش آنرا دارد که آنها را با جزئیات بیشتر تجزیه و تحلیل کنیم.
کلید رمزگذاری
کلید رمزگذاری شکلی از احراز هویت کاربر در پروتکل SSH است. کلیدهای SSH در مقایسه با رمزهای عبور معمولی امنیت بیشتری دارند و به همین دلیل در کاربردهایی مثل انتقال ایمن فایلها عملکرد قابل قبولی دارند. آنها اغلب در ابزارهای مدیریت پیکربندی، اسکریپتها و سیستمهای پشتیبان نیز قابل استفاده هستند.
کلیدهای SSH در واقع یک جفت کلید رمزنگاری متشکل از یک کلید خصوصی و یک کلید عمومی هستند. کلید عمومی و خصوصی به شکل منحصر به فرد بر روی سرور پیکربندی میشوند، اما یک کپی از کلید خصوصی در اختیار کلاینت قرار میگیرد تا بتواند با سرور ارتباط برقرار کند. به لطف این رابطه منحصر به فرد کلید عمومی به خصوصی، کلیدهای رمزگذاری شده بسیار ایمنتر از رمزهای عبور هستند. با این حال، سیستم کامل نیست، به همین دلیل است که باید از یک عبارت عبوری (Passphrase) استفاده شود تا کلید خصوصی رمزگذاری شود.
عبارت عبوری میتواند از کلیدها در برابر نشت (Leak) محافظت کند. به طور خلاصه، هکرها میتوانند به کلیدهای خصوصی دسترسی پیدا کنند، اما اگر از یک عبارت عبوری رمزگذاری شده استفاده شده باشد، کاری از پیش نخواهند برد. متأسفانه، تخمین زده میشود که بیش از 90 درصد کلیدهای SSH در شرکتهای بزرگ فاقد عبارت عبوری هستند که خطر امنیتی جدی را برای سازمانها به همراه دارد.
در این مقاله درباره سرورها و کلاینت SSH، تاریخچهی شکل گیری آن و کلید رمزگذاری اطلاعاتی به دست آوردیم. در مقالهی بعد با عنوان "پروتکل پوسته امن یا SSH چه تفاوتی با HTTPS دارد؟" درباره تفاوت میان SSH و HTTPS، اطلاعات قابل انتقال با SSH، نحوهی کارکرد آن و انواع رمزگذاری صحبت میکنیم.