فهرست محتوا
SSH چیست؟
SSH یا Secure Socket Shell، نوعی پروتکل شبکه میباشد که کاربران (به ویژه مدیران سیستم) با استفاده از آن میتوانند به شکلی امن از راه دور به سیستم خود دسترسی داشته باشند. SSH همچنین با ارائه قابلیتهای امنیتی مانند رمزنگاری دادهها و احراز هویت (با رمز عبور و کلید عمومی)، امنیت دو کامپیوتری که از طریق یک شبکه مانند اینترنت به هم متصل میشوند را تامین میکند. مدیران سیستم با وجود اساساچ میتوانند با اطمینان خاطر بالایی سیستمها و برنامههای خود را از راه دور مدیریت و از طریق شبکه به رایانه دیگری متصل شوند. SSH همچنین این امکان را به شما میدهد تا دستوراتی را از راه دور اجرا و فایلهایی را به کامپیوتر دیگری منتقل کنید. SSH به صورت پیشفرض از پورت شماره ۲۲ استفاده میکند اما به منظور افزایش امنیت بهتر است آن را تغییر دهید. همانطور که اشاره شد، SSH اطلاعات را رمزنگاری میکند و در نتیجه بیشتر مناسب شبکههای ناامن بوده و میتوانیم آن را جایگزین مناسبی برای پروتکلهای ارتباطی محافظت نشده (مانند telnet، rlogin) و روشهای انتقال فایل ناامن (مانند FTP) در نظر بگیریم. البته اساساچ تنها پروتکل امنیتی شبکه نبوده و پروتکلهایی رمزنگاری مانند SSL ،IPsec ،S/MIME و PGP نیز باعث افزایش امنیت ارتباطات شبکهای میشوند.
تاریخچه SSH
اولین نسخه پروتکل SSH به نام SSH-1 در سال ۱۹۹۵ توسط Tatu Ylönen که در آن زمان محقق دانشگاه صنعتی هلسینکی بود، طراحی شد. این دانشمند علوم کامپیوتری کمی بعد شرکت SSH Communications Security راهاندازی کرد که امروزه یکی از فعالترین شرکتها در حوزه SSH و امنیت سایبری میباشد. با گذشت زمان، نقصها و حفرههای امنیتیهای مختلفی در SSH-1 یافت شد و امروزه این نسخه کاملا منسوخ شده و امنیت چندانی ندارد. SSH-2 نسخه فعلی این پروتکل امنیتی میباشد که در سال ۲۰۰۶ توسط کارگروه مهندسی اینترنت (IETF) به عنوان نسخه استاندارد SSH مورد پذیرش قرار گرفت. SSH-2 از کلید تبادل دیفی-هلمن (Diffie-Hellman) استفاده میکند و با SSH-1 نیز سازگار نیست. SSH-2 در مجموع نسبت به SSH-1 از امنیت بسیار بیشتری برخوردار است. اساساچ در مجموع بسیاری از مشکلات پروتکلها و ابزارهای قدیمی مانند Rlogin، Rcp و Telnet را برطرف کرد.
SSH چگونه کار میکند؟
SSH نیز به مانند بسیاری از پروتکلها بر اساس مدل کلاینت-سرور (Client-Server) عمل کرده و در آن اتصالی میان کلاینت و سرور SSH برقرار میشود. سرور SSH همیشه منتظر میماند تا کلاینتها برای اتصال درخواست بدهند. کلاینت SSH آغاز کننده فرآیند اتصال بوده که البته قبل از اتصال و ارسال دستورات SSH به سرور باید فرآیند احراز هویت را پشت سر بگذارد و در مجموع نیز بیشتر تنظیمات اتصال توسط کلاینت SSH انجام میشود. پروتکل SSH برای اطمینان از حفظ حریم خصوصی و یکپارچگی اطلاعاتی که میان کلاینت و سرور ردوبدل میشوند، از رمزنگاری متقارن و الگوریتمهای هشینگ (Hashing) قدرتمند استفاده میکند.
وقتی میان کلاینت و سرور اتصال برقرار میشود، در اصطلاح میگویند کلاینت با سرور یک سشن SSH را آغاز کرده است. اساساچ تا حد زیادی از دادهها در برابر حملات سایبری مانند حمله مرد میانی (man-in-the-middle attack) محافظت میکند. سرورهای ریموت معمولا از لینوکس استفاده میکنند زیرا این سیستم عامل از امنیت و عملکردی بالایی برخوردار بوده و بسیاری از سرورهای مبتنی بر لینوکس سالیان است بدون خرابی یا حتی راهاندازی مجدد در حال کار کردن هستند. اکثر سشنهای SSH تنها شامل ۲ مرحله احراز هویت و اجرای دستورات میشوند و به دلیل مسائل امنیتی توصیه میشود از احراز هویت با کلید عمومی استفاده کنید. در زیر مراحل ایجاد یک سشن اساساچ را مشاهده میکنید:
۱- کلاینت برای برقراری اتصال با سرور درخواستی را به سمت آن ارسال میکند.
۲. سرور با ارسال یک کلید عمومی رمزنگاری شده به درخواست کلاینت پاسخ میدهد.
۳. پس از احراز هویت کلاینت، میان سرور و کلاینت کانالی امن ایجاد میشود.
۴. کاربر از طریق کلاینت SSH خود به سیستم عامل سرور میزبان متصل میشود.
SSH چه کاربردها و مزایایی دارد؟
SSH به صورت پیشفرض در سرورهای یونیکس، لینوکس و مک مورد استفاده قرار میگیرد و در نتیجه میتوان گفت که SSH یکی از مهمترین پروتکلهای هر دیتاسنتری است. اتصالات پروتکل اساساچ باعث افزایش امنیت ارتباطات میان ماشینهای محلی و هاستهای ریموت (Remote Host) شده و دارای کاربردهای متعددی است. در ادامه با مهمترین کاربردها و مزایای این پروتکل حرفهای آشنا میشوید:
- دسترسی ایمن به فرآیندهایی که به صورت خودکار اجرا میشوند
- امکان ویرایش، انتقال و در مجموع مدیریت فایلهای سرور
- مدیریت زیرساختهای شبکه و سایر اجزای حیاتی سیستم
- مدیریت سیستم عامل و پلتفرمهای مجازیساز
- محافظت از کلاینت و سرور در برابر حملات سایبری
- دسترسی از راه دور و ایمن به منابع مورد نیاز
- اجرای ایمن پچ یا همان وصلههای نرمافزاری
- مدیریت از راه دور سختافزار سرور و روترها
- امکان خودکارسازی فرآیند ورود به سیستم
- امکان انتقال خودکار فایلها
- ایمنسازی فرآیند پشتیبانگیری
- امکان بهروزرسانی سیستم
- اجرای ریموت دستورات
- رمزنگاری پیامها
معایب SSH کدامند؟
- مستعد حملات سایبری مانند بروتفورس
- نداشتن رابط گرافیکی بومی
- نیاز به داشتن دانش فنی
- پیچیدگی پیکربندی
OpenSSH چیست؟
OpenSSH پروژه متنباز و رایگان مرتبط با پروتکل SSH است. Tatu Ylönen اولین نسخه رایگان SSH را ایجاد کرد اما نسخههای بعدی که توسط وی روانه بازار شدند، رایگان نبودند و علاوهبراین کاربران نمیتوانستند بدون مجوز تغییراتی را در آن ایجاد کنند. اما گروهی از توسعهدهندگان از روی کدهای نسخه رایگان اصلی اساساچ، نسخهای به نام OpenSSH را ایجاد کردند که امروزه به عنوان بخشی از پروژه OpenBSD (نوعی سیستم عامل مبتنی بر یونیکس) توسعه داده میشود. تمام سیستم عاملهای اصلی مانند ویندوز، مکاواس و همچنین اکثر توزیعهای لینوکس از OpenSSH پشتیبانی میکنند. در هنگام انجام تنظیمات OpenSSH باید بسیار دقت کنید زیرا یک اشتباه کوچک ممکن است سیستم شما را در برابر حملات سایبری آسیبپذیر کند.
تکنیکهای رمزنگاری SSH
SSH برای ایجاد یک ارتباط امن میان کلاینت و سرور، از سه تکنیک رمزنگاری متقارن، نامتقارن و هشینگ استفاده میکند. اما این ۳ تکنیک چگونه کار میکنند؟
رمزنگاری متقارن (Symmetric Encryption)
در تکنیک رمزنگاری متقارن تنها از یک کلید برای رمزگذاری و رمزگشایی پیامهای ارسالی و دریافتی میان کلاینت و سرور استفاده میشود. این نوع تکنیک رمزنگاری، کل فرآیند اتصال اساساچ را رمزنگاری میکند، عملی که مانع از بروز حمله سایبری مرد میانی میشود اما یک مشکل اساسی وجود دارد. اگر شخص ثالثی در هنگام تبادل کلید میان سرور و کلاینت حضور داشته باشد، در آن صورت میتواند کلید را شناسایی و به پیام ردوبدل شده دسترسی پیدا کند. برای جلوگیری از این مشکل باید از الگوریتم تبادل کلید استفاده کنیم، الگوریتمی که با کمک آن میتوان کلیدهای مخفی SSH را به شکل امنی ردوبدل کرد. ما برای پیادهسازی این نوع الگوریتم نیاز به رمزنگاری نامتقارن داریم.
رمزنگاری نامتقارن (Asymmetric encryption)
در رمزنگاری نامتقارن از دو کلید متفاوت برای رمزنگاری و رمزگشایی پیامها استفاده میشود، کلید خصوصی (Private Key) و دیگری عمومی (Public Key). کلید خصوصی تنها مخصوص کاربر بوده و نمیتوان آن را با هیچ کاربر دیگری به اشتراک گذاشت اما کلید عمومی را میتوان در اختیار هر کسی قرار داد. کلید عمومی در سرور اساساچ و کلید خصوصی نیز به صورت محلی در کلاینت SSH ذخیره میشود. این دو کلید باهم بکار رفته و در اصطلاح یک جفت کلید را تشکیل میدهند. پیام رمزنگاری شده با کلید عمومی تنها با استفاده از کلید خصوصی مربوطه میتواند رمزگشایی شود. این تکنیک بسیار امن است زیرا حتی اگر شخص ثالث بتواند به کلید عمومی دسترسی پیدا کند بازهم نمیتواند پیامهای ردوبدل شده را رمزگشایی کند زیرا هیچ دسترسی به کلید خصوصی ندارد. البته رمزنگاری نامتقارن کل سشن SSH را رمزگذاری نمیکند و تنها در هنگام استفاده از الگوریتم تبادل کلید بکار گرفته میشود.
هشینگ (Hashing)
هشینگ یک طرفه (One-way hash) یکی دیگر از تکنیکهای امنیتی SSH است که نحوه عملکرد تابع آن با تکنیکهای رمزنگاری متقارن و نامتقارن تفاوت دارد زیرا قرار نیست در فرآیند هشینگ رمزگشایی صورت بگیرد. توابع هش برای هر پیام ورودی، مقداری منحصربهفرد با طول مشخص ایجاد میکند که هیچ نظم خاصی ندارد و به همین دلیل هکرها نمیتوانند هیچ گونه سوءاستفادهای از آن بکنند. برای ایجاد هش رمزنگاری شده تنها نیاز به یک ورودی داریم اما امکان ندارد از هش یا خروجی ایجاد شده به ورودی اولیه دست پیدا کنیم. پروتکل SSH از HMAC (احراز هویت مبتنی بر هش) برای تأیید درستی پیامها استفاده میکند و این تضمین را به کاربر میدهد که پیامها و یا دستورات دریافت شده به هیچ وجه دستکاری نمیشوند. در این تکنیک هر پیام ارسالی باید دارای یک MAC باشد که شامل ۳ مولفه کلید متقارن، شماره توالی بسته و محتوای پیام میشود.
مقایسه SSL و SSH
پروتکلهای SSH و SSL به احراز هویت و رمزنگاری دادههایی که میان کلاینت و سرور منتقل میشوند، کمک میکنند اما با وجود تشابهاتی که دارند، بازهم دو هدف بسیار متفاوت را دنبال میکنند. بنابراین درک تفاوت میان SSH و SSL بسیار مهم است. SSL برای رمزنگاری دادههایی که میان مرورگر وب و وبسرور منتقل میشوند، مورد استفاده قرار میگیرد و وبسایتهایی که از SSL استفاده میکنند در ابتدای آدرس URL خود “HTTPS” دارند. اما اساساچ پروتکلی است که کاربران با استفاده از آن میتوانند از راه دور و به شکلی امن به سیستم مورد نظر خود دسترسی پیدا کنند. در ادامه با مهمترین تفاوتهای این دو پروتکل معروف آشنا میشوید:
SSH | SSL | |
شماره پورت | ۲۲ | ۴۴۳ |
نحوه عملکرد | رمزنگاری ارتباط میان دو کامپیوتر | رمزنگاری ارتباط میان مرورگر و سرور |
نام کامل | Secure Socket Shell | Secure Socket Layer |
مبتنی بر | تونلینگ (Tunneling) | گواهینامههای دیجیتال |
نوع پروتکل | پروتکل رمزنگاری شبکه | پروتکل امنیتی |
نحوه رمزنگاری | استفاده از کلیدهای خصوصی و عمومی و یا رمزعبور و نام کاربری | استفاده از کلیدهای خصوصی و عمومی |
مناسب برای | ارسال امن دستورات از طریق اینترنت | محافظت از دادههای حساس مانند اطلاعات بانکی |
مقایسه Telnet و SSH
Telnet یک پروتکل استاندارد TCP/IP است که در سال ۱۹۶۹ ایجاد شد که هنوز هم برخی افراد و شرکتها از آن استفاده میکنند. Telnet و SSH هر دو پروتکلهایی هستند که با استفاده از آنها میتوان از راه دور به یک سیستم دسترسی داشت و آن را مدیریت کرد. امنیت مهمترین تفاوت این دو پروتکل است و SSH با آمدن خود بسیاری از آسیبپذیریهای امنیتی Telnet را برطرف کرد. در جدول زیر مهمترین تفاوتهای این دو پروتکل را مشاهده می کنید:
SSH | Telnet | |
میزان استفاده از پهنای باند | بالا | پایین |
سیستم عامل | سازگار با انواع سیستم عاملها | لینوکس و ویندوز |
رمزنگاری | تمام دادهها را رمزنگاری میکند | بدون رمزنگاری |
امنیت | امنیت بالا | امنیت بسیار کمتری از SSH دارد |
شماره پورت | ۲۲ | ۲۳ |
احراز هویت | با استفاده از کلید عمومی | بدون احراز هویت |
مناسب برای | شبکههای عمومی | شبکههای خصوصی |
RFC | ۴۲۵۳ | ۸۵۴ |
امکان انتقال فایل | امکان انتقال فایل با استفاده از پروتکل SCP | ندارد |
محبوبیت | از محبوبیت بالایی برخوردار است | به دلیل امنیت پایین چندان مورد استفاده قرار نمیگیرد |
حریم خصوصی اطلاعاتی | استفاده از نام کاربری و رمز عبور کامپیوتر را مستعد حملات سایبری میکند | دادهها به راحتی قابل رهگیری نیستند |
نوع پروتکل | TCP, UDP, SCTP | TCP, UDP |
سوالات متداول
آیا SSH قابل هک شدن است؟
جواب مثبت است. SSH با وجود امنیت بالا، بازهم در برابر حملات سایبری آسیبپذیر است. SSH یکی از پر استفادهترین پروتکلها در حوزه فناوری اطلاعات است و به همین دلیل هکرها تمایل زیادی به هک کردن آن دارند. هکرها معمولا برای بدست آوردن کلیدهای SSH از حمله بروتفورس استفاده میکنند.
SSH Tunneling چیست؟
SSH Tunneling روشی برای انتقال دادههای شبکهای دلخواه از طریق یک اتصال SSH رمزنگاری شده میباشد و میتوان از آن برای افزودن قابلیت رمزنگاری به سیستمها و برنامههای قدیمی یا آسیبپذیر استفاده کرد. SSH Tunneling همچنین میتواند برای راهاندازی VPN و دسترسی به خدمات اینترانت در فایروالها مورد استفاده قرار میگیرد.
منابع: Hostinger، phoenixnap و Javatpoint