نوشته‌ها

معرفی SSH Tunneling

معرفی SSH Tunneling

تعریف SSH

SSH ( پوسته امن )،پروتکل استانداردی برای مبادله ی رمز شده بین یک کامپیوتر و یک سرویس دهنده است. پروتکل رمزنگاری از مشاهده اطلاعات مبادله شده توسط اپراتور شبکه جلوگیری میکند. SSH میتواند برای کاربردهای متعددی بکار رود، که برقراری اتصال امن (secure login) و انتقال فایل امن (SCP/SFTP) کاربردهای رایج آن هستند.

کاربردهای SSH Tunneling

پروتکل SSH از آن دسته پروتکل هایی است که قابلیت های مرموز و در عین حال مخفی ای دارد که بسیاری از افرادی که از این پروتکل استفاده میکنند، به آن پی نبرده اند. یکی از این قابلیت ها، توانایی در ایجاد تونل های Encrypt شده در بطن پروتکل SSH است، که کانال های ارتباطی دو طرفه را پشتیبانی میکند. SSH یک پروتکل امن ارتباطی است که داده ها را از میان یک Tunnel ارتباطی امن منتقل می کند. SSH Tunneling تکنیک دیگری است که مهاجمین می توانند از طریق آن محدودیت های فایروال ها را دور بزنند و از آنها عبور کنند. با استفاده از SSH Tunneling آدرس IP شما نیز در محیط اینترنت مخفی باقی می ماند بنابراین هیچکس نمی تواند شما را مانیتور و یا شنود کند.

یکی از دلایلی که پروتکی مثل SSH طراحی شد مشکلاتی بود که در بحث استفاده از آدرس های IP عمومی یا Public وجود داشت ، به این معنی که هر کسی می توانست از هر جای دنیا به آدرس IP سرور شما متصل شود و این شخص ممکن است یک هکر باشد. مهاجمین با داشتن آدرس IP Public شما امکان حمله به شما از هر جای دنیا را داشتند. توسعه و طراحی SSH Tunneling مشکلات بسیاری که در حوزه امنیت آدرس های IP عمومی وجود داشت را حل کرد.

مکانیزم کاری SSH Tunnel زیاد پیچیده نیست و در واقع این تکنیک از یک سرور و یک کلاینت تشکیل شده است که Session ارتباطی امنی بین همدیگر برقرار می کنند که هیچکس نمی تواند وارد این Session و ارتباطات آن شود و به همین دلیل امنیت بالایی دارد و از طرفی تجهیزات یا افرادی که در مسیر راه امکان شنود اطلاعات را دارند نیز نمی توانند وارد مسیر مورد نظر بشوند. ایجاد کردن یک Tunnel برای ارتباط بین دو ماشین با آدرس های IP غیر عمومی یا Private نیازمند پیاده سازی سه مرحله ای و حداقل داشتن سه ماشین است ، این سه ماشین که در فرآیند SSH Tunnel استفاده می شوند موارد زیر هستند :
1.ماشین محلی ( Local Machine )
2.یک ماشین واسط میانی دارای آدرس IP Public جهت ارتباط اینترنتی
3.ماشین هدف که دارای یک آدرس IP غیر عمومی است و قبل از ارتباط ماشین محلی بایستی ارتباطش با ماشین میانی برقرار شود.

SSH Tunneling

SSH Tunneling

شما می توانید به ترتیب زیر Tunnel ایجاد کنید :

• یک SSH Connection از Local Machine تا ماشین واسط یا Intermediate Machine ایجاد کنید که دارای آدرس IP Public است.

• به SSH Connection فرمان بدهید که صبر کند و ترافیک را از Local Port به سمت Intermediate Machine یا ماشین واسط منتقل کند تا ماشین واسط به سمت ماشین هدف ( Target Machine ) ترافیک را با آدرس IP Private انتقال دهد ! به اینکار Port Acceleration یا Port Forwarding گفته می شود.

• بر روی Local Machine نرم افزاری که می خواهید با ماشین مقصد ارتباط داشته باشد را انتخاب می کنید و تنظیمات Port Forwarding را بر روی آن انجام می دهید. حالا هر زمان که شما به local port متصل شوید ! ترافیک شما خودکار به سمت Remote Machine منتقل می شود.

بصورت ساده تر شما از کامپیوتر مبدا یک ارتباط SSH با کامپیوتر واسط برقرار می کنید. کامپیوتر واسط یک آدرس IP معتبر اینترنتی دارد، شما هر ترافیکی که از ماشین مبدا بخواهید به مقصد برسد طبیعتا اول باید با کامپیوتر واسط ارتباط بگیرد. یعنی اگر بخواهیم بگوییم یک فایل را آپلود کند اول باید دستور ما به کامپیوتر واسط برسد. سیستم مقصد الزامی ندارد که IP عمومی داشته باشد چون اگر اینترنت داشته باشد کافی است که بتواند  به کامپیوتر واسط وصل شود، هر ترافیکی با هر پورتی بخواهد از کامپیوتر مبدا به کامپیوتر مقصد منتقل شود باید در تونل SSH قرار بگیرد یعنی به عبارت دیگر تبدیل به پورت 22 شود!! خوب اینکار را میگوییم تبدیل پورت یا Port Forwarding. حالا هر نرم افزاری که قرار بود از سیستم مبدا به مقصد متصل شود را باید تنظیمات استفاده از SSH Tunnel را روی آن انجام بدهیم. شما اگر یک کامپیوتر با پروکسی اینترنت داشته باشید طبیعی است که باید تنظیمات پروکسی را روی نرم افزارهایی که اینترنت میخواهند انجام بدهید.

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