SSH چیست و چگونه کار میکند؟
مدیران سیستم هنگام اتصال به کامپیوتر از طریق شبکه برای محافظت از خود در برابر حملات سایبری مضر مانند سرقت هویت، به اتصال ایمن نیاز دارند. با توجه به آسیبپذیریهای امنیتی شبکههای بزرگ، پروتکلهای رمزگذاری مانند TLS/SSL، IPsec، S/MIME، PGP و SSH ضروری است تا حفاظت لازم را برای مدیران شبکه فراهم کنند.در این مطلب SSH، مدل client-server ، ویژگیها ، نحوه کارکرد آن و... را بررسی خواهیم کرد.
SSH چیست؟
SSH مخفف Secure Shell است. پروتکلهای SSH استانداردهایی را برای امنیت ارتباطات SSH مشخص میکنند که برای کارکرد سیستمهای شبکه امن بین میزبانهای غیرقابل اعتماد روی شبکههای محافظتنشده ضروری است. میتوانید از SSH برای رمزگذاری ارتباطات client-server در شبکههای ضعیف استفاده کنید.
اصطلاح شل در SSH برای نرم افزارهایی که دستورات یونیکس را اجرا میکردند به کار میرفت. این عبارت به تدریج به رابطهای کاربر سرور مربوط میشود که سفارشات یونیکس را برای کاربران آسانتر میکند.
SSH بیش از نیمی از مدیران شبکه لوکال و مبتنی بر ابر را مدیریت میکند. با استفاده از SSH، دستگاههای شبکه، پورتها، روترها، پلتفرمهای نرم افزاری و برنامهها را می توان ایمن، پیکربندی، مدیریت، نگهداری و راه اندازی کرد.
علاوه بر این، پروتکلهای SSH یکپارچگی دادهها، رمزگذاری و احراز هویت SSH را پوشش میدهند.
SSH Client چیست؟
SSH Client برنامهای است که اتصالات SSH ایمن و تایید شده را به سرورهای SSH برقرار میکند. مدل معماری client-server پایه و اساس SSH است.
هر ماشینی که به شبکهها متصل باشد، میزبان نامیده میشود و کلاینتها و سرورها برنامههایی هستند که روی هاست اجرا میشوند.
کاربر ابتدا از کامپیوتر خود برای اتصال به سرور راه دور استفاده میکند. در مرحله بعد، آنها میتوانند از یک رابط کاربری گرافیکی یا ابزار خط فرمان برای انتقال فایلها بین کلاینت و سرور استفاده کنند. اما در نظر داشته باشید که کلاینت و سرور باید SSH را فعال کنند.
کلاینتهای SSH برای اتصال به یک سیستم راه دور با استفاده از SSH درخواست دسترسی از راه دور میکنند.
اکثر کلاینتهای SSH ویژگیهای اضافی را نسبت به اجرای خط فرمان استاندارد SSH ارائه میکنند، مانند ظرفیت اجرای چندین جلسه به طور همزمان، توانایی هایلایت کردن کلمات کلیدی در جلسات، استفاده از انواع دیگر اتصال، و توانایی ذخیره رمزهای عبور.
ویژگی های پایه Secure Shell
سوال این است که SSH چه کاری میتواند انجام دهد؟ بیایید برخی از ویژگیهای اساسی را بررسی کنیم.
-
SSHD
دیمن یک برنامه در حال اجرا در پس زمینه است که برای انجام عملکردهای ویژه برای یک برنامه خاص تنظیم شده است. SSH Daemon نرم افزاری است که منتظر - اغلب در پورت پیشفرض 22 - درخواستهای اتصال است.
درخواستهای اتصال را تایید نموده و کانکشن را آغاز میکند، که باید در سیستمهای راه دور برای ایجاد اتصالات SSH در حال اجرا باشند.
دیمن SSH شما را قادر میسازد تا دادههای رمزگذاری شده را بین سرورهای نامعتبر از طریق یک شبکه ناامن ارسال کنید.
-
RFCs
کارگروه مهندسی اینترنت (IETF) درخواست نظرات (RFC) را به عنوان یک سند رسمی صادر میکند که موضوعات مرتبط با اینترنت و TCP/IP را مشخص مینماید. به عنوان مثال، می تواند فناوریها، استانداردها و پروتکلها را توصیف کند. در حال حاضر، بیش از نه هزار RFC وجود دارد.
لایه انتقال SSH باید محرمانه مطلق رو به جلو (permit absolute forward secrecy) توسط RFC را مجاز کند. به عنوان مثال، اگر کلید خصوصی سرور به خطر بیفتد، یک هکر نمیتواند دادههای ارسالی قبلی را به دلیل محرمانه بودن کامل مشاهده کند.
-
SSH Layers
SSH دارای سه لایه است: اتصال(connection)، احراز هویت کاربر(user authentication) و انتقال (transport).
• لایه انتقال، سرور را احراز هویت میکند و ضمن مدیریت رمزگذاری و رمزگشایی دادههای ارسالی، از رازداری و یکپارچگی اطمینان حاصل میکند.
• لایه احراز هویت کاربر، هویت کلاینت را تایید میکند.
• لایه اتصال، کانال امنی را کنترل میکند که دادهها از آن برای انتقال بین طرفهای تایید شده در طول فرآیند تبادل داده استفاده میکنند. یک کانال و جریان داده ایمن برای اشکال مختلف ارتباط، مانند اتصال به سرور یا سرویس راه دور که به طور همزمان اجرا میشود یا forwarded X11 session وجود دارد.
-
رمزگذاری SSH
استفاده از رمزگذاری مزیت کلیدی SSH نسبت به پروتکلهای رقیب است. SSH تمام ارتباطات در حال انتقال بین کلاینت و سرور را رمزگذاری میکند. هر کسی که بخشی از ارتباط با استفاده از ابزار packet-sniffing باشد، میتواند دادههای در حال انتقال را بخواند یا رمزگشایی کند.
در مورد انواع رمزگذاری SSH، یعنی رمزگذاری متقارن، رمزگذاری نامتقارن و هش در ادامه بیشتر توضیح خواهیم داد.
-
پورت فورواردینگ و تانلینگ
میتوان از عبارتهای port Forwarding و Tunneling به عنوان مترادف برای سه نوع پورت فورواردینگ استفاده کرد: پورت فورواردینگ لوکال، پورت فورواردینگ ریموت و پورت فورواردینگ داینامیک که در مجموع به آنها تانلینگ میگویند.
SSH tunnel اجازه میدهد تا ترافیک رمزگذاری نشده از طریق یک کانال رمزگذاری شده منتقل شود. حتی اگر پروتکل FTP که از رمزگذاری پشتیبانی نمیکند، این امکان برای شما وجود دارد که یک تانل SSH رمزگذاری شده برای انتقال داده بین کلاینت و سرور FTP ایجاد کنید.
تانلهای SSH را میتوان برای دور زدن فایروالها و دسترسی به مواردی با محدودیت جغرافیایی استفاده کرد.
-
X11 Forwarding
زمانی که کاربر نیاز به دسترسی از راه دور به یک کامپیوتر ریموت دارد و همچنین نیاز به بازدید از یک رابط کاربری گرافیکی برای بررسی دادهها یا برنامهای که در حال حاضر در حال اجرا است داشته باشد، SSH امکان X11 forwarding را برقرار میسازد.
با استفاده از X11 Forwarding، کاربر می تواند یک برنامه کوچک را راه اندازی کرده و سپس خروجی برنامه را به سیستم عامل ویندوز مجاور منتقل نماید.
خرید وی پی اس در پنج موقعیت جغرافیایی ایران، ترکیه، هلند، آلمان و آمریکا با قابلیت تحویل آنی در پارسدو فراهم است.
SSH چگونه کار میکند؟
استفاده از SSH با دستورات SSH لینوکس یا مک آسان است. برای باز کردن اتصال SSH در سیستم عامل ویندوز، باید از یک SSH client استفاده کنید.
کاربران مک و لینوکس باید ترمینال خود را باز و سپس مراحل ذکر شده در زیر را انجام دهند:
- میتوانید یک encrypted secure shell connection setup process را با گفتن به دستگاه لوکال خود که میخواهید آن را با استفاده از دستور SSH انجام دهید، باز کنید.
- User نام کاربری حسابی است که میخواهید به آن دسترسی داشته باشید. به عنوان مثال، می توانید به حساب کاربری root دسترسی داشته باشید که کنترل کاملی بر سیستم دارد و مانند مدیر سیستم است.
- host کامپیوتری است که می خواهید به آن دسترسی داشته باشید که میتواند نام دامنه یا آدرس IP باشد
پس از اجرای دستورات، با فشار دادن Enter از شما رمز عبور خواسته میشود. اگرچه با وارد کردن آن چیزی روی صفحه نمایش داده نمیشود، رمز عبور شما در حال ارسال است. بعد از اتمام تایپ یک بار دیگر اینتر را بزنید. اگر رمز عبور شما صحیح باشد، یک پنجره ترمینال کوچک ظاهر میشود.
از طرف دیگر، استفاده از SSH در ویندوز متفاوت است. اگرچه میتوانید SSH را از طریق خط فرمان راهاندازی کنید، اکثر کاربران PuTTY، پرکاربردترین کلاینت SSH را ترجیح میدهند.
کاربران ویندوز باید مراحل زیر را انجام دهند:
- PuTTY کلاینت SSH را دانلود و نصب کنید. اگرچه ویندوز یک خط فرمان command prompt دارد، اما این کاربرپسندترین راه برای برقراری ارتباط است.
- سپس باید PuTTY را راه اندازی کنید. رابط کاربری PuTTY دارای یک بخش Hostname/IP address است که در آن باید اطلاعات سیستمی را که میخواهید SSH در آن وارد کنید.
- پس از وارد کردن آدرس صحیح در قسمت Hostname/IP address می توانید روی Open کلیک کنید.
- از شما خواسته میشود که اتصال خود را تأیید کنید. بله را انتخاب کنید. پس از این، شما به سیستم از راه دور متصل خواهید شد.
- همانطور که پرسیده شد، باید نام کاربری و رمز عبور خود را وارد کنید. این یک روش استاندارد و یک ویژگی امنیتی است زیرا رمز عبور روی صفحه نمایش داده نمیشود.
- شما اکنون کنترل دستگاه راه دور تحت اختیار خود را دارید. بنابراین، شما می توانید دستورات شل را اجرا کنید.
- در آخر، وقتی جلسه SSH را تمام کردید، exit را تایپ کنید و Enter را بزنید یا پنجره را ببندید.
به یاد داشته باشید، زمانی که از آن استفاده نمیکنید، بسیار مهم است که یک جلسه SSH را متوقف کنید تا از ارسال دستورات ناخواسته یا باز نگه داشتن آن در صورت هک شدن کامپیوتر خود جلوگیری کنید.
انواع مختلف رمزگذاری Secure Shell
پروتکل Secure Shell از سه فناوری استفاده می کند: رمزگذاری متقارن، رمزگذاری نامتقارن و هش.
-
رمزگذاری متقارن چگونه کار میکند؟
رمزگذاری متقارن نوعی است که در آن کلاینتهای SSH و میزبان کلیدهای SSH تکراری را برای رمزگذاری و رمزگشایی پیامها به اشتراک میگذارند. در واقع، هر کسی که کلید رمزگذاری را داشته باشد میتواند پیام ارسال شده را رمزگشایی کند.
کلید مشترک یا رمزگذاری مخفی نامهای دیگری برای رمزگذاری متقارن است. به طور معمول، فقط یک کلید استفاده میشود، هرچند گاهی اوقات، ممکن است دو کلید وجود داشته باشد، که هر کدام را میتوان با استفاده از دیگری تعیین کرد.
کلاینت و هاست در مورد انتخاب رمزگذاری خود با انتشار فهرستی از تراشههای پشتیبانی شده به ترتیب اولویت قبل از ایجاد اتصالات امن، توافق میکنند.
کلاینت و سرور در کل یک جلسه SSH کلید secret key را تولید میکنند و طرفهای دیگر کلید تولید شده را دریافت نمیکنند.
یک الگوریتم تبادل کلید private key خود را تولید میکند. کلید توسط دو کامپیوتر با استفاده از جفت کلیدهای عمومی و خصوصی که آنها به اشتراک میگذارند محاسبه می شود. از آنجایی که الگوریتم تبادل کلید ناشناخته است، اگر ماشین لوکال دیگری دادههای مبادله شده را رهگیری کند، نمی تواند کلید را استخراج کند.
از آنجایی که هر secret token جلسه SSH منحصر به فرد است و قبل از احراز هویت مشتری ایجاد میشود، تمام بستههایی که بین کامپیوترهای لوکال و ریموت حرکت میکنند باید از private key برای رمزگذاری آنها پس از تولید همان کلید استفاده کنند. اعتبارنامه ها همیشه در برابر packet sniffersهای شبکه محافظت میشوند زیرا رمز عبور تایپ شده توسط کاربر در آن گنجانده شده است.
استانداردهای رمزگذاری پیشرفته، CAST128 و Blowfish نمونههایی از رمزگذاری متقارن هستند.
-
رمزگذاری نامتقارن چگونه کار میکند؟
رمزگذاری نامتقارن از دو کلید برای رمزگذاری و رمزگشایی استفاده می کند، یعنی یک کلید عمومی و یک کلید خصوصی. این دو کلید با هم کار می کنند تا یک جفت کلید عمومی-خصوصی (public-private key pair) ایجاد کنند.
هر کسی می تواند پیام را با استفاده از قالب فایل کلید عمومی رمزگذاری کند، اما فقط گیرنده با کلید خصوصی منحصر به فرد خود میتواند آن را رمزگشایی کند.
سرور از کلیدهای عمومی و خصوصی کلاینت برای تایید هویت مشتری در مرحله احراز هویت کاربر استفاده میکند زیرا تنها کلید خصوصی منطبق میتواند هر چیزی را که با استفاده از کلید عمومی رمزگذاری شده است رمزگشایی کند.
مکانیسمهای رمزگذاری و رمزگشایی رویههای خودکار هستند.
جلسه SSH در صورتی شروع میشود که کلاینت SSH بتواند پیام را با موفقیت رمزگشایی کند، مشروط بر اینکه کلید خصوصی مورد نیاز برای اتصال را داشته باشد.
-
هش کردن چگونه کار میکند؟
تفاوت توابع هش یک طرفه با دو نوع رمزگذاری این است که هرگز قرار نیست رمزگشایی شوند. برای هر ورودی، آنها یک مقدار واحد از مدت زمان مجموعه را ارائه میدهند که هیچ روند قابل تشخیصی را نشان نمیدهد که بتوان از آن استفاده کرد. با توجه به این واقعیت، رزرو آنها تقریبا غیرممکن است.
ایجاد یک هش شبکه رمزنگاری از یک ورودی داده شده ساده است، اما تولید اطلاعات از سوپ غیرممکن است. به عبارت دیگر، اگر کلاینتها ورودی صحیحی برای پروتکل شبکه رمزنگاری داشته باشند، میتوانند یک هش رمزنگاری ایجاد کنند و مقدار آن را بررسی کنند تا ببینند آیا اطلاعات صحیحی دارند یا خیر.
پروتکلهای Secure shell از روشهای احراز هویت HMAC یا hash-based authentication methods استفاده میکنند.
یک روش مناسب برای احراز هویت پیام همراه با الگوریتم کلید رمزگذاری متقارن انتخاب شده است که به طور مشابه با نحوه انتخاب رمز عمل میکند.
هر انتقال باید دارای یک MAC باشد که برای هر پیامی که با استفاده از کلید متقارن، شماره توالی پکت و محتوای پیام ، تولید میشود. جزء نهایی بسته ارتباطی خارج از انتقال فایلهای رمزگذاری شده متقارن منتقل میشود.
چگونه این روشهای رمزگذاری با SSH کار میکنند؟
Secure shell از معماری انتقال کلاینت استفاده میکند تا احراز هویت SSH دو کامپیوتر راه دور و رمزگذاری دادههایی که بین آنها منتقل میشود را فعال کند.
SSH، به طور پیش فرض، باید دست دادن TCP را با سرور شروع کند، از اتصال متقارن ایمن اطمینان حاصل کند، بررسی کند که هویت نمایش داده شده توسط سرور با رکوردهای قبلی مطابقت داشته باشد (معمولا در پروتکل انتقال فایل ذخیره کلید RSA ذخیره می شود) و کاربر لازم را ارائه دهد. اعتبار برای احراز هویت اتصال قبل از برقراری اتصال SSH.
فرآیند اتصال امن شامل دو مرحله است: فرآیند احراز هویت کاربر و هر دو سیستم باید در مورد استانداردهای رمزگذاری برای محافظت از مکالمات آینده توافق کنند. در صورتی که اعتبارنامه مطابقت داشته باشد، به کاربر دسترسی داده میشود.
SSH چقدر امن است؟
پروتکل شبکه SSH هنگامی که با اقدامات امنیتی مرسوم استفاده میشود بسیار امن است. با این حال، حفظ امنیت اتصالات SSH به عوامل انسانی بستگی دارد.
در سرورهای SSH، حملات brute force معمول هستند. مهاجمان از شناسهها و رمزهای عبور محبوب برای اتصال به سرور SSH راه دور استفاده میکنند. آنها از افزایش دسترسی برای رسیدن به حساب root پس از دسترسی به سیستم استفاده میکنند.
استفاده از کلیدهای SSH به جای روشهای احراز هویت مانند رمزهای عبور توصیه میشود. سازمانهایی که اطلاعات حیاتی آنها به حفظ محرمانه بودن کلیدها بستگی دارد، همچنان با خطر قابل توجهی از مدیریت نامناسب کلید SSH مواجه هستند.
یکی دیگر از نقصهای امنیتی بالقوه پورتهای SSH در معرض دید است. برخی از برنامههای بدافزار دستگاههای اینترنت اشیا (IoT) با پورتهای قابل دسترسی را هدف قرار میدهند و آن دستگاهها را به عنوان backdoor شبکه لوکال کاوش میکنند.
امنیت پروتکل ارتباطی شبکه به دلیل فراوانی کلاینتهای SSH در بازار به امنیت برنامههای شخص ثالث نیز بستگی دارد.
نتیجه
secure socket shell یک پروتکل شبکه پیچیده است، اما تمام ارتباطات بین سرویس SSH client و SSH server کاملا رمزگذاری شده و ایمن است. در عمل، این یک جایگزین امن برای هر سازمانی است که به انتقال امن فایل نیاز دارد، و ارتباطات آنلاین ممکن است از آن سود زیادی ببرد.