SSH چیست؟ آشنایی با عملکرد و کاربردهای SSH

SSH چیست؟
Category: مقالات Tags:

پروتکل SSH (Secure Shell) چیست؟

پروتکل SSH (Secure Shell) روشی برای ارسال امن دستورها به یک کامپیوتر از طریق یک شبکه ناامن است. SSH از رمزنگاری برای احراز هویت و رمزگذاری اتصالات بین دستگاه ها استفاده می کند. SSH همچنین امکان تونل زدن یا هدایت پورت را فراهم می کند، SSH اغلب برای کنترل سرورها از راه دور، مدیریت زیرساخت و انتقال فایل استفاده می شود.

به طور مثال

صاحب فروشگاهی هنگام مسافرت ممکن است از راه دور به کارکنان خود دستور دهد تا در زمان نبود او فروشگاه به طور مرتب کار کند. به طور مشابه، SSH به مدیران سیستم اجازه می دهد تا سرورها و دستگاه ها را از راه دور مدیریت کنند. پروتکل های قدیمی مدیریت از راه دور مانند Telnet دستورات مدیران را به شکلی منتقل می کردند که هر کسی می توانست آن را ببیند. (تصور کنید که کارکنان در حین تماس،صدای صاحب فروشگاه را روی بلندگو قرار داده اند؛ همه مشتریان فروشگاه می توانند دستورات مدیر را استراق سمع کنند). برخلاف Telnet پروتکل SSH، امن است – از این رو نام آن را Secure Shell گذاشته اند.

SSH چه کاری انجام می دهد؟

  • اتصالات رمزگذاری شده از راه دور: SSH به منظور برقراری ارتباط امن بین دو دستگاه، دو کامپیوتر یا کامپیوتر و سرور، بر روی شبکه ارائه شده است. این پروتکل، در واقع جایگزینی برای پروتکل هایی مثل FTP و Telnet است که قدیمی تر بوده و نسبتاً امنیت پایین تری دارند.
  • توانایی تونل زنی: در شبکه، تونل زنی روشی برای انتقال بسته های داده در سراسر شبکه با استفاده از پروتکل یا مسیری است که به طور معمول نمی توانند از آن استفاده کنند. تونل زنی با بسته بندی کردن بسته های داده با اطلاعات اضافی – به نام هدر – برای تغییر مقصد آنها کار می کند. تونل های SSH از تکنیکی به نام هدایت پورت برای ارسال بسته ها از یک ماشین به ماشین دیگر استفاده می کنند. هدایت پورت در ادامه با جزئیات بیشتر توضیح داده شده است.

توجه: تمام داده‌هایی که از طریق شبکه عبور می‌کنند به قطعات کوچک‌تر تقسیم می‌شوند؛ این قطعات کوچه «بسته» نامیده می‌شوند.

SSH چگونه کار می کند؟

TCP/IP

SSH بر روی مجموعه پروتکل های TCP/IP اجرا می شود – که بخش اعظمی از اینترنت به آن متکی است. TCP مخفف Transmission Control Protocol (پروتکل کنترل انتقال) و IP مخفف Internet Protocol (پروتکل اینترنت) است. آدرس IPای را که یک بسته باید به آن برود (شبیه آدرس پستی) و همچنین اطلاعات دیگری را مشخص می کند، در حالی که TCP پورتی را که یک بسته در هر آدرس IP باید به آن برود (شبیه طبقه یک ساختمان یا شماره واحد) را مشخص می کند.

TCP یک پروتکل لایه انتقال است: یعنی مسئول حمل و نقل و تحویل بسته های داده است. به طور معمول، پروتکل های اضافی بر روی TCP/IP برای قرار دادن داده های منتقل شده در قالبی که برنامه ها بتوانند از آن استفاده کنند، استفاده می شوند. SSH یکی از چنین پروتکل هایی است. (از دیگر نمونه ها می توان به HTTP، FTP و SMTP اشاره کرد).

پروتکل sshرمزنگاری با کلید عمومی

