سلام دوستان . زمانی که بحث سر امنیت پیش میاد یک سری از فاکتور ها روی میز میاد که رعایت کردنشون ما رو به امنیتی بیش تر هدایت می کنند . یکی از همین فاکتور ها که توسط خیلی از وب مستر ها و ادمین ها استفاده می شود , این است که پورت پیش فرض SSH را به پورتی ناشناس تغییر دهند . به عنوان مثال پورت پیش فرض که 22 است را به 202 تغییر می دهند .

با این کار برای دسترسی به SSH مجبور به استفاده از پورت 202 به جای 22 هستیم . خب ! یک بار دیگه این جمله رو بخوانید ! از 202 به جای 22 استفاده می کنیم یعنی داخل putty و یا … پورت پیش فرض رو تغییر می دیم , یعنی پورت مورد نیاز برای اتصال به مقصد که 22 بود را به 202 تغییر می دهیم . یعنی 202 پورت مقصد ما می باشد ( با فرض این که بر روی سیستم خود نشسته ایم و قصد ارتباط با سرور را داریم )

طبیعتا همان طور که پورتی برای ارتباط با سرور مقصد در نظر گرفته می شود , پورتی نیز این طرف بر روی سیستم ما نیز ایجاد میشود تا یک session ارتباطی بین کلاینت و سرور برقرار شود . این پورت ایجاد شده معمولا کمتر دیده میشه و یا شاید اصلا دیده نشه چرا که شاید کاربرد آن چنانی ای نداشته باشه ! ضمن این که این مورد رو شاید فقط در برنامه های پکت کپچر بشه دید و حسش کرد که بله یک پورت local ای به عنوان source port برای ارتباط ایجاد می شود .

خب ما تا این جای کار destination port را از 22 به 202 تغییر دادیم . پس فرد Attacker مجبور است تک تک پورت ها را چک کند تا در نهایت پورت ارتباطی از طریق SSH را پیدا کند . خب حالا نظرتون در مورد قبول کردن پکت هایی که از یک source port خاص میان چیه ؟ تاکید می کنم که source port های ایجاد شده در هر کانکشنی ( چه ssh و چه telnet و یا http و … ) به صورت پیش فرض از پورت هایی Random هستند .

بیاید همین حرف رو با هم در سناریو زیر بررسی کنیم :

فرض ها :

سرور : 20.20.20.2

کلاینت : 20.20.20.1

ابتدا در سرور با استفاده از یک برنامه ی پکت کپچر , روی interface سرور میایم و پکت های روی پورت 22 و پروتکل TCP رو مانیتور می کنیم . به صورت زیر :

حالا در کلاینت کافیست آی پی سرور را روی پورت 22 تلنت کنیم . به صورت زیر :

 

نتایج :

1. پورت 22 روی سرور باز است پس طبیعتا خروجی telnet مبنی بر ارتباط و باز بودن پورت است :

012. گفتیم که برنامه به صورت پیش فرض از یک پورت random جهت source port استفاده می کند . پس :

02به کادر قرمز توجه کنید , همان طور که ملاحظه می شود source port در این جا 49998 است که random توسط telnet انتخاب شده است .

 

 سوال :

حالا فرض کنید که ما علاوه بر تغییر destination port به پورتی دیگر مثل 202 , source port را هم روی یک پورت خاص در نظر بگیریم ! نتیجه این می شود که نفوذگر به عنوان مثال پورت 202 و یا حتی 22 ما را پیدا می کند اما از آن جایی که source port تعیین شده توسط ما را نمی داند , نمی تواند با سرور ارتباط برقرار کند !

نتیجه ی این کار این است که اگر سرور را روی پورت 202 و یا حتی 22 اسکن کنه و یا حتی سعی کنه ارتباط برقرار کنه , با close بودن پورت مواجه خواهد شد ! اما برای عملی کردن این سناریو به شکل زیر عمل می کنیم :

 

سرور :

ابتدا داخل سرور تعیین می کنیم که تنها ارتباط های روی destination پورت 22 و source پورت 23230 از هر جایی بتوانند با سرور ارتباط برقرار کنند . پس رول زیر را در سرور set می کنیم :

حالا تمامی پکت هایی که روی پورت 22 می آیند اما source port آن ها 23230 نیز را reject می کنیم . پس از رول زیر در سرور استفاده می کنیم :

 

کلاینت :

همان طور که در بالا گفته شد , برنامه ها به صورت پیش فرض برای ارتباط با مقصد از یک پورت random جهت source port استفاده می کنند . حال باید کاری انجام بدیم که header بسته های ما روی پورت 22 ادیت بشه و source port های random آن به source port ای که مد نظرمون هست , یعنی 23230 تغییر پیدا کنه ! برای این منظور من از یک رول Source Nat در iptables استفاده می کنم .

یعنی میام تمامی درخواست های روی پورت 22 که از interface سیستمم قرار هست خارج بشه رو src port اون ها رو ادیت می کنم و پورتی رو جایگزین می کنم که مد نظرم است . پس :

رول بالا باعث میشه که تمامی درخواست های ما روی پورت 22 روشون عمل SNAT انجام بگیره اما توجه داشته باشید که قرار است فقط روی یک سرور خاص همچین سناریو ای رو پیاده سازی کنیم . پس بهتر است که در رول بالا آی پی آدرس مقصد رو هم مشخص کنیم . یعنی :

حال اگر یک بار دیگر tcpdump را در سرور اجرا کنیم و روی پورت 22 از سرور telnet بگیریم , باید نتایج زیر را بدست آوریم :

 

1. خروجی telnet حاکی از برقرار ارتباط است :

05

2. source port های کلاینت در tcpdump همگی 23230 خواهند بود :

06

حال من یک interface به سرور اضافه می کنم و آی پی آن را 192.168.229.130 در نظر می گیریم . پس سرور من دو interface با دو آی پی دارد که رول های مربوط به source port ها در آن set شده است . پس :

سرور من :

حالا از سیستم دیگری که روی رنج آی پی interface دوم سرور قرار دارد , سرور رو با استفاده از nmap در دو حالت اسکن می کنیم :

حالت اول : با استفاده از source port رندومی که خود nmap تعیین می کند :

03حالت دوم : با استفاده از source port ای که ما تعیین می کنیم . یعنی پورت 23230 :

04

 

ممنون که تا آخر این مقاله با ما بودید . با تشکر

منبع : او اس لرن | http://OSLearn.ir

نویسنده : E2MA3N

 

از این مطلب راضی هستید ؟ می خواهید به سایت کمک کنید ؟ رضایت خودتون رو با دونیت به ما به مبلغ 1,500 تومان اعلام کنید .

برای دونیت روی خرید کلیک کنید . با تشکر

[parspalpaiddownloads id=”8″]

درباره نویسنده :

ایمان همایونی هستم، از سال 2009 با گنو لینوکس فعالیت خودم رو در زمینه ی کامپیوتر و IT شروع کردم و تا الان موفق به گذروندن دوره هایLPIC 1 / LPIC 2 / VCP5-DCV / MCITP / CCNA / MTCNA شدم . مدتی در زمینه امنیت فعالیت هایی داشتم اما در حال حاضر تمرکز خودم رو بر روی مجازی سازی و لینوکس گذاشته ام .

تمام پست های من - وب سایت من