پاسخ : ارائه راهکارهای مفید امنیتی برای مقابله با حملات علیه سرورهای لینوکس
مقابله با dDoS با استفاده از DROP list:
DROP list شامل لیست ipهای zombie و ip هایی است که مهاجمین از اونا برای dDoS استفاده
میکنن و یا اکثر اسپمرهای شناخته شده مثل ARIN, LACNIC, APNIC, RIPE از این لیست برای اسپم و اسکن و...استفاده میکنند. با این روش، میشه بسیاری از ترافیک های مضر رو بلوک کرد.
برای بکاربردن DROP list میشه از این شل اسکریپت برای firewall /router /dedicated Linux web-mail server استفاده کرد:
کد:
#!/bin/bash FILE="/tmp/drop.lasso" URL="http://www.spamhaus.org/drop/drop.lasso" echo "" echo -n "Applying DROP list to existing firewall..." [ -f $FILE ] && /bin/rm -f $FILE || : cd /tmp wget $URL blocks=$(cat $FILE | egrep -v '^;' | awk '{ print $1}') iptables -N droplist for ipblock in $blocks do iptables -A droplist -s $ipblock -j LOG --log-prefix "DROP List Block" iptables -A droplist -s $ipblock -j DROP done iptables -I INPUT -j droplist iptables -I OUTPUT -j droplist iptables -I FORWARD -j droplist echo "...Done" /bin/rm -f $FILE
با استفاده از این اسکریپت، لیست ipهای بلوک، هر24 ساعت یکبار آپدیت میشه و با هر بار
اجرا، بلوک لیست ازاین لینک http://www.spamhaus.org/drop/drop.lasso دانلود میشه و
تغییرات ipها در لیست اعمال میشه.
پاسخ : ارائه راهکارهای مفید امنیتی برای مقابله با حملات علیه سرورهای لینوکس
مقابله با slowloris dDoS attack با استفاده از ماژول mod_qos:
(تست شده روی Apache2/Debian)
ماژول quality of service برای وب سرورهای Apache، مکانیزمی برای اولویت بندی و کنترل
درخواستهای http هست.
slowloris توسط RSnake و به زبان perl نوشته شده و میتونه درحمله dDoS بر روی وب سرور
apache و سرور squid caching pro/xy استفاده بشه.
البته سرورهای IBM http و IBM webSphere edge caching pro/xy هم نسبت به slowloris
آسیب پذیرن.
slowloris بطورمداوم صدها درخواست معتبر http رو به سمت سرور ارسال میکنه وبا تولید کمترین ترافیک tcp برای این درخواستها، این کانکشن ها رو باز نگه داره تا سرور ازپا دربیاد ودیگه سرورنمیتونه به ترافیک سالم http پاسخ بده...
حتی شبکه هایی که از سخت افزارهای load balancer هم استفاده میکنن، وب سرورشون به slowloris dos آسیب پذیر هست.
mod-qos میتونه با محدود کردن تعداد کانکشن های tcp وغیرفعال کردن keep-alive برای کانکشن tcp (مثلا هنگامیکه کانکشن های tcp به بیش از 70% برسه) و برای جلوگیری از بازبودن کانکشن های slowloris که هیچ درخواستی ندارن با درنظر گرفتن حداقل میزان data rate برای این درخواستها وپاسخ دادن به اونا با slowloris مقابله کنه.
ماژول mod-qos ازلینک mod_qos | Free software downloads at SourceForge.net قابل دریافت هست.
فعال سازی و پیکربندی mod-qos:
ویراش فایل vi qos.load# :
کد:
LoadModule qos_module /usr/lib/apache2/modules/mod_qos.so
ویراش فایل vi qos.conf# :
کد:
## QoS Settings <IfModule mod_qos.c> # handles connections from up to 100000 different IPs: QS_ClientEntries 100000 # will allow only 50 connections per IP: QS_SrvMaxConnPerIP 50 # maximum number of active TCP connections is limited to 256: MaxClients 256 # disables keep-alive: QS_SrvMaxConnClose 180 # minimum request/response speed (slowloris keeping connections open without requesting anything): QS_SrvMinDataRate 150 1200 # and limit request header and body: # LimitRequestFields 30 # QS_LimitRequestBody 102400 </IfModule>
فعال کردن ماژول و راه اندازی مجدد apache:
کد:
a2enmod qos /etc/init.d/apache2 restart
پاسخ : ارائه راهکارهای مفید امنیتی برای مقابله با حملات علیه سرورهای لینوکس
مقابله با 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 رو بر اساس ترافیک شبکه خودتون وبا
توجه به نیازوشرایط خودتون تنظیم کنید.)