SSH “امن” است زیرا از طریق فرآیندی به نام رمزنگاری با کلید عمومی، شامل رمزگذاری و احراز هویت می شود. رمزنگاری با کلید عمومی روشی برای رمزگذاری داده ها یا امضای داده ها با دو کلید مختلف است. یکی از کلیدها، کلید عمومی، برای استفاده همه در دسترس است. کلید دیگر، کلید خصوصی، توسط صاحب آن مخفی نگه داشته می شود. از آنجایی که این دو کلید با هم مطابقت دارند، برای تأیید هویت صاحب کلید، داشتن کلید خصوصی که با کلید عمومی مطابقت دارد، ضروری است.

این کلیدهای “نامتقارن” – به این دلیل که مقادیر متفاوتی دارند – همچنین امکان مذاکره برای کلیدهای مشترک متقارن یکسان برای رمزگذاری بیشتر روی کانال را برای دو طرف اتصال فراهم می کند. پس از اتمام این مذاکره، دو طرف از کلیدهای متقارن برای رمزگذاری داده هایی که تبادل می کنند استفاده می کنند.

در یک اتصال SSH، هر دو طرف یک جفت کلید عمومی/خصوصی دارند و هر طرف دیگری را با استفاده از این کلیدها تأیید می کند. این SSH را از HTTPS متمایز می کند، که در اکثر پیاده سازی ها فقط هویت سرور وب را در یک اتصال سرویس گیرنده-سرور تأیید می کند. (تفاوت‌های دیگر شامل این است که HTTPS معمولاً به کاربر اجازه دسترسی به خط فرمان سرور را نمی‌دهد و فایروال‌ها گاهی SSH را مسدود می‌کنند اما تقریباً هرگز HTTPS را مسدود نمی‌کنند.)

احراز هویت

در حالی که رمزنگاری با کلید عمومی دستگاه های متصل را در SSH تایید می کند، یک کامپیوتر با امنیت مناسب همچنان نیازمند احراز هویت از شخصی است که از SSH استفاده می کند. این کار اغلب به صورت وارد کردن نام کاربری و رمز عبور انجام می شود. پس از تکمیل احراز هویت، فرد می تواند دستورات را روی دستگاه راه دور اجرا کند، گویی که روی دستگاه محلی خود کار می کند.

تونل زنی SSH یا ‘هدایت پورت

هدایت پورت مانند فرستادن یک پیام بین دو نفر است. باب ممکن است پیامی را برای آلیس ارسال کند، که او به نوبه خود آن را به دیو منتقل می کند. به طور مشابه، هدایت پورت بسته های داده ای را که به یک آدرس IP و پورت روی یک دستگاه ارسال می شوند به یک آدرس IP و پورت روی یک دستگاه دیگر ارسال می کند.

برای مثال، تصور کنید که یک مدیر می خواهد تغییری را در یک سرور داخل یک شبکه خصوصی که مدیریت می کند ایجاد کند، و می خواهد این کار را از راه دور انجام دهد. با این حال، به دلایل امنیتی، آن سرور فقط بسته های داده را از سایر رایانه های داخل شبکه خصوصی دریافت می کند. مدیر به جای آن می تواند به یک سرور دوم در داخل شبکه متصل شود – سروری که برای دریافت ترافیک اینترنت باز است – و سپس از هدایت پورت SSH برای اتصال به سرور اول استفاده کند. از دیدگاه سرور اول، بسته های داده مدیر از داخل شبکه خصوصی می آیند.

استفاده از SSH

سیستم عامل های لینوکس و مک دارای SSH داخلی هستند. ممکن است لازم باشد یک برنامه کلاینت SSH روی دستگاه های ویندوز نصب شود. در رایانه های Mac و Linux، کاربران می توانند برنامه Terminal را باز کرده و مستقیماً دستورات SSH را وارد کنند.

SSH برای چه کاری استفاده می شود؟

از نظر فنی، SSH می تواند هر داده دلخواهی را از طریق شبکه انتقال دهد و تونل زنی SSH را می توان برای اهداف بی شماری راه اندازی کرد. با این حال، رایج ترین موارد استفاده از SSH عبارتند از:

  • مدیریت از راه دور سرورها، زیرساخت ها و رایانه های کارمندان
  • انتقال امن فایل (SSH نسبت به پروتکل های رمزگذاری نشده مانند FTP امن تر است)
  • دسترسی به سرویس های ابری بدون در معرض دید قرار دادن پورت های یک ماشین محلی در اینترنت
  • اتصال از راه دور به سرویس ها در یک شبکه خصوصی
  • دور زدن محدودیت های فایروال

پورت ssh

SSH از چه پورتی استفاده می‌کند؟

پورت پیش فرض SSH ، پورت 22 است. گاهی اوقات، فایروال ها ممکن است دسترسی به پورت های خاص روی سرورهای پشت فایروال را مسدود کنند، اما پورت 22 را باز بگذارند. بنابراین SSH برای دسترسی به سرورهای آن طرف فایروال مفید است: بسته هایی که به پورت 22 هدایت می شوند مسدود نمی شوند و سپس می توانند به هر پورت دیگری ارسال شوند.  در نظر داشته باشید که برای امنیت بیشتر توصیه همیشگی این است که پورت اتصال SSH همیشه تغییر داده شود و از پورت استاندارد استفاده نشود.

ریسک های امنیتی مرتبط با SSH چیست؟

هر پروتکلی می تواند توسط طرف های مخرب مورد سوء استفاده قرار گیرد و ماهیت رمزگذاری شده و قابلیت های تونل زنی SSH باعث می شود این پروتکل به طور ویژه برای مهاجمان جذاب باشد. SSH در تعدادی از حملات مستند برای سرقت داده های خصوصی، باز کردن مسیرهای backdoor به یک شبکه امن و حتی به دست آوردن دسترسی root در سرورها مورد استفاده قرار گرفته است.

انواع خاصی از حملات همچنین می توانند کلیدهای SSH را برای دسترسی به رایانه ها و سرورهای خصوصی به سرقت ببرند. در واقع، مدیریت کلید SSH یک مشکل امنیتی عمده برای سازمان های بزرگ است، زیرا سرورهای متعدد آنها ممکن است از هزاران یا حتی میلیون ها کلید استفاده کنند و ردیابی و به روز رسانی این کلیدها تقریباً غیرممکن است. هنگامی که مهاجمی یک کلید به دست آورد، ممکن است برای ماه ها یا سال ها دسترسی مداوم داشته باشد.

SSH چگونه با سایر پروتکل های تونل زنی مقایسه می شود؟

یکی از تفاوت های اصلی بین SSH و سایر پروتکل های تونل زنی، لایه OSI است که در آن کار می کنند. GRE، IP-in-IP و IPSec همگی پروتکل های لایه شبکه هستند. بنابراین، آنها از پورت ها (مفهومی در لایه انتقال) آگاه نیستند و در عوض بین آدرس های IP عمل می کنند. لایه OSI SSH به طور دقیق تعریف نشده است، اما اکثر منابع آن را به عنوان یک پروتکل لایه 7 (لایه کاربرد) توصیف می کنند.

تفاوت دیگر استفاده SSH در TCP است. همانطور که در بالا توضیح داده شد، TCP یک پروتکل لایه انتقال است و یکی از پروتکل های اصلی مورد استفاده در اینترنت است. یک پروتکل لایه انتقال دیگر که به طور گسترده مورد استفاده قرار می گیرد، UDP (پروتکل دیتاگرام کاربر) است. UDP یک پروتکل حمل و نقل است – این پروتکل بسته ها را بدون اطمینان از تحویل آنها ارسال می کند – که باعث می شود سریعتر باشد اما گاهی اوقات منجر به از دست رفتن بسته ها می شود. اگرچه TCP نسبت به UDP کندتر است، اما تحویل تمام بسته ها را به ترتیب تضمین می کند و بنابراین قابل اعتمادتر است.

IPsec ، برای اینکه بسته های IPsec بتوانند از فایروال ها عبور کنند، به طور انحصاری از UDP به جای TCP استفاده می کند. بنابراین، تونل های IPsec معمولاً سریعتر از تونل های SSH هستند، اما می توانند بسته ها را در حین انتقال از دست بدهند. GRE و IP-in-IP را می توان با TCP یا UDP استفاده کرد.

در نهایت، SSH تنها یک برنامه کاربردی را در یک زمان رمزگذاری می کند، نه کل ترافیکی که به دستگاهی می رود و از آن خارج می شود. این SSH را از IPsec متمایز می کند که تمام ترافیک شبکه را بدون در نظر گرفتن اینکه از کدام برنامه کاربردی باشد، رمزگذاری می کند. به همین دلیل، SSH برای راه اندازی VPN استفاده نمی شود.