مقابله با SYN-flood DOS Attack:
SYN flood یکی از انواع حملات dos هست که مهاجم درخواستهای پیاپی SYN
رو به سمت سرور ارسال میکنه و این نوع حمله dos بر روی شبکه های مدرن
تاثیری نداره و درواقع اگه سرور بیاد قبل از اینکه ACK رو دریافت کنه،
resourceها رو به درخواست های SYN اختصاص بده، میشه گفت که این سرور
به این نوع ازdos آسیب پذیرهست.
برای مقابله میتونیم تمام کانکشن های ورودی tcp رو مجاز تلقی کنیم به شرطی که
تابع محدودیت تعریف شده درiptables باشن.
برای تعریف این محدودیت، میتونیم ماکزیمم تعداد پکتهای syn که پشت سرهم ارسال
میشن (limit-burst) رو برابربا 3 قراربدیم (بطور پیش فرض 5 پکت هست) و
limit-rate هم برابر1/s قرار بدیم تا کانکشن هایtcp درهرثانیه پذیرفته بشن ونهایتا
پکتهای syn ناسالم، drop بشن.برای اینکار دراسکریپت iptables، میتونیم این
ruleها رو اضافه کنیم:
کد:
# SYN-flood protection: iptables -N syn_flood iptables -A INPUT -p tcp --syn -j syn_flood iptables -A syn_flood -m limit --limit 1/s --limit-burst 3 -j RETURN iptables -A syn_flood -j DROP
-----------------
مثال دیگه:
هم چنین میتونیم با استفاده ازlimit-rate و limit-burst کانکشنهای ورودی icmp رو
محدود کنیم، با تعریف این ruleها در iptables:
rule اول، کانکشن های ping رو درهرثانیه با1پکت (1=brust) قبول میکنه و rule
دوم درفایل var/log/message/ برای پکت متخلف (ping-drop) لاگ میسازه و
rule سوم پکت متخلف رو drop میکنه و rule چهارم اجازه میده به درخواست ping
که ازطرف کانکشن حاضر(سالم) ارسال شده، پاسخ داده بشه.
کد:
# Limiting the incoming icmp ping: iptables -A INPUT -p icmp -m limit --limit 1/s --limit-burst 1 -j ACCEPT iptables -A INPUT -p icmp -m limit --limit 1/s --limit-burst 1 -j LOG --log-prefix PING-DROP: iptables -A INPUT -p icmp -j DROP iptables -A OUTPUT -p icmp -j ACCEPT
(شما میتونید limit-rate و limit-burst رو بر اساس ترافیک شبکه خودتون وبا
توجه به نیازوشرایط خودتون تنظیم کنید.)