محیط کسبوکار دائماً در حال تغییر است. شرکتها با استفاده از فناوریهای نوظهور وارد یک تحول دیجیتالی شدهاند که به آنها امکان میدهد سریع حرکت کنند و روش فعالیت خود را تغییر دهند. آنها به این طریق میتوانند هزینهها را کاهش و بهرهوری خود را افزایش دهند. بااینحال، چنین فناوریهایی محیط سنتی را از بین برده است و هویت افراد برای حفظ امنیت اهمیت خاصی دارد. چالشهای مدرن محیط کاری، نیازمند رویکردهای امنیتی مدرن است. دیگر رمز عبورها برای دسترسی به دادههای مهم نمیتوانند بهعنوان ابزاری برای احراز هویت قابلقبول مورداستفاده قرار گیرند.
گذرواژهها به دلیل ناامن بودن، به کاربر امنیت کاذب میدهند. شرکتها و سازمانها باید از راهحلهایی دیگر استفاده کنند، در چنین شرایطی است که احراز هویت مبتنی بر SSH استفاده میشود.
اما پروتکل SSH چیست؟ با ما تا انتها همراه باشید تا علاوه بر پاسخ به این سؤال، به شرح 3 نکته از امنیت پروتکل SSH بپردازیم.
پروتکل SSH چیست
پروتکل SSH که بانامهای Secure Shell و Secure Socket نیز شناخته میشود، در سال 1995 توسط فردی فنلاندی به نام تاتو یلونن (Tatu Ylönen) ایجاد شد. پروتکل SSH یک پروتکل شبکه است که به مدیران سامانه یا ادمینها راهی مطمئن برای دسترسی به دادهها از راه دور با یک شبکه ناامن ارائه میدهد.
پروتکل SSH، رمز عبور یا احراز هویتی مبتنی بر کلید عمومی ارائه میدهد و ارتباطات بین دونقطه پایانی شبکه را رمزگذاری میکند. این روش یک جایگزین امن برای پروتکلهای قدیمی ورود مانند rlogin و telnet و روشهای ناامن انتقال فایل مانند FTP است. SSH علاوه بر رمزگذاری قوی، برای مدیریت سیستمها و برنامهها از راه دور، ارائه وصلههای نرمافزاری (پچ) یا اجرای دستورات و انتقال فایلها بهطور گسترده استفاده میشود.
نحوه عملکرد پروتکل SSH
یکی از دغدغههای مدیران فناوری اطلاعات، دسترسی و مدیریت سرورهای راه دور است. پیشتر بدین منظور از Telnet استفاده میشد که ایمنی بالایی نداشت؛ زیرا از مکانیزم امنیتی خاصی استفاده نمیکند و دادهها را بهصورت متن ساده، از طریق شبکه اینترنت انتقال میدهد و هرکسی میتواند به این اطلاعات دسترسی پیدا کند. پروتکل SSH برای برطرف کردن این مشکلات به وجود آمد.
احراز هویت سرور (میزبان)
پروتکل SSH در سرورهای یونیکس و لینوکس تعبیه شده است تا ارتباطات ایمن میان سیستمها برقرار کند. اتصال توسط یک گیرنده SSH ایجاد میشود که قصد دارد به سرور SSH متصل شود. سرویس گیرنده SSH پس از آغاز فرآیند راهاندازی اتصال، از رمزنگاری کلید عمومی برای تأیید هویت سرور SSH استفاده میکند. پس از طی مراحل راهاندازی، پروتکل SSH از رمزنگاری بسیار قوی و الگوریتمهای هش استفاده میکنند تا از وجود حریم خصوصی و یکپارچگی دادههایی که بین سرویس گیرنده و سرور ردوبدل میشود، اطمینان حاصل کنند.
الگوریتمهای هش در تمام اینترنت و معمولاً بهمنظور امنیت بیشتر رمز عبورها استفاده میشوند و توابعی هستند که یکرشته داده را به یک خروجی رشتهای با مقدار ثابت تبدیل میکنند.
تصویر زیر، نشاندهنده جریان سادهای از اتصال SSH است:
- کاربر اقدام به اتصال به سرور SHH میکند.
- سرور کلید عمومی خود را برای کاربر ارسال میکند.
- کلید عمومی سرور در فایل میزبان شناختهشده ذخیره میشود.
- سرویس گیرنده و سرور در مورد پارامترهای اتصال تصمیمگیری کرده و ارتباط برقرار میکنند.
رمزگذاری و یکپارچگی
در طول راهاندازی اتصال، سرویس گیرنده و سرور تصمیم واحدی در مورد الگوریتم رمزنگاری متقارن میگیرند تا برای ارتباط آنها استفاده شود. پسازآن کلید رمزنگاری مورداستفاده را ایجاد میکنند.
پروتکل SSH از الگوریتمهای رمزگذاری قوی استاندارد صنعت مانند AES برای ایمنسازی ارتباط میان طرفین استفاده میکند. پروتکل SSH علاوه بر این، برای اطمینان از یکپارچگی دادههای منتقلشده از الگوریتمهای هش مانند SHA-2 استفاده میکند.
احراز هویت کاربر
پروتکل SSH با استفاده از گذرواژههای عادی و معمول یا احراز هویت کلید عمومی، به کاربران اجازه ورود به سرورها را میدهد. بااینحال، استفاده از رمز عبور خطرات و ناکارآمدیهای خود را دارد و احراز هویت عموماً از طریق کلید عمومی انجام میشود.
کلیدهای SSH نهتنها بسیار قویتر از گذرواژهها هستند، بلکه به ادمینها و مدیران سیستم اجازه میدهند تا به ورود به سیستم، رمز عبور دستی نیاز نداشته باشند.
کاربر چگونه با کلیدهای SSH احراز هویت میکند؟
آنها با استفاده از دستور ssh-keygen یک جفت کلید عمومی خصوصی با یک سرویس گیرنده SSH برای مثال OpenSSH، ایجاد میکنند. کاربر پسازاین کلید عمومی مخصوص خود را در فایل author_keys در سروری که باید به آن متصل شود قرار میدهد. وقتی کاربر از راه دور با استفاده از احراز هویت مبتنی بر کلید وارد سیستم میشود، سرور OpenSSH به دنبال کلیدهای مجاز میگردد و میتواند با کلید خصوصی مربوط به سرور احراز هویت کند. ازآنجاییکه به احراز هویت دستی نیاز نیست، احراز هویت مبتنی بر کلید، اغلب برای ایمنسازی موارد استفاده از اتوماسیون فرآیند فناوری اطلاعات انجام میشود؛ مانند انتقال فایلهای ایمن خودکار، فرآیندهای پشتیبان گیری و کپی یا ابزارهای مدیریت پیکربندی مانند Ansible، Terraform، Chef یا Puppet.
موارد استفاده از پروتکل SSH
اتصالات SSH بیشتر برای ایمنسازی انواع مختلف ارتباطات بین یک کامپیوتر و میزبان از راه دور استفاده میشود؛ ازجمله:
- دسترسی ایمن به منابع از راه دور
- اجرای دستورات از راه دور
- ارائه بهروزرسانی و وصلههای نرمافزاری (پچ)
- امکان انتقال فایلها بهصورت خودکار یا تعاملی
پروتکل SSH علاوه بر ایجاد یک کانال امن بین رایانه و دستگاه متصل به شبکه، برای مدیریت زیرساختهای مهم شرکتها مانند روترها، سختافزار سرور، سیستمعاملهای مجازیسازی و رایانهای استفاده میشود. کلیدهای SSH برای خودکارسازی دسترسی به سرورها و اغلب در اسکریپتها، سیستمهای پشتیبان و ابزارهای مدیریت پیکربندی نیز کاربرد دارند.
کلیدهای SSH به دلیل طراحی خاص خود که امکان اتصال از راه دور را فراهم میکنند، به کاربران قابلیت یکپارچه ورود به سیستم (SSO) را میدهند. این قابلیت به افراد اجازه میدهند بهراحتی و بدون نیاز به واردکردن چندباره رمز عبور، میان حسابهای کاربری خود جابهجا شوند.
ضعفهای پروتکل SSH
کلیدهای SSH و مدیریت ایمن، اهمیت فراوانی در کسبوکارها دارند. مشکل این است که اکثر سازمانها از تعداد زیادی کلید SSH در دسترس خود، آگاهی ندارند؛ بنابراین، این کلیدها بدون مدیریت رها میشوند. کلیدهای مدیریت نشده سازمانها را در معرض خطرات قابلتوجهی قرار میدهند که در بدترین حالت میتواند سیستمهای اطلاعاتی مهم را به مدت چندین ماه، غیرفعال کند.
کلیدهای SSH همان دسترسی به نام کاربری و رمز عبور را ارائه میدهند. علاوه بر این، آنها اغلب دسترسی بالایی به حسابهای خاص و سطح بالا در سطح سیستمعامل میدهند. همچنین دسترسی به منابعی مانند سرورها، پایگاههای داده، روترها، فایروالها، سیستمهای بازیابی داده، سیستمهای پرداخت، دادههای مالی و اطلاعات کاربران برای آنها فراهم میشود. دسترسی یک هکر و مهاجم به ریشه یا Root باعث میشود او بتواند در سرور هر کاری انجام دهد و تغییرات دلخواه خود را اعمال کند. او میتواند دادههای جعلی را وارد سیستم کند، نرمافزارهای رمزگذاری را خراب کند، بدافزار نصب کند یا حتی باعث نابودی کل سیستم شود.
در ادامه اجازه دهید به 3 نکته در مورد امنیت پروتکل SSH اشاره کنیم.
1. سرورهای SSH تأیید نشده
وقتی به کاربران عادی و ادمینها، اجازه دهید دسترسی سرور SSH یا sshd را در سیستمهای غیرضروری فعال کنند، سطح حمله خود را افزایش میدهید که به مهاجمان شانس بیشتری برای دسترسی از راه دور به آن سیستمها میدهد. همچنین سرورها و سرویسگیرندگان SSH که برای حفاظت از سیستمها و دادهها طراحی شدهاند، در صورت بهروز نبودن میتوانند باعث افشا شدن دادههای سیستمی شوند.
2. پیکربندی آسیبپذیر SSH
اکثر برنامههای سرور و سرویسگیرنده SSH مانند OpenSSH شامل تعداد قابلتوجهی پارامتر برای پیکربندی هستند که بر امنیت و عملکرد آنها تأثیر بسزایی دارد. ازجمله گزینههای احراز هویت، دسترسی به روت دستگاه، ارسال پورت، مکان فایلها و دیگر موارد مشابه است. خوشبختانه در طول سالها اکثر توسعهدهندگان پیادهسازی SSH، پیکربندیهای پیشفرض را انتخاب کردهاند که امنیت بسیار بالاتری دارند.
بااینحال، بعضی از این پیشفرضها مانند ارسال پورت و مکان فایلها بهینهسازی نشدهاند. همچنین اگر کاربران عادی و ادمینها بدون در نظر گرفتن پیامدهای امنیتی تغییری ایجاد کنند، میتوانند سیستم را در معرض حملهها و خطرات گستردهای قرار دهند.
3. نظارت بر پروتکل SSH
SSH بهطورکلی با اجزای دیگر ادغام شده است تا به کاربر دسترسیهای لازم را دهد، برای مثال مجوزهای سیستمعامل، PAM، sudo، مدیریت هویت کاربران و مواردی از این قبیل. یکی از ضعفهای پروتکل SSH این است که بهسختی میتوان تنظیمات ایمن تمام این اجزا را بهصورت مرکزی تنظیم کرد تا از حملات موفق مهاجمان جلوگیری شود. این امر وقتی چند کاربر ادمین داشته باشید، دشوارتر خواهد شد، زیرا ممکن است هرکدام بدون نظارت یا بازبینی در مورد نحوه پیادهسازی SSH تصمیمگیری کنند. بدون این نظارت، پتانسیل حمله بهمراتب بالاتر میرود، بهویژه ازآنجاییکه مهاجمان از راه دور به سیستمهای SSH دسترسی پیدا کرده و یک محیط رمزگذاری شده برای پنهان کردن اقدامات خود مهیا میکنند.
موارد بالا، خلاصهای از مهمترین نکات امنیت و ضعفهای پروتکل SSH هستند که درزمینهٔ فناوری اطلاعات و محیطهای ذخیرهسازی ابری وجود دارند. همانطور که مشاهده کردید، اگرچه SSH یک ابزار بسیار مهم امنیتی است اما اگر بهدرستی مدیریت نشود خرابیهای زیادی به دنبال خواهد داشت.