[PHP] AntiDoS


SUBMITTED BY: eddysix

DATE: March 13, 2017, 8:07 a.m.

FORMAT: PHP

SIZE: 4.4 kB

HITS: 488

  1. <?php
  2. */
  3. $debug = false; // debug mode, disabled ban
  4. if ($debug) error_reporting(E_ALL);
  5. else error_reporting(0);
  6. /* Possible values - $ddos 1-5:
  7. | 1. Check with cookies
  8. | 2. Double check $_GET antiddos-a i meta refresh-a
  9. | 3. Request for WWW-Authenticate
  10. | 4. Disable all, but BOT's can not disable..
  11. | 5. Turn off site if it is big BUG.
  12. */
  13. $ddos = 1;
  14. $log = false;
  15. $dir = dirname(__file__) . '/cyki_bots/'; //DDOS l
  16. $ddos_redirect_host = 'http://google.com/'; // Forwarding DDOS-a
  17. $icq = '123456'; //Admins ICQ
  18. $off_message = 'BUG.';
  19. $anticyka = md5(sha1('botik' . strrev(getenv('HTTP_USER_AGENT'))));
  20. $ban_message = 'You have been banned, try to contact administrator admin@hackcomunity.com' .
  21. $icq . '<hr>(c)XakNet antiddos module'; // Ban msg
  22. $exec_ban = "iptables -A INPUT -s " . $_SERVER["REMOTE_ADDR"] . " -j DROP"; // ban/block IP with iptables (Debian/ubuntu/etc)
  23. $load = sys_getloadavg();
  24. $ddosuser = 'lol_ddos';
  25. $ddospass = substr(ip2long($_SERVER['REMOTE_ADDR']), 0, rand(2, 4));
  26. //Check:
  27. $google = strpos(gethostbyaddr($_SERVER['REMOTE_ADDR']), "googlebot.com") !== false;
  28. $yandex = strpos(gethostbyaddr($_SERVER['REMOTE_ADDR']), "yandex.ru") !== false;
  29. $rambler = strpos(gethostbyaddr($_SERVER['REMOTE_ADDR']), "ramtel.ru") !== false;
  30. $rambler2 = strpos(gethostbyaddr($_SERVER['REMOTE_ADDR']), "rambler.ru") !== false;
  31. $aport = strpos(gethostbyaddr($_SERVER['REMOTE_ADDR']), "aport.ru") !== false;
  32. $sape = strpos(gethostbyaddr($_SERVER['REMOTE_ADDR']), "sape.ru") !== false;
  33. $msn = strpos(gethostbyaddr($_SERVER['REMOTE_ADDR']), "msn.com") !== false;
  34. $yahoo = strpos(gethostbyaddr($_SERVER['REMOTE_ADDR']), "yahoo.net") !== false;
  35. //
  36. if(!file_exists($dir . 'banned_ips')) file_put_contents($dir . 'banned_ips', '');
  37. if (strstr(file_get_contents($dir . 'banned_ips'), $_SERVER['REMOTE_ADDR']))
  38. die($ban_message); //GTFO )
  39. if (! $google || ! $yandex || ! $rambler || ! $rambler2 || ! $aport || ! $sape ||
  40. ! $msn || ! $yahoo) {
  41. $f = fopen($dir . $_SERVER["REMOTE_ADDR"], "a");
  42. fwrite($f, "zapros cyka\n");
  43. fclose($f);
  44. function ban()
  45. {
  46. if (! system($exec_ban)) {
  47. $f = fopen($dir . 'banned_ips', "a");
  48. fwrite($f, $_SERVER['REMOTE_ADDR'] . '|');
  49. fclose($f);
  50. }
  51. echo $ban_message;
  52. header('Location: ' . $ddos_redirect_host . '');
  53. die();
  54. }
  55. switch ($ddos) {
  56. ///////////////////////////
  57. case 1:
  58. if (empty($_COOKIE['ddos']) or ! $_COOKIE['ddos']) {
  59. $counter = @file($dir . $_SERVER["REMOTE_ADDR"]);
  60. setcookie('ddos', $anticyka, time() + 3600 * 24 * 7 * 356);
  61. if (count($counter) > 10) {
  62. if (! $debug) ban();
  63. else die("Blocked");
  64. }
  65. if (! $_COOKIE['ddos_log'] == 'bil') {
  66. if (! $_GET['antiddos'] == 1) {
  67. setcookie('ddos_log', 'bil', time() + 3600 * 24 * 7 * 356);
  68. header("Location: ./?antiddos=1");
  69. }
  70. }
  71. } elseif ($_COOKIE['ddos'] !== $anticyka) {
  72. if (! $debug) ban();
  73. else die("Blocked.");
  74. }
  75. break;
  76. /////////////////////////
  77. case 2:
  78. if (empty($_COOKIE['ddos'])) {
  79. if (empty($_GET['antiddos'])) {
  80. if (! $_COOKIE['ddos_log'] == 'bil')
  81. //Checking cookies for request
  82. die('<meta http-equiv="refresh" content="0;URL=?antiddos=' . $anticyka . '" />');
  83. } elseif ($_GET['antiddos'] == $anticyka) {
  84. setcookie('ddos', $anticyka, time() + 3600 * 24 * 7 * 356);
  85. setcookie('ddos_log', 'bil', time() + 3600 * 24 * 7 * 356);
  86. }
  87. else {
  88. if (! $debug) {
  89. ban();
  90. die("Forward line of address");
  91. }
  92. else {
  93. echo "Forward line of address";
  94. die("Blocked.");
  95. }
  96. }
  97. }
  98. break;
  99. case 3:
  100. if (! isset($_SERVER['PHP_AUTH_USER']) || $_SERVER['PHP_AUTH_USER'] !== $ddosuser ||
  101. $_SERVER['PHP_AUTH_PW'] !== $ddospass) {
  102. header('WWW-Authenticate: Basic realm="Vvedite parol\': ' . $ddospass .
  103. ' | Login: ' . $ddosuser . '"');
  104. header('HTTP/1.0 401 Unauthorized');
  105. if (! $debug) ban();
  106. else die("Blocked");
  107. die("<h1>401 Unauthorized</h1>");
  108. }
  109. break;
  110. case 4:
  111. die($off_message); //Site turned off
  112. break;
  113. case 5:
  114. if ($load[0] > 80) {
  115. header('HTTP/1.1 503 Too busy, try again later');
  116. die('<center><h1>503 Server too busy.</h1></center><hr><small><i>Server too busy. Please try again later. Apache server on ' .
  117. $_SERVER['HTTP_HOST'] .
  118. ' at port 80 with <a href="http://serbiancyberteam.com/">ddos protect</a></i></small>');
  119. }
  120. break;
  121. default:
  122. break;
  123. //////////////////////////
  124. }
  125. if ($_COOKIE['ddos'] == $anticyka) @unlink($dir . $_SERVER["REMOTE_ADDR"]);
  126. }
  127. ?>

comments powered by Disqus