در ابتدا لازم است به این پرسش پاسخ دهیم که حملات Denial of service چیست و چه تاثیری بر عملکرد وبسایت دارد؟

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

در این حملات، هدف از کار انداختن سرویس دهی سرور است.

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

حملات Denial of service چیست؟

حملات DoS از یک سیستم انجام می شود، چنانچه مهاجم این حملات را از چند سیستم انجام دهد به آن حملات DDoS می گویند.

DoS Protection مکانیزم فورتی وب برای محافظت در برابر حملات DoS می باشد.این کار در دو لایه Network و Application انجام می شود.

DoS - DDoS Attack

در این آموزش به TCP Flood Prevention و  Syn Cookie می پردازیم. این دو در لایه Network محافظت از ما در برابر حملات DoS را انجام می دهند.

مکانیزم فورتی وب در برابر حملات در لایه Application را در آموزش بعدی خواهیم گفت.

TCP Flood Prevention

برخی از این حملات بر اساس سشن های TCP  انجام می شود.

با استفاده از این قابلیت تعداد TCP هایی که برای هر IP می تواند ایجاد شود را محدود می کنیم، به این طریق مهاجم نمی تواند تعداد زیادی TCP ایجاد و منابع سیستم را مصرف کند.

برای سرور در هر TCP مقداری Memory مصرف می شود، حتی اگه روی این TCP درخواست HTTP نیز ارسال نشود، مقداری Memory نگه داشته می شود تا زمانی که TCP تایم اوت یا توسط کلاینت یا سرور بسته شود.

پس باید TCP ها را محدود کنیم که هر IP تعداد مشخصی TCP ایجاد کند که مصرف منابع سرور را بتوانیم کنترل کنیم.

به این طریق می توانیم جلوی حملات TCP Flood Prevention را بگیریم.

TCP Connection

در تصویر بالا مشاهده می کنید که که برای برقراری TCP Connection سه Pack رد و بدل می شود.

  1. کلاینت درخواست SYN ارسال می کند.
  2. سرور درخواست SYN-ACK را ارسال می کند.
  3. سپس کلاینت ACK ارسال می کند تا TCP برقرار شود.

پیاده ساری TCP Flood Prevention در فورتی وب

در فورتی وب به قسمت DoS Protection می رویم.

این بخش دو گزینه زیر را دارد:

  • Application
  • Network
DoS Protection در فورتی وب

در قسمت Network روی TCP Flood Prevention کلیک کرده و در این قسمت گزینه Predefined به طور پیشفرض وجود دارد، این گزینه قابلیت ادیت و حذف ندارد.

TCP Flood Prevention

در این بخش تعداد TCP Connection Number Limit مقدار ۲۵۰ می باشد و به این معنی است که هر IP تنها می تواند این مقدار TCP را ازسال کند.

تعداد TCP Connection Number Limit

تعریف یک TCP Flood Prevention جدید

Create New می زنیم و یک نام در نظر می گیریم.

تعریف TCP Flood Prevention

در قسمت TCP Connection Number Limit مقدار مجاز TCPهای ارسال شده توسط هر IP را مشخص می کنیم.

ما برای تست مقدار ۱ را قرار داده ایم، شما می توانید مقدار مورد نیاز خود را وارد کنید.

در قسمت Action مشخص می کنیم اگر تعداد TCP های IP بیشتر شد چه عملی انجام دهد گزینه های زیر را مشاهده می کنید:

  • Alert
  • Alert & Deny
  • Deny (no log)
  • Period Block

ما در این بخش Period Block را انتخاب می کنیم و بازه زمانی ۶۰ ثانیه را در نظر می گیریم.

Severity یا شدت را مشخص می کنیم.

Trigger Policy را نیز اگر نیاز داشتید فعال کنید.

گزینه های TCP Flood Prevention
میزان severity در TCP Flood Prevention

ایجاد یک Policy

پس از تعریف TCP Flood Prevention لازم است به قسمت DoS Protection Policy برویم و Policy  برای مباحث DoS ایجاد کنیم.

اینجا نیز یک Predefined به طور پیشفرض وجود دارد.

برای تعریف پالسی جدید گزینه Create New را بزنید.

DoS Protection Policy

یک نام در نظر بگیرید.

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

  1. HTTP Session Based Prevention
  2. HTP DoS Prevention
New DoS Protection Policy

به دلیل اینکه گزینه TCP Flood Prevention را تعریف کرده ایم پس این بخش (HTTP DoS Prevention) را فعال می کنیم.

فعال کردن HTTP DoS Prevention

استفاده از TCP Flood Prevention در Web Protection Profile

Web Protection Profile را باز می کنیم در قسمت DoS Protection می توانیم TCP را که تعریف کرده بودیم را انتخاب کنیم.

استفاده از TCP Flood Prevention در Web Protection Profile
DoS Protection در Web Protection Profile

اکنون قابلیت TCP Flood Prevention را برای وب سایت تعریف کردیم.

تست حمله TCP Flood Prevention

برای تست سایت را در دو مرورگر کروم و فایرفاکس باز می کنیم.

مشاهده می کنید که در وبسایت دوم مرورگر فایرفاکس سایت لود نمی شود.

حتی اگر روی یکی از لینک های صفحه در مرورگر کروم کلیک کنید نیز آن صفحه در دسترس نخواهد بود.

عدم دسترسی به سایت پس از حمله TCP Flood
باز کردن یکی از صفحات سایت پس از حمله TCP Flood
عدم دسترسی به صفحات سایت پس از حمله TCP Flood

در فورتی وب بخش Monitor قسمت Blocked IP مشاهده می کنید که IP دستگاه بلاک شده است.

به این دلیل که دو تا TCP ارسال کرده ایم، IP ما بلاک شده است.

این اتفاق به این دلیل است که ارسال یک TCP را مجاز اعلام کرده بودیم.

مشاهده IP های بلاک شده TCP Flood

در قسمت Log ها نیز می توانید مشاهده کنید که این لاگ توضیحات لازم را داده است.

Logها بعد از حمله TCP Flood

Syn Cookie

در حمله TCP SYN flood-style مهاجم بسته SYN را ارسال می کند، سرور نیز با ارسال SYN ACK پاسخ می دهد؛ ولی مهاجم بسته ACK را ارسال نمی کند.

در این حالت یک کانکشن نیمه باز ایجاد می شود.

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

هر سرور تعداد مشخصی کانکشن نیمه باز دارد اگر تعداد آن بیشتر شود نمی تواند به کانکشن های نرمال پاسخ دهد.

با استقاده از قابلیت Syn Cookie تعداد کانکشن های نیمه باز TCP را محدود می کنیم.

حمله TCP SYN flood-style

پیاده ساری SYN Cookie در فورتی وب

برای این کار به به بخش Policy قسمت Server Policy رفته و پالسی مورد نظر را ادیت کنید.

گزینه Syn Cookie را فعال کنید و تعداد را مشخص کنید که این سرور حداکثر چند تا Half Open Threshold داشته باشد.

این قابلیت به راحتی فعال می شود.

پیاده ساری SYN Cookie در فورتی وب
گزینه Syn Cookie

در این آموزش جلوگیری از حملات Denial of Service را بیان کردیم.

حملاتی که با درگیر کردن Resource های سرور های ما، سرویس را Down می کنند.

نوع پیشرفته تر این حملات Destributed Denial of Service می باشد که از تعداد زیادی سیستم برای حمله استفاده میکند.

این کار به کمک محدود کردن تعداد TCP Connection ها از یک سورس آی پی برای TCP Flood Prevention و محدود کردن تعداد کل TCP Connection ها برای جلوگیری از SYN Flood Attack می باشد.