PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : سیستم فایروال آنتی دیداس + کلودفلر cloudflare



hoka
April 2nd, 2019, 23:07
سلام و درود خدمت همه ی عزیزان دل

نمیدونم کدوم از خدا بی خبری سایت مارو گذاشته بود زیردیداس و ما هم مجبور شدیم یه سیستم بنویسیم که بگیریم این حمله رو . گفتم شاید برای دوستان مفید باشه سیستم رو پابلیک میکنم

** نیاز هست دامنه در کلودفلر باشه - البته میشه به صورت htaccess هم محدود کرد ولی کار بسیار سخت تر هست از نظر کد نویسی و geoIP و ... **


خب توضیحات کار سیستم :

1- ذخیره تمام درخواست های یک دقیقه ی اخیر
2- یافتن url هایی که درخواست زیادی بهشون ارسال میشه در دقیقه ( قابل تنظیم تعداد )
3- اضافه کردن url حمله شده به rule فایروال کلودفلر برای چلنج ( کپچا - یا بلاک )
4- درخواست هایی که به url ارسال میشن دیگه از کلودفلر رد نمیشه و حمله خنثی میشه
5- بعد از مدت مشخص url از rule خارج میشه

تمام موارد به صورت خودکار اجرا میشه و نیاز به دخالت نیست


نکته 1: قابلیت فعال گذاشتن ( عدم چلنج ) آی پی های ایران و همچنین ربات های گوگل
نکته 1 برای نکته ی 1 : به دلیل اینکه آی پی های پابلیک ایران کم هست حمله از این آی پی ها اجرا نمیشه معمولا و همین باعث میشه کاربرهاتون مشکلی براشون پیش نیاد و فقط آی پی های خارج به صفحه ی چلنج برن
نکته 2 برای تکته ی 1 : شاید حمله کننده خودش رو به عنوان ربات گوگل معرفی بکنه (agent) برای همین این مورد رو با توجه به سلیقه ی خودتون فعال و یا غیر فعال کنید


خب فعلا نکته ی دیگه ای به ذهنم نمیرسه . غیر از اینکه چلنج جاوا اسکریپت به راحتی رد میشه توسط حمله کننده پس کپچا یا بلاک تنها راه حل هست





نصب :

نصب رو خلاصه میگم ( نیاز به مقداری اطلاعات عمومی از هاست هست )

مرحله ی اول


اول فایل هارو داخل هاست آپلود میکنید - پیوست


مرحله ی دوم

دیتابیس رو بسازید یا داخل دیتابیس قبلی ایمپورت کنید ( پیوست . جداول firewall_rules - firewall_hits) - اگر وردپرس هست یا سیستم اختصاصی یا متن باز هست بهتره داخل دیتابیس قبلی ایمپورت بشه که جداول مورد نیاز ساخته بشه ( رجوع به مرحله ی آخر )

مرحله ی سوم


داخل اکانت کلود بشید و دامنه رو انتخاب کنید . بخش firewall - بخش rules - یک رول اضافه کنید به مقادیری که گفته شده ( مقدار سوم فقط برای خالی نبودن عریضه هست یه چیزی بزنید که کاربرد نداشته باشه داخل سایتتون - کلا این موارد تغییر میکنن اتوماتیک غیر از نوع چلنج ) - نوع چلنج رو من کپچا قرار دادم - بزارید این رول فعال باشه

39116


39117




مرحله ی چهارم

فایل کانفیگ رو از داخل فایل ها پیدا کنید و ادیت کنید

خلاصه ی داستان




مشخصات دیتابیس

/** The name of the database*/
define('DB_NAME_pro', '');
/** MySQL database username */
define('DB_USER_pro', '');
/** MySQL database password */
define('DB_PASSWORD_pro', '');
/** MySQL hostname */
define('DB_HOST_pro', 'localhost');


بیشترین تعداد درخواست یک url در دقیقه - بیشتر از این مقدار به عنوان حمله در نظر گرفته میشه
//Max hits in one min
define('_max_hits_', '20');

تعداد ساعت فعال بودن یک url در rule
//Max challeng time - in hours
define('_Challeng_Hours_', '24');

url هایی که میخواید کلا در rule نیان به هیچ وجه- اختیاری
//Not challeng urls
$not_challeng_url_array = array("/ex1","/ex2");


آی پی های ایران هم چلنج براشون اجرا بشه یا خیر - فالس = خیر
//IR IPs challeng active
define('_Challeng_IR_', false);

گوگل بات ها هم چلنج براشون اجرا بشه یا خیر - فالس = خیر
//google bots challeng active
define('_Challeng_GoogleBots_', false);

ایمیل اکانت کلودفلر
//CloudFlare Email
define('_CloudFlare_Email_', '');

توکن api کلودفلر- تصویر ضمیمه
//CloudFlare Token
define('_CloudFlare_Token_', '');

آی دی دامنه کلود - تصویر ضمیمه
//CloudFlare Zone - select domain . look at right down menu
define('_CloudFlare_Zone_', '');

***** آی دی - بعدا در مرحله ی بعد گفته میشه چطوری دریافت کنید - بعد از تکمیل فایل کانفیگ

//Rule filter ID - get from get_filters.php
define('_Filter_ID_', '');


توکن ربات تلگرام برای اطلاع رسانی به ادمین
//telegram bot token
define('_Telegram_Bot_Token_', '');

آی دی بک اند اکانت ادمین برای اطلاع رسانی به ادمین قابل دریافت از ربات زیر - عددی هست
//telegram admin backEnd ID - get from @getmyid_bot
define('admin_telegram', '');






39120






مرحله ی پنجم

بعد از ذخیره کردن فایل کانفیگ نیاز هست id ***** مورد نظر که توی مرحله ی سوم ایجاد کردید رو هم پیدا کنید و داخل فایل کانفیگ بخش مربوطه ذخیره کنید - _Filter_ID_


خب برای اینکار فایل get_filters.php از طریق مرورگر لود کنید ( اجراش کنید )

اگر تمام موارد مورد نظر برای کلودفلر رو درست زده باشید باید یه همچین چیزی رو ببینید توی خروجی

39121


من 3 تا رول دارم . شما باید یکی باشه اگر قبلا ایجاد نکرده باشید . توی expression میتونید اون مقداری که زدید رو تشخیص بدید . همون filter رو باید آی دیش رو بردارید ( یک از خط قرمز ها ) . آی دی رو داخل فایل کانفیگ ذخیره کنید


مرحله ی پنجم

فایل cron_firewall.php داخل پوشه ی crons رو یک کران جاب براش ایجاد کنید هر دقیقه اجرا بشه


مرحله ی ششم و آخر

باید درخواست هارو ذخیره کنیم - در هدر سایت یا یه جایی که تمام درخواست های که میاد (url) رو ذخیره کنیم

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




$url = $_SERVER['REQUEST_URI'];
//escape

INSERT INTO `firewall_hits`(`url`) VALUES ('$url')


اگر وردپرس هست . داخل فایل header.php قالب اولش اضافه کنید


<?php
$current_url = $_SERVER['REQUEST_URI'];
$wpdb->insert('firewall_hits', array(
'url' => $current_url
));
?>




و اگر هیچکدام نیست که باید از خود سیستم کمک بگیرید - البته این باعث میشه یک کانکشن mysql اضافی ایجاد بشه روی سرور با هر درخواست برای همین توضیحش نمیدم








در کل شاید کار کار اشتباه باشی. یا کد نویسی ضعیف باشه یا هرچیزی که شما اساتید میفرمایید . شاید راه بهتری و کم دردسر تری باشه


ولی خب من با همین روش جواب گرفتم و مشکل حل شده برام . فوقش 1 دقیقه سایت میره زیر ddos


نکته ی آخر - شاید با پارامتر GET چندین url ایجاد بشه توسط حمله کننده که اگر کسی دید همچین چیزی رو بگه تا کد هارو بروز کنم ولی خب من ندیدم چیزی


امیدوارم به درد بخوره

vMizban
April 3rd, 2019, 01:48
سلام و درود خدمت همه ی عزیزان دل

نمیدونم کدوم از خدا بی خبری سایت مارو گذاشته بود زیردیداس و ما هم مجبور شدیم یه سیستم بنویسیم که بگیریم این حمله رو . گفتم شاید برای دوستان مفید باشه سیستم رو پابلیک میکنم

