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

پرینت
  • 7

مطمئنا اگر مدیر سرور بودید و هستید بسیار پیش آمده که با این حملات روبرو بودید و هستید اما آیا تا بحال بطور علمی و اصولی دنبال کرده اید؟

این این آموزش خلاصه ای از تعریف این نو حملات رو واستون آماده کردم + راههای مقابله نرم افزاری با آن ها

مروري كوتاه بر حملات DDos
يك حمله Denial Of Service يا به طور اختصاري، DOS رويدادي است كه در آن يك كاربر يا سازمان را از دريافت خدمات از يك منبع محروم مي سازد. كه در شرايط عادي انتظار آن خدمات را دارد.
نوعاً فقدان اين نوع از خدمات به عنوان كاستي در ارائه خدمات شبكه مي باشد. همچون سرويس Email كه سرويسي فعال بوده و چنانچه اين سرويس دچار وقفه اي هر چند كوتاه گردد تمام اتصالات شبكه را كه از اين سرويس سود مي برند مختل خواهد كرد.
در اين مقاله نگاهي خواهيم داشت به حملات DOS و DDOS با عنوان Distributed Denial Of Service كه اين حملات از طرف ميزبانهاي متعدد براي دستيابي به اهداف خاص صورت مي پذيرند.

حملات DOS
براي درك بيشتر حملات DOS و پيامدهاي آن ابتدا بايد شناختي بنيادين از انواع اين حملات داشته باشيم.
اگر چه ارتقاء شناخت ما از سطح حملات DOS به DDOS مقدماتي و متداول مي باشد ولي تفاوت ميان اين دو بسيار مهم است.
در ادامه مطلبي كه در بالا گفته شد بايد بيان كرد كه نبايد از حملاتي كه در چهارچوب اهداف حملات DOS متوجه ما مي باشد غافل بود بلكه مراقبت از زيرساختهاي خدماتي و محاسباتي شبكه معمولاً در برخي از موارد ما را از پيامدهاي منفي اين نوع حملات نفس گير در امان مي دارد.
عموماً اين نوع از حملات در اكثر موارد باعث توقف و از كار افتادن System قرباني نمي شود بلكه معمولاً حملات موفق DOS به منظور كاستن هر چه بيشتر كيفيت خدمات ارائه شده توسط سرويس دهنده ها شكل مي گيرند. اين حملات با درجات مختلفي از تخريب انجام مي شوند كه در اغلب موارد سرويس دهنده اي كه مورد هدف اين نوع از حملات قرار مي گيرد ديگر قادر به ارائه خدمات نخواهد بود.
هدف اين نوع از حملات يك برداشت سطحي از اين نوع حملات، حمله به منظور تسخير Server مي باشد كه در اكثر موارد تعبيري نادرست و غير واقعي به نظر مي رسد اما هدف بنيادين از حملات DOS ايجاد وقفه در ارائه خدمات از جانب سرويس دهنده به سرويس گيرنده مي باشد. خواه اين خدمات مربوط به ميزباني با يك سرويس دهنده باشد يا خواه مربوط به شبكه اي عظيم و بي نقص.
اين حملات بار بسيار زيادي (بالاتر از ظرفيت و توان شبكه) بر شبكه تحميل مي كند كه همين امر باعث ترافيك بالاي شبكه شده و سرويس دهنده هائي كه مشغول ارائه خدمات به سرويس گيرنده مي باشند را دچار وقفه هائي گاه طولاني مدت مي كند.
شكل هاي بسيار متفاوتي از حملات DOS وجود دارند كه كشف اين حملات و يا منحرف ساختن آنها ممكن است كمي دشوار باشد. طي روزها و هفته ها كه از كشف جديدترين حمله مي گذرد ممكن است شخص با هوش ديگري اين نوع از حمله را با شكلي ديگر و از جائي ديگر شبيه سازي و اجرا كند. بنابر اين نبايد فقط به مقابله با يك حمله خاص پرداخت بلكه بايد در برابر تمام اشكال مختلف اين نوع از حملات پايداري و مقاومت كرد.
بيشتر حملات DOS انجام شده روي يك شبكه با جستجوئي تركيبي براي يافتن نقاط ضعف در ساختار امنيتي موجود در پروتكل اينترنت (IP) نسخه چهارم شروع مي شود. هكرها مي دانند كه اين مشكلات امنيتي به برنامه هاي كاربردي و پروتكل هاي سطوح بالاتر نيز منتقل شده اند كه وجود اين نقاط ضعف باعث به وجود آمدن پروتكل اينترنت (IPv6) شد.
توجه به منبع بسته ها و بررسي صحت و درستي آنها با استفاده از Header هاي احراز هويت در پروتكل IPv6 انجام مي گيرد. هر چند اصلاح ساختار اين پروتكل در چنين شرايطي امري است ضروري ولي بايد متذكر شد كه پروتكل IPv6 نيز هيچ مشكلي را براي ما حل نخواهد كرد زيرا كه هنوز به صورت عمومي و كلي مورد استفاده قرار نگرفته است.
حملات DOS فقط از جانب سيستمهاي Remote سرچشمه نمي گيرند، بلكه گاهي اوقات از جانب ماشينهاي Local يا محلي نيز صورت مي پذيرند.
به طور كلي شناسائي و مقابله با حملات محلي ساده تر مي باشد زيرا پارامترهاي به وجود آورنده مشكل، به سادگي قابل تشخيص مي باشند. مثال عمومي از اين نوع حملات بمب هاي خوشه اي هستند كه بصورت مكرر باعث تحليل منابع سيستمهاي ما مي شوند.

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

شاید به جراًت بتوان گفت که مهم ترین دغدغه ی یک مدیر سرور مقابله با حملات DDOS/DOS است. در این پست قصد داریم چندین روش برای مقابله با این نوع حملات به شما ارائه دهیم. البته ناگفته نماند که هیچگاه نمیتوان به طور ۱۰۰% جلوی اینگونه از حملات را گرفت.




تمام عملیات های این پست به صورت نرم افزاری است.


۱- نصب و راه اندازی Dos_Deflate


این ابزار این قابلیت را به شما میدهد که بوسیله آن بتوانید یک سری اطلاعات از IP هایی که به سرور متصل هستند بدست بیاورید. که هر IP چند Connection دارد و این که هر IP چندتا Connectrion بتواند داشته باشد. همینطور شما میتوانید در تنظیمات این ابزار تعیین کنید که گزارش را به ایمیل شما ارسال کند.


دانلود کنید:




wget http://www.inetbase.com/scripts/ddos/install.sh

عملیات نصب را آغاز میکنیم:




sh install.sh

برای اجرا دستور زیر استفاده میکنیم:




sh /usr/local/ddos/ddos.sh

تنظیم DOS_Deflate :


فایل پیکربندی را با یک ویرایشگر باز میکنیم:




nano /usr/local/ddos/ddos.conf

مقدار زیر را قرار پیدا و به صورت زیر ویرایش کرده:


EMAIL_TO=”your_email@domain.com”


بجای your_email@domain.com ایمیل خود را بنویسید، در این موقع، هر IP که Banned بشود به شما اخطار میدهد.


هر IP چه مقداردر دقیقه کانکشن داشته باشد:


FREQ=5


3 تا ۵ بهترین مقدار برای این پارامتر هست.


بیشترین connection که هر IP میتواند داشته باشد را مشخص کنید:


NO_OF_CONNECTIONS=100


مقدار بین ۱۰۰ تا ۲۰۰ میتواند بهترین مقدار باشد.


در Dos_Deflate توسط APF بن کنید:


اگر فایروال APF نصب دارید میتوانید این مقدار را برابر با یک قرار دهید. اگر نه توسط CSF یا … عملیات Ban کردن را انجام میدهید برابر با صفر قرار دهید.


APF_BAN=0


اگر میخواهید IP مورد نظر توسط DOS_Deflate بن شود مقدار زیر را برابر با یک قرار دهید در غیر این صورت صفر بگذارید


KILL=1


IP Address های متخلف چه مقدار در حالت معلق باقی بمانند؟


BAN_PERIOD=700


بهترین مقدار ۳۰۰ تا ۱۱۰۰ است.


۲- بهینه سازی وب سرور Apache :


البته پیشنهاد ما این است که شما از وب سرور های قدرتمند دیگری همچون Litespeed یا nginx استفاده کنید.


ابتدا با دستور زیر فایل پیکربندی آپاچی وب سرور را پیدا کنید:


locate httpd.conf


مقدار Timeout را کمتر کنید:


توضیحات تمام این پارامتر ها در مقاله آموزش وب سرور فارسی (نوشته پیمان قربانی) داده شده است. اما در این پست به طور خلاصه توضیح میدهیم.


Timeout 200


مقدار KeepAliveTime را کمتر کنید:


KeepAliveTime به معنای حداکثر انتظار وب سرور برای پاسخ به کاربر میباشد.


KeepAliveTime 10


قابلیت KeepAlive را خاموش کنید:


KeepAlive Off اگریک Connection بیشتر از یک درخواست دارد به طور مدام به آن اجازه ندهد. در واقع KeepAlive وظیفه اش زنده نگه داشتن Connection است.


KeepAlive Off


مقدار MaxClients را کمتر کنید:


MaxClients به معنای : بیشترین تعداد پروسس هایی که هر Client میتواند داشته باشد.


MaxClients 50


نصب و پیکربندی mod_evasive
یکی از راه های مقابله با حملات Dos استفاده از mod_evasive است. این ابزار یک ماژول تحت Apache و برای سرورهای لینوکس است که درخواست ها را کنترل می کند و از جاری شدن سیل عظیم آن (Flood) جلوگیری می کند. این کار بر اساس تعداد درخواست های مجاز تعیین شده در بخش تنظیمات صورت می گیرد. این ماژول آدرس IP که بیش از حد مجاز درخواست می فرستد را بصورت پیش فرض برای ۱۰ دقیقه مسدود (Block) می کند که این مقدار نیز قابل تغییر است.
mod_evasive نسخه به روز شده همان ماژول mod_dosevasive است که در تاریخ Feb 1 2005 بصورت استفاده عمومی ارائه شده است.
نکته: این ماژول مشکلاتی را با Frontpage Server Extensions دارد و احتمال از کار انداختن آن را ایجاد می کند.


در ضمن پیشنهاد میشود Frontpage بر روی سرور خود پاک و یا غیر فعال کنید.




cd /usr/local/src
wget http://www.zdziarski.com/projects/mod_evasive/mod_evasive_1.10.1.tar.gz
tar -zxvf mod_evasive_1.10.1.tar.gz
cd mod_evasive
apxs -cia mod_evasive20.c

در فایل پیرکبرندی وب سرور آپاچی httpd.conf مقادیر زیر را قرار دهید:


اگر نسخه آپاچی شما ۲٫۰٫x هست :




<IfModule mod_evasive20.c>
DOSHashTableSize 3097
DOSPageCount 5
DOSSiteCount 100
DOSPageInterval 2
DOSSiteInterval 2
DOSBlockingPeriod 10
DOSBlockingPeriod 600
</IfModule>

اگر نسخه آپاچی وب سرور شما ۱٫۰x هست:




<IfModule mod_evasive.c>
DOSHashTableSize 3097
DOSPageCount 5
DOSSiteCount 100
DOSPageInterval 2
DOSSiteInterval 2
DOSBlockingPeriod 600
</IfModule>

سپس وب سرور خود را restart دهید.




service httpd restart

3- دیواره آتشین نصب کنید.


نصب دیوار آتشین CSF


نصب و تنظیم BFD


اگر از CSF استفاده میکنید ، میتوانید تنظیمات زیر را اعمال نمایید:


وارد تنظیمات فایروال شوید،




CT_LIMIT  =

تعداد کانکشن هایی که هر کلاینت با هر IP میتواند داشته باشد را تعیین میکند.




CT_INTERVAL  =

هر چه مدت، چه مدت دیواره آتشین شما کانکشن ها و وضعیت را بررسی کند.




CT_EMAIL_ALERT

هر IP که بن میشود یا .. به شما گزارش بدهد یا خیر (از طریق ایمیل)




CT_PERMANENT

این مقدار را اگ برابر با صفر قراردهید هر IP نمیتواند به طور همیشه بن باشد. اگر یک قرار دهید . هر IP که بن میشود واسه همیشه بن خواهد شد.




CT_BLOCK_TIME  =

IP که بن میشود چه مدت معلق بماند؟! مقدار ۱۸۰۰ یا ۵۰۰ مقداری خوبی است.




CT_SKIP_TIME_WAIT

برابر با صفر باشد.




CT_STATES  =

آمار از سرور به شما ارائه میدهد. اینکه هر IP چند کانکشن دارد و …




CT_PORTS

پورت ها را با , از هم جدا کنید. مثلا: ۸۰,۴۴۳,۲۵


۴- یافتن حملات و درخواست هایی از نوع sync




netstat -an|grep :80

با دستور فوق تمام کانکشن هایی که به پورت ۸۰ وصل هستند را نمایش میدهد ، سپس دستور زیر را وارد میکنیم تا ببنیم کجا با SYN_RECV شروع شده است




netstat -an|grep SYN_RECV

تعداد کانکشن های آپاجی و تعداد کانکشن های SYN_RECV :




netstat -an|grep :80|wc -l


netstat -an|grep SYN_RECV|wc -l


آیا این پاسخ به شما کمک کرد؟

« برگشت