ما انواع متنوعی از حملات Dos و DDos داریم که یکی از آنها حملات Syn Flood می باشد. این حمله بسیار ساده بوده و نفوذگر به راحتی قادر به ایجاد حمله و به خطر انداختن امنیت شبکه و دسترس پذیری شبکه برای کاربران از امی گردد.
این حملات معمولا با تلفیق حملات IP Spoofing اتفاق می افتد. نحوه انجام حملات syn flood بدین صورت است که اتکر سعی در برقراری ارتباط TCP با سرور یا کامپیوتر قربانی میکند. اما نه به صورت معمول ! در واقع اولین قدم در برقراری ارتباط در TCP بدین صورت است که دو کامپیوتر مبدا و مقصد باید 3-way handshake را انجام دهند.
حال اتکر syn را می فرستد و سرور (قربانی) syn/ack می دهد ، اما اتکر ack پایانی را نمی دهد. برای پیچیده تر شدن این ماجرا حمله با تلفیق حمله IP spoofing انجام میشود.
به این نوع کانکشن ها که syn و syn/ack ردو بدل شده اما مرحله آخر که ack پایانی است انجام نمیشود کانکشن half-open یا embryonic میگویند. این باعث میشود که منابع سیستم درگیر این اتصالات نیمه باز شده و سرور دیگر به پاسخگویی به بقیه ازتباطات نخواهد بود. در فایروال ها مانند ASA سیسکو ابزار جلوگیری از این حملات وجود دارد اما چیزی که باعث نوشتن این مقاله شده آشنا کردن شما عزیزان با خاصیت TCP Intercept در روتر سیسکو می باشد ، که این خاصیت هم به شما در جلوگیری از این نوع حملات کمک خواهد نمود.
حالت های راه اندازی TCP Intercept
شما میتوانید TCP Intercept را در دو mode راه اندازی کنید:
۱-Intercept Mode
۲-Watch Mode
Intercept Mode :
در این حالت روتر سیسکو به عنوان پروکسی عمل میکند، به عبارت ساده تر زمانی که کامپیوتر ها سعی به ارتباط با سرور میکنند ، روتر سیسکو با دیدن syn خودش به جای سرور syn/ack می دهد و اگر ack پایانی را دریافت کند ، حال خودش با سرور tcp session را established خواهد کرد. نتیجه تا از سالم بودن ارتباط مطمئن نشود ، کانکشنی با سرور برقرار نخواهد شد.
معمولا روتر ها را در حالت Intercept Mode پیکربندی نمی کنند ، به یک دلیل ساده! اگر تحت Ddos باشیم فشار از روی سرور برداشته خواهد شد اما این فشار بر روی منابع روتر خواهد بود. از طرفی در شرایطی که همه چیز درست باشد و ما حمله ای نداشته باشیم باز هم روتر درگیر خواهد بود.
Watch Mode:
در این حالت ، ماجرا به این صورت خواهد بود که روترهای سیسکو به جای اینکه در برقراری ارتباط مانند پروکسی عمل کند ، از این به بعد مراحل 3-way handshake را تحت نظر خواهد گرفت. و حواسش به کانکشن های half-open یا همان embryonic ها خواهد بود.
در صورتی که این کانکشن ها در مدت زمان مشخصی (پیش فرض ۳۰ ثانیه) برقرار نشوند، روتر با فرستادن tcp reset به سرور کانکشن را خواهد بست. تا منابع سرور آزاد گردد.
نمونه ای از کانفیگ TCP Intercept:
1 |
Router(config)# access-list 100 tcp permit tcp any any |
Router(config)# ip tcp intercept list 100
با استفاده از خط بالا مشخص میکنیم که کدام ارتباطات را باید بررسی کنیم! در صورتی که لازم میدانید میتوانید آموزش access-list در روتر سیسکو را در اینجا مشاهده بفرمایید. بهتر است به جای اینکه مانند بالا همه سرور ها بررسی شوند ، ارتباط با سرور ها و یا منابع با ارزش را بررسی کنیم.
1 |
Router(config)# ip tcp intercept mode {intercept | watch} |
در خط بالا مشخص میکنیم که در کدام مود باید tcp intercept کار خود را انجام دهد.
1 |
Router(config)# ip tcp intercept watch-timeout seconds |
Router(config)# ip tcp intercept finrst-timeout seconds
Router(config)# ip tcp intercept connection-timeout seconds
دستور اول زمانی را که یک کانکشن باید established شود را مشخص میکند. در صورتی که در این زمان کانکشن برقرار نشود روتر سیسکو با فرستادن reset این ارتباط را خواهد بست.
زمانی که در حالت TCP intercept mode باشیم ، روتر حواسش به بسته شدن یک کانکشن هم هست ، در واقع زمانی که ما TCP RESET یا TCP FIN را میبیند ، انتظار دارد این ارتباط ظرف مدت ۵ ثانیه به صورت پیش فرض بسته شود. در صورتی که این اتفاق نیافتد خودش مدیریت کانکشن را به عهده خواهد گرفت. با finrst-timeout میتوان این زمان را عوض کرد.
زمانی که TCP Intercept مدیریت کانکشن ها را به عهده دارد یک کانکشن tcp را تا ۲۴ ساعت مدیریت خواهد کرد و در صورت idle بودن کتنکشن در این مدت ، کانشن را خواهد بست. با دستور connection-timeout میتوان این زمان را عوض کرد
1 |
Router(config)# ip tcp intercept max-incomplete high number |
Router(config)# ip tcp intercept max-incomplete low number
با دستور اول حالت خشمگینانه یا aggresive را مشخص خواهیم کرد. در واقع با دستورات بالا میگوییم که اگر تعداد کانکشت های نیمه باز(half-open) از high number بیشتر شد، رپتر شروع به بستن کانکشن های قدیمی تا رسیدن به low number کند.
1 |
Router(config)# ip tcp intercept drop-mode {oldest | random} |
با این دستور میتوان مشخص کرد درصورتی که قرار است کانکشن ها بسته شود، اول کانکشن های قدیمی بسته شود یا این کار به صورت random انجام شود.
1 |
Router(config)# ip tcp intercept one-minute high number |
Router(config)# ip tcp intercept one-minute low number
با دستورات بالا هم threshold برای بازه ۱ دقیقه ای تعریف میگردد.
همانطور که ملاحظه فرمودید مفهوم و تنظیمات سر راست و ساده ای داشت. از روتر سیسکو خودتون استفاده کنید!!
البته بقیه سازندگان مانند جونیپر هم مفاهیمی مشابه دارند. برای جونیپر به این لینک مراجعه کنید.
موفق باشید.