SYN flood نوعی از حملات DDOS است که در این مقاله شما را با SYN flood Attack و روش های مقابله با آن آشنا خواهیم کرد، همراه داتیس نتورک باشید.
حمله SYN flood چیست؟
SYN flood نوعی از حملات DDOS است که در آن یک مهاجم سریعاً بدون نهایی کردن اتصال ، یک اتصال به سرور را آغاز می کند.
Syn Flood زمانی اتفاق می افتد که میزبانی از بستههای سیل آسای TCP/SYN استفاده کند که آدرس فرستنده آنها جعلی است.
هر کدام از این بستهها همانند یک درخواست اتصال بوده و باعث میشود سرور درگیر اتصالات متعدد نیمه باز بماند و با فرستادن یا برگرداندن بستههای TCP/SYN ACK، منتظر بستههای پاسخ از آدرس فرستنده بماند ولی چون آدرس فرستنده جعلی است هیچ پاسخی برگردانده نمیشود.
این اتصالات نیمه باز تعداد اتصالات در دسترس سرور را اشباع میکنند و آن را از پاسخگویی به درخواستهای مجاز تا پایان حمله باز می دارد.
بنابر این منابع سرور به اتصالهایهای نیمه باز اختصاص خواهد یافت. و امکان پاسخ گویی به درخواستها از سرور منع میشود.
حملهی SYN flood در دستهی حملههای DDoS قرار میگیرد و مانند این حملهها، سعی میکند با ارسال درخواست و مشغول نگه داشتن سرور، ظرفیت سرور برای پاسخگویی به درخواستها را به حداقل ممکن برساند و مانع دسترسی کاربران به سرویس شود.
عملکرد حملهی SYN flood
زمانی که یک کاربر (برای نمونه یک مرورگر) قصد دارد با استفاده از پروتکل TCP به سروری وصل شود، ابتدا یک پیام SYN برای سرور ارسال میکند.
کاربر با ارسال این پیام، اطلاعاتی را در اختیار سرور میگذارد که از آنها پس از ایجاد TCP connection و برای تبادل اطلاعات استفاده میشود.
سرور در جواب پیام SYN، یک پیام ACK ارسال میکند که نشاندهندهی دریافت پیام SYN کاربر است.
سپس، بهشکل همزمان یک پیام SYN را نیز، برای کاربر ارسال میکند.
در پایان اگر کاربر هم برای سرور جواب ACK را ارسال کند، TCP connection برقرار میشود.
سرور، به ازای هر پیام SYN که دریافت میکند، پاسخ SYN/ACK را ارسال میکند، تا مدتزمان مشخصی ارتباط TCP تشکیل شده را برقرار نگه میدارد و منتظر دریافت پاسخ از کاربر میماند.
با در نظر گرفتن این شرایط، حملهی SYN flood به این شکل است که حمله کننده با تعداد زیادی کاربر و IPهای مختلف، پیام SYN برای سرور ارسال میکند و پس از دریافت پاسخ، جواب ACK را ارسال نمیکند.
چون منابع سرور در نگهداری connectionهای باز محدود هستند، درخواست جدید را نمیتواند قبول کند و سرویسی که ارایه میدهد از دسترس خارج میشود.
یکی دیگر از راههای پیادهسازی این حمله آن است که، حملهکننده پیامهای SYN با IP های مبدا دستکاری شده و مختلف ارسال کند.
در این حالت، هنگامی که آدرسهای IP استفاده شده، جواب SYN/ACK را دریافت میکنند، آن را به عنوان یک پیام بیمعنی در نظر میگیرند و جوابی ارسال نمیکنند.
راههای مقابله با حملهی SYN flood
هر راهی که سبب شود تعداد connectionهای باز و غیرواقعی سرور کاهش پیدا کند، تا حدودی میتواند جلوی حملهی SYN flood را بگیرد.
1- یکی از این راهها، استفاده از SYN cookie است.
زمانی که سرور پاسخ SYN/ACK را ارسال میکند، به همراه آن یک cookie که براساس اطلاعات connection تا این لحظه (شامل آدرس IP کاربر، شماره پورت و …) تنظیم شده است، ارسال میکند و connection را باز نگه نمیدارد.
در ادامه، کاربر پاسخ ACK را همراه cookieای که قبلتر دریافت کرده بود، ارسال میکند.
اگر cookie و ACK هر دو معتبر باشند، سرور connection را ایجاد میکند و از این به بعد برای این connection منابعی را اختصاص میدهد.
2- اگر بتوان کاری کرد که کاربر پس از دریافت یک جواب، دوباره درخواست خود را ارسال کند، تا حدودی میتوان از واقعی بودن کاربر اطمینان داشت.
برای این کار، لازم است سرور پس از دریافت اولین پیام SYN، یک پیام SYN/ACK نامعتبر ارسال کند.
کاربر پس از دریافت این پیام، یک پیام RST ارسال میکند که به این معنی است که دربارهی جوابی که دریافت کرده مشکلی وجود دارد.
پس از اینکه سرور این پیام را دریافت کرد، پیام SYN/ACK واقعی را ارسال میکند و با ادامهی این روند، connection ایجاد میشود.
این کار، جلوی حملههایی را که در آنها مهاجم IP مبدا را تغییر میدهد یا پس از ارسال پیام SYN، بررسی بیشتری انجام نمیشود ، میگیرد.
3- استفاده از proxy هم تا حدودی میتواند از این حمله جلوگیری کند.
یک proxy، قبل از آن که پیامهای SYN به سرور اصلی برسد، آنها را دریافت میکند و از طرف سرور اصلی جواب SYN/ACK را ارسال میکند.
اگر پاسخ ACK را دریافت کرد و connection ایجاد شد، اطلاعات مربوط به connection ایجاد شده را به عنوان یک connection معتبر به سرور اصلی میدهد و از این پس کاربر میتواند با پروتکل TCP با سرور ارتباط برقرار کند.
البته در استفاده از این روش، تمام مشکلهایی که برای سرور در حملهی SYN flood ایجاد میشد، میتواند برای proxy ایجاد شود و از آنجایی که ممکن است سرور proxy قدرت پردازش کمتری نسبت به سرور اصلی داشته باشد، حملهی SYN flood روی proxy server میتواند اثر بیشتری داشته باشد بنابراین برای انتخاب این روش باید دقت کرد و تنها در مواردی از آن استفاده کرد که مطمین بود، اثرات حمله کمتر میشود.
4- کاهش منابع اختصاص داده شده به یک connection
همچنین کاهش منابع اختصاص داده شده به یک connection که هنوز کاملن ایجاد نشدهاند، میتواند سبب شود که سرور منابع آزاد بیشتری داشته باشد و در نتیجه connection های بیشتری را ایجاد کند.
برای نمونه، به جای نگهداشتن تمام اطلاعات مربوط به یک connection ناکامل، تنها بخش ضروری آن را نگه دارد.
همچنین میتواند با کاهش زمانی که یک connection باز را نگه میدارد، منابع اختصاص داده شده را سریعتر آزاد کند.
جمع بندی :
راه اندازی یک حمله TCP SYN برای مهاجم بسیار راحت و در عین حال مخرب است.
امیدواریم مقاله آشنایی با حملات SYN flood مفید بوده باشد.
داتیس نتورک را در شبکه های اجتماعی دنبال کنید.