پروتکل SSH چیست و چه کاربردی دارد؟

پروتکل SSH چیست و چه کاربردی دارد؟

Secure Shell یا Secure Socket Shell که SSH شناخته می شود از پروتکل های شبکه است و تحت پروتکل IEFT توسعه پیدا کرده که کاربران می توانند از آن در بستری امن به عنوان یک راه دسترسی به کامپیوتری دیگر استفاده کنند Secure Shell وظیفه تایید هویت و رمزگذاری اطلاعاتی که در یک شبکه باز تبادل می شوند را بر عهده دارد.

SSH امروزه بسیار کاربردی شده و مدیران شبکه می توانند از راه دور سیستم ها را مدیریت کنند. دستورات خود را از راه دور وارد و اجرا کنند ، فایل ها را بین دو سیستم منتقل کنند و … . اصلی ترین تفاوتی که میان پروتکل SSH و سایر پروتکل ها مثل Telnet ، rLogin و … وجود دارد. امنیت SSH و رمزگذاریی است که بر روی اطلاعات تبادل شده انجام می دهد. به کمک پروتکل SSH به راحتی می توان در یک بستر امن به ارتباط و تبادل اطلاعات میان Client و Server پرداخت.

برای استفاده از SSH معمولا از سرویس ها و نرم افزار های ssh که امکان استفاده از قابلیت های SSH را فراهم می کنند ، استفاده می شود. نکته قابل ذکر این است که SSH بیانگر پروتکل است و ssh نشانه سرویس ها و نرم افزار های این پروتکل است. همانطور که در مورد وجود پروتکل های مختلف برای ارتباط سرور و کلاینت صحبت کردیم، باید گفت که پروتکل SSH نسخه تکمیل و امن شده پروتکل Telnet می باشد که از پورت 22 استفاده می کند.

پروتکل Telnet چیست و چگونه کار می‌کند؟

تکنولوژی Telnet یا Teletype Network یکی از راه‌های کنترل یک رایانه از راه دور می‌باشد که از طریق محیط Command Prompt یا به اختصار CMD امکان برقراری ارتباط میان ۲ کامپیوتر را فراهم می‌کند، این پروتکل روی پورت ۲۳ فعال است، اما یک نقطه ضعف بزرگ دارد و آن چیزی نیست جز عدم رمزنگاری اطلاعات ارسالی و دریافتی و این بدان معناست که داده‌های رد و بدل شده روی شبکه می‌تواند به راحتی توسط افراد غیر مجاز شنود شده و مورد سوءاستفاده قرار بگیرد.

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

 

تاریخچه پروتکل SSH

نسخه اول پروتکل ssh توسط Tatu Ylönen در سال 1995 میلادی منتشر و طراحی شد که در آن زمان محقق دانشگاه صنعتی هلسینکی بود و بعدا به راه اندازی SSH Communications Security، یک فروشنده امنیت سایبری مستقر در کشور فنلاند پرداخت. با گذشت زمان نقص های مختلفی در ssh-1 پیدا شده است و اکنون دیگر از این نسخه استفاده نمی شود و استفاده از آن بی خطر نیست ssh-2 نسخه فعلی پروتکل های Secure Shell در سال 2006 میلادی به عنوان یک مشخصات Standards Track توسط Internet Engineering Task Force (IETF) به تصویب رسید SSH-2 با SSH-1 سازگار نیست و از تبادل کلید Diffie-Hellman استفاده می کند و بررسی یکپارچه قوی تر که از کدهای تایید تصدیق پیام استفاده می کند تا امنیت را بهبود بخشد. کلاینت ها و سرورهای ssh می توانند از تعدادی روش رمزگذاری استفاده کنند که بیشتر Advanced Encryption Standard (AES) و Blowfish به کار گرفته می شوند. با این وجود، هیچ آسیب پذیری قابل بهره برداری شناخته شده ای در SSH-2 وجود ندارد، هرچند اطلاعات فاش شده توسط ادوارد اسنودن در سال 2013 میلادی نشان داد که آژانس امنیت ملی (NSA) ممکن است بتواند بخشی از ترافیک SSH را رمزگشایی کند.

 

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

تکنولوژی SSH نسخه‌ی امن Telnet است که تحت استاندارد IEFT یا Internet Engineering Task Force  روی پورت شماره‌ی ۲۲ فعالیت می‌کند، این پروتکل در حال حاظر در دو نسخه‌ی SSH-1 و SSH-2 در اکثر سیستم‌عامل‌ها در دسترس است، این پروتکل یک ساختار (Client/Server) دارد، بدین معنا که برای اجرا باید هم روی سرور و هم روی رایانه‌ی کاربر نصب شده باشد، این فناوری در حقیقت از ۳ مجموعه ابزار به شرح زیر تشکیل شده است که عبارتند از:

  • SLOGIN یا Secure Login به معنای ورود امن به سیستم‌های مبتنی بر یونیکس.
  • SSH یا Secure Shell به معنای پوسته‌ی امن برای رد و بدل کردن دستورات.
  • SCP یا Secure Copy به معنای کپی و رونوشت کردن امن اطلاعات.

 

ساختار و عملکرد پروتکل SSH چگونه است؟

حتما با عبارت رمزنگاری آشنایی دارید. این پروتکل، داده ها را به واسطه الگوریتم RSA در مبدا رمزنگاری کرده و در مقصد رمزگشایی می کند که به این ترتیب اگر اطلاعات در میان راه مورد شنود قرار گیرد امکان استفاده از آنها وجود نداشته باشد. ابزارهای متعددی برای استفاده از SSH وجود دارد که محبوب ترین آنها نرم افزار Putty است. معمولا برای افزایش امنیت SSH پورت پیشفرض آن را که 22 است به یک عدد دیگر تغییر می دهند که تحت حملات Brute Force نباشد. برای تغییر پورت پیشفرض SSH پیشنهاد می کنیم مطلب آموزش تغییر پورت SSH را مطالعه نمایید.

 

امکانات و قابلیت های پروتکل SSH

با وجود ظاهر و عملکرد ساده SSH می توان گفت بهبود بسیار عظیمی در امنیت ارتباطات بین کاربر و سرور با وجود ssh به وجود آمده است. در زیر به امکانات و قابلیت های پروتکل SSH اشاره می کنیم:

    1)امنیت بسیار بیشتر در مقایسه با Telnet و سایر پروتکل های ارتباطی

    2)امکان احراز هویت و ایجاد نشست های معتبر و تایید شده

   3) امکان اتصال با کلید خصوصی به منظور افزایش امنیت

   4) امکان وارد کردن انواع دستورات و انتقال فایل های حجیم با آن

   5) امکان حفظ ارتباط پایدار و کم ریسک

رمزنگاری اطلاعات در SSH به چه معناست؟

در حقیقت این پروتکل اطلاعات رد و بدل شده میان رایانه‌ی مبدا و مقصد را با الگوریتم RSA Public Key کد گذاری می‌کند، به طور خلاصه با استفاده از این الگوریتم، اطلاعات تنها با داشتن کلید تبادلی معتبر خواهند بود و در غیر این‌صورت یه هیچ‌وجه قابل خواندن و کدگشایی نیستند و از آن‌جایی که این کلید تنها در اختیار رایانه‌های مبدا و مقصد است امنیت اطلاعات در بین مسیر حفظ خواهد شد.

 

پروتکل SSH چه قابلیت‌هایی دارد؟

این تکنولوژی چندین قابلیت مختلف و کاربردی جهت حفظ امنیت اطلاعات در اختیار استفاده کنندگان قرار می‌دهد که عبارتند از:

1)امکان تایید کاربران

2)ایجاد تونل امن در بستر TCP/IP

3)انتقال خودکار اتصالات برقرار شده

4)امکان تایید خارجی کاربران

5)انتقال فایل امن و محافظت شده

 

برخی از اصطلاحات رایج در SSH:

حال که کمی با مفهوم و نحوه‌ی عملکرد SSH آشا شدیم، بد نیست با چند اصطلاح رایج در این زمینه آشنا شویم.

SSH  : نشان‌دهنده‌ی پروتکل SSH (با حروف بزرگ)

Ssh: نشان دهنده‌ی نرم‌افزار سمت کاربر ssh( با حروف کوچک)

SSHD : نشان‌دهنده‌ی Daemon این سرویس در لینوکس.

SSH1 : اشاره به نسخه‌ی اولیه‌ی این پروتکل دارد.

SSH2: نسخه‌ی تجاری و غیر رایگان این پروتکل.

OPEN SSH: نسخه‌ی متن باز یا Open Source این پروتکل.

 

تاریخچه و نسخه های پروتکل SSH

پروتکل SSH دارای نسخه های مختلفی است که در طول زمان معرفی شده و همچنان نیز از آنها استفاده می شود. این نسخه ها در مواردی با یک دیگر تفاوت دارند که در ادامه به توضیح کامل در مورد نسخه های پروتکل SSH و تفاوت آنها می پردازیم.

 

نسخه SSH-1

اولین نسخه از پروتکل SSH شناخته می شود که توسط محقق فناوری دانشگاه Helsinki فنلاند ، Tatu Ylönen طراحی و معرفی شد و هدف آن جایگزینی SSH برای پروتکل هایی مثل rlogin ، TELNET ، rsh و … بود که در اکثر این پروتکل ها امنیت و محرمانه بودن اطلاعات تایید نمی شود و تایید هویتی قوی نیز وجود نداشت.

Tatu Ylönen در July 1995 پروتکل SSH را به عنوان یک نرم افزار رایگان منتشر کرد و به سرعت در سراسر جهان مجبوب شد به طوری که در پایان سال 1995 پروتکل SSH بیش از 20,000 کاربر در 50 کشور دنیا داشت. همچنین طی یک تخمین تا سال 2000 ، برآورد شده است که در حدود 2 میلیون نفر در سراسر جهان از SSH استفاده می کردند.

در نسخه های اصلی SSH از نرم افزار های رایگانی مثل GNU libgmp استفاده می شود اما در نسخه های بعدی که توسط SSH Communications Security تاسیس شده توسط Ylönen  منتشر شد ، به نرم افزاری انحصاری تبدیل شدند.

 

نسخه SSH-2

در سال 2006 یک نسخه جدید از SSH توسط IETF منتشر شد که با نام SSH-2 به عنوان یک استاندارد پذیرفته شد و به دلیل تفاوت هایی که با نسخه SSH-1 دارد ، با این نسخه سازگار نیست.

 -2 از لحاظ ویژگی های امنیتی بهبود یافته و قابلیت های بیشتری نسبت به نسخه SSH-1 دارد که عبارتند از توانایی اجرای هر تعداد نشست دلخواه در یک اتصال SSH یا همان run any number of shell sessions over a single SSH connection

با توجه به اینکه تا آن زمان SSH-1 یک نسخه محبوب شناخته می شد و SSH-2 نیز برتری های قابل توجهی نسبت به آن داشت ، برخی از پیاده سازی ها مثل libssh و Dropbear تنها از نسخه پروتکل SSH-2 پشتیبانی می کنند.

 

نسخه SSH-1.99

این نسخه در حقیقت یک نسخه واقعی نیست و تنها روشی برای شناسایی سازگاری با نسخه های قبلی است.

در سال 2006 پس از تایید نسخه 2.1 ، RFC اعلام کرد که هر سرور SSH که از نسخه SSH-2 و سایر نسخه های قبلی SSH پشتیبانی می کند ، باید به عنوان نسخه پروتوی آن به عنوان SSH-1.99 شناخته شود.

 

نسخه OpenSSH

همانطور که در توضیحات نسخه SSH-1 اشاره کردیم ، پس از آن که پروتکل SSH به صورت انحصاری تبدیل شد ، در سال 1999 بسیاری از توسعه دهندگان که تمایل داشتند از SSH همچنان به عنوان یک نسخه منبع باز یا Open-source استفاده کنند ، به نسخه 1.2.12 که آخرین نسخه Open-source بود بازگشتند.

پس از این توسعه دهندگان OpenBSD اقدام به انتشار OpenSSH کردند که در حقیقت نسخه متن باز یا Open-source پروتکل SSH است و از سال 2005 به یکی از محبوب ترین نسخه های SSH تبدیل شده که به طور پیش فرض بر روی برخی از سیستم عامل ها عرضه می شود.

برای تشخیص نسخه SSH می توانید از کد دستوری زیر در ترمینال استفاده کنید.

ssh -v$

در پاسخ به این دستور نسخه SSH نمایش داده می شود.

در ادامه توضیح در مورد پروتکل SSH چیست؟ و چه کاربردی دارد؟ به سراغ نحوه عمکلرد پروتکل SSH می رویم.

 

پیاده سازی

پروتکل ssh، به عنوان یک پروتکل باز برای اکثر سیستم عامل های محاسباتی پیاده سازی شده است و اجرای OpenSSH منبع باز روشی است که بیشتر در Linux، Unix و سایر سیستم عامل های مبتنی بر Berkeley Software Distribution یا BSD از جمله macOS اپل یافت می شود. OpenSSH برای شروع در Windows PowerShell از سال 2015 میلادی آغاز شد و در سال 2018 گزینه پشتیبانی OpenSSH به ویندوز 10 اضافه شد. در حالی که پروتکل ssh به طور پیش فرض در اکثر unix ها مانند سیستم عامل ها قابل دسترسی است، باید نسخه OpenSSH منتقل شده مایکروسافت به صراحت در برنامه تنظیمات ویندوز فعال شود.

PuTTY یکی دیگر از پیاده سازی های منبع باز پروتکل ssh می باشد و در حالی که در حال حاضر برای ویندوز، macOS و Unix/BSD در دسترس است، PuTTY در ابتدا برای اجرای روی سیستم عامل ویندوز نوشته شده است و مدت هاست که یکی از گزینه های برتر استفاده از پروتکل ssh در سیستم ویندوز می باشد. اکثر پیاده سازی مجموعه پروتکل ssh از قبیل سه برنامه کاربردی – slogin (secure login)، ssh و scp (secure copy) – که نسخه های مطمئن سرویس های یونیکس نا امن قبلی هستند: rlogin، rsh و rcp پروتکل ssh از رمزگذاری کلید public برای تایید اعتبار کامپیوتر از راه دور استفاده می کند و کامپیوتر را از راه دور قادر می سازد در صورت لزوم، کاربر را تایید کند. در حال حاضر ده ها پیاده سازی پروتکل ssh برای سیستم عامل های مختلف و تحت انواع مجوزهای منبع باز و اختصاصی در دسترس است. در حالی پیاده سازی های گرافیکی پروتکل ssh نیز وجود دارد، این برنامه معمولا در خط فرمان فراخوانی می شود و یا به عنوان بخشی از یک اسکریپت اجرا می شود. اجرای فرمان پروتکل ssh به تنهایی بدون هیچ استدلالی مانند هاست مقصد یا شناسه کاربر، لیستی از پارامترها و گزینه های فرمان پروتکل ssh را بر می گرداند.

ابتدایی ترین شکل دستور ssh فراخوانی برنامه و نام هاست مقصد یا آدرس پروتکل اینترنت (IP) است:

ssh server.example.org

با این کار به مقصد server.example.org وصل خواهید شد. هاست مقصد با ارسال رمز عبور برای شناسه کاربر، حساب کاربری که کلاینت در آن اجرا می کند، پاسخ خواهد داد. به عبارت دیگر اگر شناسه کاربر مورد استفاده jsmith است، هاست از راه دور می خواهد یک رمز عبور مرتبط با حساب jsmith در هاست از راه دور بخواهد. در بسیاری از موارد شناسه کاربری برای هاست از راه دور متفاوت خواهد بود، در این صورت دستور باید با شناسه کاربر هاست از راه دور صادر شود. مانند دستور زیر:

ssh remote_host_userID@server.example.org  همچنین پروتکل ssh می تواند از خط فرمان استفاده کند تا یک فرمان واحد بر روی هاست از راه دور صادر شود و سپس خارج شود – به عنوان مثال: ssh example.org ls

 

این دستور، دستور Unix ls را اجرا می کند که کلیه محتوای فهرست موجود در هاست از راه دور را نشان می دهد. در حالی که این مثال بی اهمیت است، نشان می دهد که می توان از پروتکل ssh برای اجرای دستورات روی یک هاست از راه دور استفاده کرد. به عنوان مثال می توان دستوری را ساخت که به عنوان نمونه سرور اولیه را ارائه می دهد که به یک دستگاه از راه دور به یک فایل منفرد – یا منبع دیگر – دسترسی پیدا می کند و پس از دسترسی به فایل توسط هاست از راه دور مشخص شده، سرور را خاتمه می دهد.

علاوه بر پروتکل ssh اجرایی،SSH  دستورات اجرایی دیگری نیز دارد که در خط فرمان برای توابع اضافی استفاده می شود، شامل موارد زیر:

Sshd سرور ssh را آغاز می کند که منتظر دریافت درخواست اتصال ssh است و سیستم های مجاز را قادر می سازد تا به هاست محلی متصل شوند.

Ssh-keygen برنامه ای برای ایجاد یک جفت کلید احراز هویت جدید برای پروتکل ssh می باشد که می تواند برای ورود به سیستم به صورت اتوماتیک، اجرای SSO و احزار هویت هاست ها مورد استفاده قرار گیرد.

ssh-copy-id، برنامه ای است که برای کپی کردن، نصب و پیکربندی یک کلید SSH روی یک سرور برای اتوماتیک ورود به سیستم های بدون رمز و SSO استفاده می شود.

ssh-agent یک برنامه کمک کننده می باشد که کلیدهای هویت و عبارات عبور از آنها را ردیابی می کند – که از آن SSH کلید رمزنگاری گرفته می شود – و کاربر را قادر می سازد بدون نیاز به مجددا وارد کردن رمزهای عبور یا عبارات عبور، از کلیدهای شناسایی استفاده کند.

ssh-add برای اضافه کردن کلید به عامل احراز هویت SSH استفاده می شود و از ssh-agent برای پیاده سازی SSO با استفاده از SSH استفاده می شود.

scp برنامه ای است که برای کپی کردن فایل ها از یک کامپیوتر به رایانه دیگر استفاده می شود و یک نسخه rcp با امنیت SSH است.

sftp برنامه ای است که برای کپی کردن فایل ها از یک رایانه به رایانه دیگر استفاده می شود و یک نسخه SSH  از FTP است که پروتکل اصلی انتقال فایل است SFTP به مکانیسمی برای اشتراک گذاری فایل از طریق اینترنت تبدیل شده است و FTP و FTP / S (FTP Secure) را جایگزین می کند که یک پروتکل برای استفاده از FTP بر روی یک تونل SSL / TLS می باشد.

 

راه های افزایش امنیت کار با SSH

با وجود اینکه پروتکل SSH از امنیت بسیار بالایی برخوردار است اما با این وجود چندین راهکار وجود دارد که می توان امنیت کار با SSH را افزایش داد. از جمله این اقدامات می توان به موارد زیر اشاره کرد:

  • ایجاد کلید خصوصی و اتصال به واسطه آن
  • تغییر پورت پیشفرض SSH
  • اعمال محدودیت IP برای اتصال از طریق SSH
  • بروزرسانی مداوم سیستم عامل و سرویس SSH

استفاده از پسورد و یا رمز عبور مناسب:
در مقالات قبلی در زمینه های متفاوت استفاده از رمز های ترکیبی را همیشه تاکید نموده ایم. همانطوری که میدانید یکی از اولین و اساسی ترین روش هایی که هکر ها از آن جهت هک SSH و یا سایر دسترسی ها استفاده میکنند، پسورد های ساده میباشد.هکر ها از طریق روش Brute Force دائما تمامی سرور های با پورت پیشفرض و پسوردهای اینگونه را اسکن میکنند و در بسیاری از موارد نیز موفق میشوند تا با این اشتباه ساده سرور را هک کنند.

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

 

تغییر پورت پیش فرض:

یکی از اساسی ترین نقض امنیتی در تمامی برنامه ها و پروتکل های اینترنتی را میتوانید استفاده از پورت های پیش فرض دانست. موقعی که شما هیچ تغییری در پورت پیشفرض سرویس ها انجام نمیدهید به هکر مسیر حرکت وی را نشان میدهید تا با استفاده از این پورت پیش فرض به اسکن سرور شما مشغول باشد و با استفاده از تکنیک ها و یا لیست پسوردهای مناسب در نفوذ به سرور شما تلاش کند.
پورت پیش فرض SSH را هیچ موقع روی 22 تنظیم نکنید و حتما آن را به مقادیر رندوم تغییر دهید. جهت تغییر این پورت میتوانید به سادگی فایل کانفیگ SSH را ویرایش کنید . برای این منظور میتوانید فایل /etc/ssh/sshd_config را ویرایش کنید و  مقدار پورت پیش فرض 22 را به یه مقدار رندوم تغییر دهید. دقت کنید که قبل از انجام این تغییر حتما ابتدا پورت مدنظر را روی فایروال خود اضافه کنید تا بعد از ریستارت  SSHدر ورود به SSH دچار مشکل نشوید. بعد از تغییر پورت جهت اعمال شدن آن نیاز هست که یکبار دستور زیر را جهت ریستارت شدن SSH اجرا کنید. service sshd restart .

 

غیر فعال کردن پروتکل قدیمی SSH
همانطوریکه ذکر شد SSH از چند پروتکل استفاده میکند که نوع 1 آن یعنی SSH 1 بسیاری قدیمی بوده و بهتر هست که حتما روی سرور خود این پروتکل را غیرفعال کنید. برای غیر فعال سازی آن در فایل کانفیگی که در بالا ذکر شده مقدار Protocol را فقط 2 قرار دهید و سپس سرویس SSH را یکبار ریستارت کنید.

 

غیر فعال کردن Root
اجازه دسترسی برای ورود با یوزرنیم root کمی برای سریعتر شدن روند هک سرور شما میباشد. جهت امنیت بیشتر بهتر است دسترسی root را غیرفعال کرده و به جای آن از su جهت بعد از ورود استفاده کنید. جهت غیرفعال سازی root میتوان به سادگی در تنظیمات فایل SSH مقدار PermitRootLogin no را اضافه و سپس سرویس را ریستارت کنید. همچنین کاربر دیگری را ایجاد کرده و با استفاده از دستور زیر در تنظیمات SSH اجازه ورود به SSh را به کاربر مد نظر بدهید AllowUsers customuser که به جای customuser بایستی کاربر ایجاد شده وارد کنید. بعد از اضافه نمودن کاربر بایستی سرویس SSH را یکبار ریستارت کنید.

استفاده از Key برای ورود به امنیت بیشتر
استفاده از Key علاوه بر اینکه باعث میگردد نیازی به ایجاد یوزر نداشته باشید بلکه بدون حتی وارد کردن یوزرنیم و پسورد با استفاده تنظیمات Key مدنظر روی Putty یا خط فرمان لینوکس به راحتی میتوانید وارد سرور شوید.استفاده از نوع احراز هویت نیازمند این میباشد که برای هر ماشین بایستی یک کلید جهت اتصال به سرور ایجاد کنید.

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

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *