نمایش نتایج: از شماره 1 تا 9 , از مجموع 9

موضوع: █ اسکریپت PHP مهار کننده حملات دیداس - PHP DDoS Protection

  1. #1
    عضو انجمن yastheme آواتار ها
    تاریخ عضویت
    Oct 2010
    محل سکونت
    Izadshahr
    نوشته ها
    482
    تشکر تشکر کرده 
    434
    تشکر تشکر شده 
    1,565
    تشکر شده در
    691 پست

    پیش فرض █ اسکریپت PHP مهار کننده حملات دیداس - PHP DDoS Protection

    با سلام،
    اسکریپت زیر یک اسکریپت ساده جهت بلاک کردن آی پی ها بر اساس تعداد رکوئست ها بر ثانیه در PHP می باشد که قابلیت اضافه کردن به پروژه ها و پلاگین ها و CMS ها را دارد.
    فقط نکته مهم اینکه این اسکریپت قرار نیست تمامی حملات DDoS را مهار کند و معجزه کند!
    این اسکریپت زمانی کارآیی دارد که حملات لایه 7 با پروتکل http بر روی یک سایت در حال انجام باشد و حملات با تعداد آی پی های محدود باعث کندی سایت شده باشند و احتمالا اگر حمله نسبت به سخت افزار و منابع سرور، فدرتمند محسوب شود ممکن است قبل از اینکه این اسکریپت بخواهد کار خودش را بکند وب سرور با مشکل مواجه شود و سایت از دسترس خارج شود.
    این توضیح از آن جهت بود که برخی دوستان ممکن است به صورت اشتباه منظور بنده را متوجه شوند و اگر نه برای حملات لایه 7 باید از سمت وب سرور و حتی قبل از آن حملات شناسایی و مهار شوند.



    مقدار $r رکوئست های یک آی پی و متغیر $ps زمان بر حسب ثانیه است.
    فرض اگر بخواهید که آی پی هایی که در طول 4 ثانیه اگر بیشتر از 8 رکوئست ارسال کرده اند را بلاک کنید باید مثل زیر باشد:
    کد PHP:
    $r=8
    $ps
    =
    دریافت کد کامل اسکریپت :

    کد PHP:
    <?php
    //M@soud Binaei
    //Central-hosting.com
    //**********
    $r=5;
    $ps=5;
    //**********
    session_start();


    if (!empty(
    $_SERVER['HTTP_CLIENT_IP'])) {
        
    $ip $_SERVER['HTTP_CLIENT_IP'];
    } elseif (!empty(
    $_SERVER['HTTP_X_FORWARDED_FOR'])) {
        
    $ip $_SERVER['HTTP_X_FORWARDED_FOR'];
    } else {
        
    $ip $_SERVER['REMOTE_ADDR'];
    }
    $ips=file('ip.txt');
    foreach(
    $ips as $ipbad)
    {
      if(
    trim($ipbad) == $ip){
      
    header('HTTP/1.0 403 Forbidden');
      echo
    'Blocked';
      exit();
       }
    }

    if (isset(
    $_SESSION['LAST_ACTIVITY']) && (time() - $_SESSION['LAST_ACTIVITY'] > $ps)) {
        
    session_unset();
        
    session_destroy();
        
    $_SESSION['rec']   = 1;
    }


    if(!isset(
    $_SESSION['rec']) || $_SESSION['rec']==0){
    $_SESSION['rec']   = 1;
    $_SESSION['LAST_ACTIVITY'] = time();
    }else{
    $_SESSION['rec']++;
    }
    if(
    $_SESSION['rec']>=$r){
    $file 'ip.txt';
    $current file_get_contents($file);
    $current .= $ip."\n";
    file_put_contents($file$current);
    }

    ?>
    نکته: یک فایل با نام ip.txt بسازید و سطح دسترسی آن را 777 قرار دهید. بلک لیست آی پی ها در این فایل ذخیره می شوند.

    تشکر فراموش نشود

    سنترال هاستینگ - اولین سرویس دهنده DDoS Protected ایرانی!
    █ شرکت ایمن میزبان راهبر کاسپین (شماره ثبت : 1799 شناسه ملی: 14006354907 )


  2. تعداد تشکر ها ازyastheme به دلیل پست مفید


  3. # ADS




     

  4. #2
    عضو انجمن tikweb.ir آواتار ها
    تاریخ عضویت
    Feb 2014
    محل سکونت
    Safe mode
    نوشته ها
    579
    تشکر تشکر کرده 
    358
    تشکر تشکر شده 
    1,045
    تشکر شده در
    663 پست

    پیش فرض پاسخ : █ اسکریپت PHP مهار کننده حملات دیداس - PHP DDoS Protection

    پس همونطور که مشخصه میاد هربار چک میکنه اگر ایپی بازدید کننده داخل
    ip.txt بود ارور 403 بهش میده
    چطور میشه اسکریپت رو جوری داخل سایت قرار داد که در هر صفحه این مورد چک نشه و یک چیزی شبیه کوکی ذخیره بشه

    چون اگر بازدید سایت زیاد باشه و در هر صفحه چک بشه به احتمال زیاد سایت رو دچار کندی میکنه
    :: گروه فناوری اطلاعات تیک وب | ارائه انواع خدمات وب هاستینگ و کانفیگ سرور و cms | طراحی انواع وب سایت
    :: دارنده نماد اعتماد دائم از وزارت صنعت ، معدن و تجارت

  5. #3
    عضو انجمن yastheme آواتار ها
    تاریخ عضویت
    Oct 2010
    محل سکونت
    Izadshahr
    نوشته ها
    482
    تشکر تشکر کرده 
    434
    تشکر تشکر شده 
    1,565
    تشکر شده در
    691 پست

    پیش فرض پاسخ : █ اسکریپت PHP مهار کننده حملات دیداس - PHP DDoS Protection

    نقل قول نوشته اصلی توسط tikweb.ir نمایش پست ها
    پس همونطور که مشخصه میاد هربار چک میکنه اگر ایپی بازدید کننده داخل
    ip.txt بود ارور 403 بهش میده
    چطور میشه اسکریپت رو جوری داخل سایت قرار داد که در هر صفحه این مورد چک نشه و یک چیزی شبیه کوکی ذخیره بشه

    چون اگر بازدید سایت زیاد باشه و در هر صفحه چک بشه به احتمال زیاد سایت رو دچار کندی میکنه
    یکی از دلایلی که از فایل TXT به جای مثلا دیتابیس استفاده شده سرعت خواندن و نوشتن بالای اون هست،
    این مورد تاثیر بسیار بسیار کمی در پردازش php دارد البته تا زمانی که فایل ip.txt سبک باشد و اگر تعداد آی پی ها مثلا به چند هزار تا برسه طبیعتا کمی توی سرعت خودشو نشون میده که این هم باز به هارد یا منابع سرور بستگی داره. که بهتره یکبار آی پی های بلاک شده توی این فایل توسط CSF یا htaccess بلاک بشه و بعد فایل ip.txt خالی بشه
    ویرایش توسط yastheme : April 8th, 2017 در ساعت 15:53

    سنترال هاستینگ - اولین سرویس دهنده DDoS Protected ایرانی!
    █ شرکت ایمن میزبان راهبر کاسپین (شماره ثبت : 1799 شناسه ملی: 14006354907 )


  6. #4
    عضو انجمن us12 آواتار ها
    تاریخ عضویت
    Jul 2012
    نوشته ها
    244
    تشکر تشکر کرده 
    75
    تشکر تشکر شده 
    284
    تشکر شده در
    198 پست

    پیش فرض پاسخ : █ اسکریپت PHP مهار کننده حملات دیداس - PHP DDoS Protection

    قرار نیست که اتکر هر بار با یک sessionID ثابت صفحه را لود کند که توسط این اسکریپت بتوان شناسایی اش کرد ...

    کد:
    if (isset($_SESSION['LAST_ACTIVITY']) && (time() - $_SESSION['LAST_ACTIVITY'] > $ps)) {
    اتکر هر بار یک sessionID جدید داخل هدر به سایت ارسال میکنه ، یعنی عملا همیشه مقدار $_SESSION['LAST_ACTIVITY'] برابر با time() و مقدار $_SESSION['rec'] برابر با1 است...
    برنامه نویسی => www.SOFTIRAN.org
    ----------------------------------------------------------

  7. تعداد تشکر ها ازus12 به دلیل پست مفید


  8. #5
    عضو انجمن yastheme آواتار ها
    تاریخ عضویت
    Oct 2010
    محل سکونت
    Izadshahr
    نوشته ها
    482
    تشکر تشکر کرده 
    434
    تشکر تشکر شده 
    1,565
    تشکر شده در
    691 پست

    پیش فرض پاسخ : █ اسکریپت PHP مهار کننده حملات دیداس - PHP DDoS Protection

    نقل قول نوشته اصلی توسط us12 نمایش پست ها
    قرار نیست که اتکر هر بار با یک sessionID ثابت صفحه را لود کند که توسط این اسکریپت بتوان شناسایی اش کرد ...

    کد:
    if (isset($_SESSION['LAST_ACTIVITY']) && (time() - $_SESSION['LAST_ACTIVITY'] > $ps)) {
    اتکر هر بار یک sessionID جدید داخل هدر به سایت ارسال میکنه ، یعنی عملا همیشه مقدار $_SESSION['LAST_ACTIVITY'] برابر با time() و مقدار $_SESSION['rec'] برابر با1 است...
    بله دقیقا، این مورد در حملات DDoS رایج است اما در برخی از حملات که معمولا کلودفلر یا سرویس های دیگر را بایپس می کنند و از آن عبور می کنند و به سرور هاستینگ میرسند به این دلیل است که کوکی توسط همه بات های یک بات نت پذیرفته می شود و هر رکوئست یک سشن جدید نیست، حتی دستورات جاوا نیز پردازش می شوند،
    البته همانطور که گفتم این یک کد ساده است و می توان امکان تست پذیرفتن کوکی و رفرش صفحه با جاوا جهت تست صحت مرورگر توسط یک برنامه نویس اضافه شود،(مثل Page wait کلودفلر یا سرویس کلود پروتکشن ما) شاید طی روز های آینده در اولین فرصت به آن اضافه کنم.
    در هر صورت همانطور که گفتم این کد قرار نیست همه حملات را پشتیبانی کند.
    ویرایش توسط yastheme : April 8th, 2017 در ساعت 21:27

    سنترال هاستینگ - اولین سرویس دهنده DDoS Protected ایرانی!
    █ شرکت ایمن میزبان راهبر کاسپین (شماره ثبت : 1799 شناسه ملی: 14006354907 )


  9. #6
    عضو انجمن
    تاریخ عضویت
    Dec 2012
    نوشته ها
    295
    تشکر تشکر کرده 
    39
    تشکر تشکر شده 
    324
    تشکر شده در
    237 پست

    پیش فرض پاسخ : █ اسکریپت PHP مهار کننده حملات دیداس - PHP DDoS Protection

    سلام

    خودتون چه مقداری روی برای دو متغییر زیر پیشنهاد میدید ؟

    $r=8
    $ps
    =4

  10. #7
    عضو انجمن yastheme آواتار ها
    تاریخ عضویت
    Oct 2010
    محل سکونت
    Izadshahr
    نوشته ها
    482
    تشکر تشکر کرده 
    434
    تشکر تشکر شده 
    1,565
    تشکر شده در
    691 پست

    پیش فرض پاسخ : █ اسکریپت PHP مهار کننده حملات دیداس - PHP DDoS Protection

    نقل قول نوشته اصلی توسط lnspiron نمایش پست ها
    سلام

    خودتون چه مقداری روی برای دو متغییر زیر پیشنهاد میدید ؟

    $r=8
    $ps
    =4
    این مقدار بستگی به نیاز خودتون تعیین میشود،
    همین اعداد8 و 4 خوب است.

    سنترال هاستینگ - اولین سرویس دهنده DDoS Protected ایرانی!
    █ شرکت ایمن میزبان راهبر کاسپین (شماره ثبت : 1799 شناسه ملی: 14006354907 )


  11. #8
    عضو انجمن hegza آواتار ها
    تاریخ عضویت
    Jun 2015
    محل سکونت
    +48
    نوشته ها
    634
    تشکر تشکر کرده 
    1,391
    تشکر تشکر شده 
    1,140
    تشکر شده در
    739 پست

    پیش فرض پاسخ : █ اسکریپت PHP مهار کننده حملات دیداس - PHP DDoS Protection

    نقل قول نوشته اصلی توسط yastheme نمایش پست ها
    یکی از دلایلی که از فایل TXT به جای مثلا دیتابیس استفاده شده سرعت خواندن و نوشتن بالای اون هست،
    این مورد تاثیر بسیار بسیار کمی در پردازش php دارد البته تا زمانی که فایل ip.txt سبک باشد و اگر تعداد آی پی ها مثلا به چند هزار تا برسه طبیعتا کمی توی سرعت خودشو نشون میده که این هم باز به هارد یا منابع سرور بستگی داره. که بهتره یکبار آی پی های بلاک شده توی این فایل توسط CSF یا htaccess بلاک بشه و بعد فایل ip.txt خالی بشه
    درود بر شما
    و تشکر بابت این کد!
    فکر نمیکنید اگر اطلاعات رو در یک تیبل دیتا بیس ذخیره بکنیم و با کرون تعریف کنیم مثلا هر ساعت ردیف های 24 ساعت به قبل رو خالی کن هم کار راحت تر میشه هم نیاز به اضافه کاری برای مدیر سایت نیست؟

    پ.ن:
    وقتی تعداد ردیف های یک فایل زیاد باشند سیستم سرچ php خیلی خیلی ضعیف تر از کوئری های مرسوم پایگاه داده عمل میکنه و به نوعی با اینکار سرعت لود سایت رو دارید به حداقل میرسونیم
    و نیاز نیست تمپ رو درگیر سشن کنیم کافیه آی پی و تایم رو در حلقه کنترلی بررسی کنیم

    - - - Updated - - -

    ضمنا بهتره سشن رو قبل از تعرف متغییرها استارت کنیم
    موفق باشید
    پروردگارا مرا فهم ده:: تا متوقع نباشم. دنیا و مردمانش باید مطابق میل من رفتار کنند.

  12. #9
    عضو انجمن yastheme آواتار ها
    تاریخ عضویت
    Oct 2010
    محل سکونت
    Izadshahr
    نوشته ها
    482
    تشکر تشکر کرده 
    434
    تشکر تشکر شده 
    1,565
    تشکر شده در
    691 پست

    پیش فرض پاسخ : █ اسکریپت PHP مهار کننده حملات دیداس - PHP DDoS Protection

    نقل قول نوشته اصلی توسط hegza نمایش پست ها
    درود بر شما
    و تشکر بابت این کد!
    فکر نمیکنید اگر اطلاعات رو در یک تیبل دیتا بیس ذخیره بکنیم و با کرون تعریف کنیم مثلا هر ساعت ردیف های 24 ساعت به قبل رو خالی کن هم کار راحت تر میشه هم نیاز به اضافه کاری برای مدیر سایت نیست؟

    پ.ن:
    وقتی تعداد ردیف های یک فایل زیاد باشند سیستم سرچ php خیلی خیلی ضعیف تر از کوئری های مرسوم پایگاه داده عمل میکنه و به نوعی با اینکار سرعت لود سایت رو دارید به حداقل میرسونیم
    و نیاز نیست تمپ رو درگیر سشن کنیم کافیه آی پی و تایم رو در حلقه کنترلی بررسی کنیم

    - - - updated - - -

    ضمنا بهتره سشن رو قبل از تعرف متغییرها استارت کنیم
    موفق باشید
    البته این کد ها یک نمونه سمپل هست و کامل نیست، اما متاسفانه دیتابیس گزینه درستی نیست، سعی شده منابع کمتری مصرف شود، البته کران جاب بر روی فایل متنی هم قابل نوشتن و اجرا است ولی استفاده از دیتا بیس باعث افزایش چندین برابری منابع می شود.

    البته باز هم تایید می کنم برای جلوگیری از حملات اصلا php توصیه نمیشود، باید از طریق فایروال و رول های وب سرور استفاده شود، این کد هم بدون نقص نیست. اما یک سمپل و الگو برای حملاتی است که معمولا از فایروال های کلودفلر عبور می کنند
    ویرایش توسط yastheme : April 18th, 2017 در ساعت 21:06

    سنترال هاستینگ - اولین سرویس دهنده DDoS Protected ایرانی!
    █ شرکت ایمن میزبان راهبر کاسپین (شماره ثبت : 1799 شناسه ملی: 14006354907 )


  13. تعداد تشکر ها از yastheme به دلیل پست مفید


اطلاعات موضوع

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

در حال حاضر 1 کاربر در حال مشاهده این موضوع است. (0 کاربران و 1 مهمان ها)

موضوعات مشابه

  1. DDOS Protection
    توسط viasky در انجمن Proxy / Cache / Firewall
    پاسخ ها: 25
    آخرين نوشته: January 7th, 2020, 22:49
  2. بهترین شرکت ارائه دهنده خدمات DDoS Protection چیست ؟
    توسط serverstar.ir در انجمن سوالات و مشکلات
    پاسخ ها: 18
    آخرين نوشته: December 31st, 2015, 13:42
  3. فروش هاستینگ های DDOS Protection
    توسط yastheme در انجمن فروش هاست اشتراکی
    پاسخ ها: 14
    آخرين نوشته: December 2nd, 2013, 12:32
  4. پاسخ ها: 9
    آخرين نوشته: April 12th, 2013, 17:30
  5. VPS - DDOS Protection
    توسط Ardeshir-S در انجمن درخواست سرور مجازی
    پاسخ ها: 1
    آخرين نوشته: April 5th, 2013, 15:43

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •