\Tunelling ssh to firewall
با سلام
در روش زیر یه کار جالب رو با SSH با هم یاد میگیریم که خیلی بدرد می خوره برای اطلاعات بیشتر می تونید man دستور ssh رو مطالعه کنید
فرض کنیم که سیستم شما در خانه از طریق مودم به اینترنت وصل است و یا در شرکت از طریق شبکه داخلی به اینترنت اتصال داره که در بعد از یک سیستم دیوار آتش قرار داره. شما دسترسی به این دیوار آتش ندارید و Gateway اصلی هم در اختیار شما نیست. حالا شما با سیستم لینوکس خودتون دچار مشکلاتی هستید و هر چفدر ازدوستان سوال کردید همه گفتند که باید سیستم شما را از نزدیک ببیند تا بتونند کار را مستقیما خودشون انجام بدن.
در اینجا یک راهی وجود دارد که شما می تونید برای دوستتون یک تونل ssh باز کنید تا اینکه اون بتونه بر روی سیستم شما login کنه و مشکلات شما را حل کنه.
-فرض کنیم که سیستم شما اسمش هست Alireza و شما مثلا در مورد تنظیمات Squid مشکل داری. ولی ssh شما کار میکنه.
- لازم است سیستم دوست شما دارای یک ssh server فعال باشه که شما بتونید بر روی اون login کنید و لازمه که دوست شما دارای اسم و IP ثابتی باشه. اگر دوست شما از IP های دینامیک استفاده میکنه میشه با استفاده از سرویس سایت های مثل dyndns.org که سرویس مجانی Resolve نامها را دارند استفاده کنه .
بعد از داشتن این موارد لازم کار تونل زدن را شروع می کنیم
۱. دوست شما برای شما یک نام کاربری معمولی درست میکنه و اسم رمز اون را با تلفن به شما میگه مثلا
[LEFT] User name and password on irani.linuxhome.org
username: Alux
password: xxxxxx
[/LEFT]
اسم سیستم دوست شما هم هست irani.linuxhome.org
۲. حالا شما برای سیستم دوستتون یک درگاه بخصوص را آزاد میکنید تا اینکه دوست شما بتونه به Alireza شما وصل بشه به اینصورت
[code]ssh Alux[EMAIL="kiat@irani.linuxhome.org"]@irani.linuxhome.org[/EMAIL] -R 2003:Alireza:22 [/code]
و بعدش یک اتصال ssh باز میشه که شما نباید آن را ببندید تا اینکه دوست شما بتونه از اون استفاده کرد.
دستور فوق در واقع اینجوری بیان میشه که در سیستم ریموت و پورت 2003 هر کسی کانکت شد اون رو فروارد کنه به پورت 22 از سیستمی به نام Alireza که این میتونه Ip هم باشه :wacko:
۳. اکنون دوست شما میتونه بر روی irani.linuxhome.org این دستور را اجرا کنه و به سیستم شما وصل بشه ولی حالا اون نیاز داره که یک نام کار بری و اسم رمزش را بر روی سیستم شما بدونه که شما با تلفن بهش میگید. مثلا شما براش نام کاربری PN را ساختید
[code]
ssh PN@localhost -p 2003 [/code]خوب از حالا به بعد اون رو سیستم شماست. اگر خواستید که دسترسی root هم داشته باشه بهش با تلفن اسم رمز را میدید. و اگر هم خواستید که اتصالشو قطع کنید کافی است که اون اتصال باز شده که در مورد ۲ باز کردید قطع کنید و یا process مربوط را از بین ببرید.
توضیحات اضافی:
- این کار در همه جا اصلا توصیه نمیشه و اگر از این تونل استفاده میکنید باید مواظب باشد و بخوصص اگر در شرکت ها یک تونل می زنید حتما از مدیریت شبکه اجازه بگیرید چرا که ممکن است بقیمت از دست دادن کارتون تمام بشه.
-برای اطلاعات کامل تر manpage را مطالعه کنید
- اگر در شبکه شما در گاه مربوطه بسته است میشه که مثلا از ۸۰ استفاده کرد.
اطلاعات تکمیلی :
[quote][LEFT]-R port:host:hostport
Specifies that the given port on the remote (server) host is to
be forwarded to the given host and port on the local side. This
works by allocating a socket to listen to port on the remote
side, and whenever a connection is made to this port, the con-
nection is forwarded over the secure channel, and a connection
is made to host port hostport from the local machine. Port for-
wardings can also be specified in the configuration file. Priv-
ileged ports can be forwarded only when logging in as root on
the remote machine. IPv6 addresses can be specified with an
alternative syntax: port/host/hostport.
[/LEFT]
[/quote]
Breaking Firewalls with OpenSSH
[B][FONT=Arial][SIZE=2]فرض کنیم شبکه ای داریم شامل چند سرور که همه ی انها پشت فایروالی هستند که فایروال فقط اجازه کانکت شدن از خارج به [/SIZE][/FONT][FONT=Arial][SIZE=2]ssh server از پورت 22 [/SIZE][/FONT][FONT=Arial][SIZE=2] [/SIZE][/FONT][FONT=Arial][SIZE=2]رو میده[/SIZE][/FONT]
مانند شکل :
[/B]
[IMG]http://souptonuts.sourceforge.net/networkl.png[/IMG]
[B]روش زیر به ما کمک میکنه که از طریق ssh به سرور های دیگه دسترسی داشته باشیم
[/B] [RIGHT][SIZE=2][B]ssh [/B][B] سرور از بیرون با [/B][/SIZE]66.35.250.203 دیده میشه[/RIGHT]
[RIGHT]برای ایجاد اید تونل، در Linux laptop با ip 192.168.1.106 فایل زیر رو میسازیم [/RIGHT]
[RIGHT]"~/.ssh/config"[/RIGHT]
[LEFT][CODE]## Linux Laptop .ssh/config ##Host workHostName 66.35.250.203 User sporkey LocalForward 20000 192.168.0.66:80 LocalForward 22000 192.168.0.66:22 LocalForward 22139 192.168.0.8:139 LocalForward 22110 192.168.0.5:110 Host httpHostName localhost User donkey Port 22000 HostKeyAlias localhosthttp[/CODE]
[RIGHT]سپس با استفاده از Chmod پرمیشن Execute با فایل میدهیم
[LEFT][CODE]chmod 600 ~/.ssh/config[/CODE]
[RIGHT] [RIGHT]برای کانکت شدن به ssh server [/RIGHT]
[RIGHT]در Linux laptop دستور زیر رو میزنیم[/RIGHT]
[LEFT][CODE]ssh -l sporkey 66.35.250.203[/CODE]
[RIGHT]و یا برای راحتی از دستور [FONT="]ssh work
استفاده کنیم
بعد از بر قراری این اتصال می توانیم در تر مینال دیگه
[/FONT][LEFT][CODE]ssh -l donkey localhost -p 22000[/CODE]
[RIGHT]یا از [FONT="]ssh http
[/FONT] [RIGHT]دسترسی به 192.168.0.66 یا همان Http server داشته باشید[/RIGHT]
[RIGHT]راه دیگه به جای 2 ترمینال استفاده از دستور زیره[/RIGHT]
[LEFT][CODE] ssh -N -f -q work;ssh http[/CODE]
[/LEFT]
[RIGHT] [/RIGHT]
[RIGHT]دستور فوق یک اتصال رو به work برقرار میکنه
[/RIGHT]
[RIGHT]-N برای "Do not execute remote command",[/RIGHT]
[RIGHT]-f برای requests ssh to go to the background[/RIGHT]
[RIGHT]-q هم برای is to suppress all warnings and diagnostic messages[/RIGHT]
[/RIGHT]
[/LEFT]
جالب تر اینکه می تونیم با دستور زیر
[LEFT]
[CODE]wget http://localhost:20000/[/CODE]
[RIGHT]page وب سرور رو هم مشاهده کنیم !:)
[RIGHT]تمامی این دستورات بر اساس فایل کانفیگی هست که اول ساختیم[/RIGHT]
[FONT="]امیدوارم مفید بوده باشه
این ادیتور سایت هم هر کار کردم این فونت ها رو درست نکرد شرمنده که بزرگ کو چیک شده
[/FONT][/RIGHT]
[/LEFT]
[/RIGHT]
[/LEFT]
[/RIGHT]
[/LEFT]
[/RIGHT]
[/LEFT]