** نیاز هست دامنه در کلودفلر باشه - البته میشه به صورت htaccess هم محدود کرد ولی کار بسیار سخت تر هست از نظر کد نویسی و geoIP و ... **


خب توضیحات کار سیستم :

1- ذخیره تمام درخواست های یک دقیقه ی اخیر
2- یافتن url هایی که درخواست زیادی بهشون ارسال میشه در دقیقه ( قابل تنظیم تعداد )
3- اضافه کردن url حمله شده به rule فایروال کلودفلر برای چلنج ( کپچا - یا بلاک )
4- درخواست هایی که به url ارسال میشن دیگه از کلودفلر رد نمیشه و حمله خنثی میشه
5- بعد از مدت مشخص url از rule خارج میشه

تمام موارد به صورت خودکار اجرا میشه و نیاز به دخالت نیست


نکته 1: قابلیت فعال گذاشتن ( عدم چلنج ) آی پی های ایران و همچنین ربات های گوگل
نکته 1 برای نکته ی 1 : به دلیل اینکه آی پی های پابلیک ایران کم هست حمله از این آی پی ها اجرا نمیشه معمولا و همین باعث میشه کاربرهاتون مشکلی براشون پیش نیاد و فقط آی پی های خارج به صفحه ی چلنج برن
نکته 2 برای تکته ی 1 : شاید حمله کننده خودش رو به عنوان ربات گوگل معرفی بکنه (agent) برای همین این مورد رو با توجه به سلیقه ی خودتون فعال و یا غیر فعال کنید


خب فعلا نکته ی دیگه ای به ذهنم نمیرسه . غیر از اینکه چلنج جاوا اسکریپت به راحتی رد میشه توسط حمله کننده پس کپچا یا بلاک تنها راه حل هست





نصب :

نصب رو خلاصه میگم ( نیاز به مقداری اطلاعات عمومی از هاست هست )

مرحله ی اول


اول فایل هارو داخل هاست آپلود میکنید - پیوست


مرحله ی دوم

دیتابیس رو بسازید یا داخل دیتابیس قبلی ایمپورت کنید ( پیوست . جداول firewall_rules - firewall_hits) - اگر وردپرس هست یا سیستم اختصاصی یا متن باز هست بهتره داخل دیتابیس قبلی ایمپورت بشه که جداول مورد نیاز ساخته بشه ( رجوع به مرحله ی آخر )

مرحله ی سوم


داخل اکانت کلود بشید و دامنه رو انتخاب کنید . بخش firewall - بخش rules - یک رول اضافه کنید به مقادیری که گفته شده ( مقدار سوم فقط برای خالی نبودن عریضه هست یه چیزی بزنید که کاربرد نداشته باشه داخل سایتتون - کلا این موارد تغییر میکنن اتوماتیک غیر از نوع چلنج ) - نوع چلنج رو من کپچا قرار دادم - بزارید این رول فعال باشه

39116


39117




مرحله ی چهارم

فایل کانفیگ رو از داخل فایل ها پیدا کنید و ادیت کنید

خلاصه ی داستان




مشخصات دیتابیس

/** The name of the database*/
define('DB_NAME_pro', '');
/** MySQL database username */
define('DB_USER_pro', '');
/** MySQL database password */
define('DB_PASSWORD_pro', '');
/** MySQL hostname */
define('DB_HOST_pro', 'localhost');


بیشترین تعداد درخواست یک url در دقیقه - بیشتر از این مقدار به عنوان حمله در نظر گرفته میشه
//Max hits in one min
define('_max_hits_', '20');

تعداد ساعت فعال بودن یک url در rule
//Max challeng time - in hours
define('_Challeng_Hours_', '24');

url هایی که میخواید کلا در rule نیان به هیچ وجه- اختیاری
//Not challeng urls
$not_challeng_url_array = array("/ex1","/ex2");


آی پی های ایران هم چلنج براشون اجرا بشه یا خیر - فالس = خیر
//IR IPs challeng active
define('_Challeng_IR_', false);

گوگل بات ها هم چلنج براشون اجرا بشه یا خیر - فالس = خیر
//google bots challeng active
define('_Challeng_GoogleBots_', false);

ایمیل اکانت کلودفلر
//CloudFlare Email
define('_CloudFlare_Email_', '');

توکن api کلودفلر- تصویر ضمیمه
//CloudFlare Token
define('_CloudFlare_Token_', '');

آی دی دامنه کلود - تصویر ضمیمه
//CloudFlare Zone - select domain . look at right down menu
define('_CloudFlare_Zone_', '');

***** آی دی - بعدا در مرحله ی بعد گفته میشه چطوری دریافت کنید - بعد از تکمیل فایل کانفیگ

//Rule filter ID - get from get_filters.php
define('_Filter_ID_', '');


توکن ربات تلگرام برای اطلاع رسانی به ادمین
//telegram bot token
define('_Telegram_Bot_Token_', '');

آی دی بک اند اکانت ادمین برای اطلاع رسانی به ادمین قابل دریافت از ربات زیر - عددی هست
//telegram admin backEnd ID - get from @getmyid_bot
define('admin_telegram', '');






39120






مرحله ی پنجم

بعد از ذخیره کردن فایل کانفیگ نیاز هست id ***** مورد نظر که توی مرحله ی سوم ایجاد کردید رو هم پیدا کنید و داخل فایل کانفیگ بخش مربوطه ذخیره کنید - _Filter_ID_


خب برای اینکار فایل get_filters.php از طریق مرورگر لود کنید ( اجراش کنید )

اگر تمام موارد مورد نظر برای کلودفلر رو درست زده باشید باید یه همچین چیزی رو ببینید توی خروجی

39121


من 3 تا رول دارم . شما باید یکی باشه اگر قبلا ایجاد نکرده باشید . توی expression میتونید اون مقداری که زدید رو تشخیص بدید . همون filter رو باید آی دیش رو بردارید ( یک از خط قرمز ها ) . آی دی رو داخل فایل کانفیگ ذخیره کنید


مرحله ی پنجم

فایل cron_firewall.php داخل پوشه ی crons رو یک کران جاب براش ایجاد کنید هر دقیقه اجرا بشه


مرحله ی ششم و آخر

باید درخواست هارو ذخیره کنیم - در هدر سایت یا یه جایی که تمام درخواست های که میاد (url) رو ذخیره کنیم

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




$url = $_SERVER['REQUEST_URI'];
//escape

INSERT INTO `firewall_hits`(`url`) VALUES ('$url')


اگر وردپرس هست . داخل فایل header.php قالب اولش اضافه کنید


<?php
$current_url = $_SERVER['REQUEST_URI'];
$wpdb->insert('firewall_hits', array(
'url' => $current_url
));
?>




و اگر هیچکدام نیست که باید از خود سیستم کمک بگیرید - البته این باعث میشه یک کانکشن mysql اضافی ایجاد بشه روی سرور با هر درخواست برای همین توضیحش نمیدم








در کل شاید کار کار اشتباه باشی. یا کد نویسی ضعیف باشه یا هرچیزی که شما اساتید میفرمایید . شاید راه بهتری و کم دردسر تری باشه


ولی خب من با همین روش جواب گرفتم و مشکل حل شده برام . فوقش 1 دقیقه سایت میره زیر ddos


نکته ی آخر - شاید با پارامتر GET چندین url ایجاد بشه توسط حمله کننده که اگر کسی دید همچین چیزی رو بگه تا کد هارو بروز کنم ولی خب من ندیدم چیزی


امیدوارم به درد بخوره

بسیار عالی، تا حدودی میتونه جلوی اتکو بگیره
ماشالله انقدر عزیزان اتکر پر رو شدند جدیدا با آی پی اینترانت اتک میزنن

hoka
April 3rd, 2019, 11:39
بسیار عالی، تا حدودی میتونه جلوی اتکو بگیره
ماشالله انقدر عزیزان اتکر پر رو شدند جدیدا با آی پی اینترانت اتک میزنن

کلا اینقدر دوستان پیگیر هستن شاید هیچ راهی هم جواب نده همونطور که بزرگترین سایت ها که کلی امکانات سخت افزاری برای فایروال و آنتی دیداس دارن هم اتک میخورن و کند میشن

ولی خب برای این اتک های ضعیف همین راه ها کفایت میشه