آشنایی با حملات SYN FLOOD و راه مقابله

SYN Flood ( سيلاب SYN ) يكي از روشهاي حمله هاي تكذيب سرويس Denial of Service ( به اختصار حمله DoS ) مي باشد . اما چرا اين حمله تكذيب سرويس ناميده مي شود :
در شبكه هاي كامپيوتري سرورها دائما با كلاينتها در ارتباط هستند . منابع سرور محدود بوده و اگر درخواستها زياد شود درخواستهاي جديدتر در صف قرار مي گيرند تا نوبت پاسخگويي به آنها برسد . اگر اين صف نيز پر شود سرور درخواستهاي رسيده را ناديده مي گيرد ( قادر به پاسخگويي به آنها نيست ) و اين اتفاقي است كه در حمله هاي DoS اتفاق مي افتد . از آنجا كه اين حمله سرويس دهي سرور را متوقف مي كند به آن حمله تكذيب سرويس مي گويند .
حال به بحث اصلي مي پردازيم و ببينيم نوع حمله SYN Flood چگونه كار مي كند . براي اينكه با اين حمله آشنا شويم ابتدا بايد نگاهي گذرا به پروتكل TCP/IP مي اندازيم .
در اين پروتكل زماني كه سرور كد SYN را از كلاينت دريافت مي كند متوجه مي شود كه كلاينت قصد برقراري ارتباط را دارد . اگر اين درخواست قبول شود سرور با يك SYN/ACK پاسخ مي دهد و اين كد براي كلاينت به مفهوم قبول ارتباط از طرف سرور بوده است و ارتباط برقرار مي گردد :

https://wiki.mihanhosting.ir/wp-content/uploads/2014/12/tcp-300x199.jpg
حال مهاجم با استفاده از اين كد سيلي از درخواستهاي SYN را به سمت سرور سرازير مي كند . در نتيجه سرور قادر به پاسخگويي نبوده و دچار كاهش سرويس دهي مي شود . حتي ممكن است اين حمله منجر به توقف كامل سرويس دهي سرور شود .

تشخیص:

در این مواقع در مشاهده لاگ سرور خطای زیر مشاهده می شود:

possible SYN flooding on port 80

راههای مقابله:

فایل csf.conf را از مسیر زیر ویرایش میکنیم:

nano /etc/csf/csf.conf

و مقدار SYNFLOOD = 1  قراردهید، سرویس فایروال را ریستارت کنید.

همچنین با دستور زیر می توانید ای پی هایی که در این حمله شرکت داشتند شناسایی شود:

 

netstat -tuna | grep :80 | grep SYN_RECV

 

با دستور زیر:

csf –d IPADDRESS

ای پی های خاطی را مسدود میکنیم.

همچنین در فایل /etc/sysctl.conf

مقادیر زیر را اعمال میکنیم:

net.ipv4.tcp_syncookies = 1

افزایش صف حملات

net.ipv4.tcp_max_syn_backlog = 2048

کاهش صف حملات:

net.ipv4.tcp_synack_retries = 3

تنظیم فاصله SYN_RECV

کاهش مقدار فاصله برای SYN_RECV برای کاهش حمله  SYN کمک خواهد کرد . مقدار پیش فرض 60 است و ما می توانیم آن را به 40 یا  45.  کاهش دهیم.این کاهش را می توان با اضافه کردن خط زیر را به sysctl.conf انجام می دهیم:

net.ipv4.netfilter.ip_conntrack_tcp_timeout_syn_recv=45

همچنین پارامتر زیر را بصورت ذکر شده تنظیم کنید:

net.ipv4.conf.all.rp_filter = 1

 

 

 

 

ارسال دیدگاه

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

متن نظر
نام*:
رایانامه*:
وب سایت / وبلاگ: