رفتن به مطلب
iranwebserver
pimaster

KS AntiDDOS اسکریپتی برای مقابله با حملات DDOS

پست های پیشنهاد شده

درباره KS AntiDDOS:

این اسکریپت می تواند با حملات DDOS که خیلی جدی و خطرناک نباشند مقابله کند. این اسکریپت از طریق آی پی افراد و تحت نظر گرفتن درخواست ها، میتواند کاربری را که بیش از حد درخواست کرده را بلاک کند و به آن خطای 503 (سرویس در دسترس نیست) را نشان دهد.

امکانات مورد نیاز برای این اسکریپت:

توابع shared memory باید فعال باشند. برای اینکه بدانید در سرور شما این توابع فعال است یا نه، میتوانید بعد از آپلود فایل، آدرس زیر را در مرورگر وارد کنید و نتیجه را مشاهده کنید:

محتوای مخفی

    برای مشاهده لینک ها می بایست در وب سایت عضو باشید!

نحوه ی نصب:

فایل ksantiddos.php را در یک پوشه آپلود کنید.

آسان ترین روش این است که کد زیر را در فایل header خود یا ابتدای فایل index خود، قبل از هرگونه کد دیگری قرار دهید.


include "$_SERVER[DOCUMENT_ROOT]/path/to/ksantiddos.php";
$ksa = new ksantiddos();
$ksa->doit(10,20); // allow 10 hits in 20 seconds (seconds go second

اگر بیشتر از 10 درخواست در هر 20 ثانیه و از طرف یک آی پی مشخص درخواست شوند، آی پی بلاک میشود و پس از آن برای همه ی درخواست ها، دستور های زیر انجام میشود. (در دستور زیر، بعد از 30 ثانیه آی پی بلاک شده آزاد میشود)


header('HTTP/1.0 503 Service Unavailable');
header('Status: 503 Service Unavailable');
header("Retry-After: 30");
print "<html><meta http-equiv='refresh' content='30'><body><h2>Our server is currently overloaded, your request will be repeated automatically in 30 seconds</h2>";

توضیح: نگران این نباشید که ممکن است این اخطار در موتورهای جستجوی ثبت شود چون اخطار 503 فقط این را نشان میدهد که صفحه موقتا در دسترس نیست نه اینکه صفحه موجود نیست.

نمونه ای از تنظیماتی که میتوانید در ابتدای فایل خود قرار دهید:


include "$_SERVER[DOCUMENT_ROOT]/path/to/ksantiddos.php";
$ksa = new ksantiddos(200000); // number of bytes for shared memory. defau;t is 300000

// script analizes IP activity for last $seconds_limit seconds
$seconds_limit = 20;
// considering hits above $hits_limit as subject of blocking
$hits_limit = 10;

// script indicates visitor`s status ($ks->visitor) as:
// raw - visitor was somehow not processed by KS AntiDDOS
// new - processing first visit from the IP for $seconds_limit seconds
// cool - number of hits from the IP - form 2 to $ksa->warm_level-1
// warm - number of hits from the IP - form $ksa->warm_level to $ksa->hits_limit-1
// hot - number of hits from the IP exeeds hits_limit and visitor should be blocked (suspended) for $ksa->delay seconds

// more optional settings
$ksa->auto = false; // dont suspend hot-visitor by the script (if you are going to make it by yourself)
$ksa->warm_level = 3; // value of warm_level, default is $hits_limit/2
$ksa->delay = 10; // offer 'hot' visitor be back in $ksa->delay second; this is the time of suspension
// default value is 30
$ksa->block_cnet = false; // block IP on C-net basis. script stores 111.222.333.* IPs as single 111.222.333. IP.
// this considerably improves efficiency of infected nets blocking.
// there is no common reason to turn it to false. defalt is true.

// detecting visitor`s status
$ksa->doit($hits_limit,$seconds_limit);
// if you didn`t reset $ksa->auto to false and visitor`s status $ksa->visitor=='hot'
// then scripts sends the browser headers and HTML that suspend the visitor for $ksa->delay seconds (30 as default)

// now, if your reset $ksa->auto to false, do detecting if visitor should be suspended
if ($ksa->visitor=='hot' && isset($_GET['search'])) // blocking only search requests, for example
{
header('HTTP/1.0 503 Service Unavailable');
header('Status: 503 Service Unavailable');
header('Retry-After: 30');
die('sleep');
}

$lite_version = $ksa->visitor=='warm'; // on this variable you can return a lite version of your site to 'warm' visitors
// (that have above $ksa->warm_level hits in $ksa->seconds_limit seconds)

سایت اسکریپت:

محتوای مخفی

    برای مشاهده لینک ها می بایست در وب سایت عضو باشید!

صفحه دانلود اسکریپت:

محتوای مخفی

    برای مشاهده لینک ها می بایست در وب سایت عضو باشید!

ویرایش شده در توسط pimaster

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

برای ارسال دیدگاه یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

برای اینکه بتوانید دیدگاهی ارسال کنید نیاز دارید که کاربر سایت شوید

ایجاد یک حساب کاربری

برای حساب کاربری جدید در سایت ما ثبت نام کنید. عضویت خیلی ساده است !

ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید

ورود به حساب کاربری

×