欢迎登陆真网站,您的到来是我们的荣幸。 登陆 注册 忘记密码? ☆设为首页 △加入收藏
欢迎加入真幸福QQ群
电脑知识: 基础知识 网络技术 操作系统 办公软件 电脑维修 电脑安全 windows7 windows8 windows10 服务器教程 平板电脑 视频播放教程 网络应用 互联网 工具软件 浏览器教程 QQ技巧 输入法教程 影视制作 YY教程 wps教程 word教程 Excel教程 PowerPoint
云南西双版纳特产小花糯玉米真空包装


VPS管理面板:ZPanelX介绍及安装教程
远程修改Linux系统VPS服务器Root用户密码教程
win7系统开机无法完成自检应该怎么处理
操作系统移植是什么
win7旗舰版桌面的图标无法移动要怎么解决
win7异常关机的原因和解决方案
爱微帮怎么自定义聊天背景
win7系统卸载软件是哪些原因所导致的
用shell命令解决XAMPP数据库导入文件限制
linux下安装apache详解
nginx 防垃圾流量的perl清洗脚本
【 来源:网络 】【 点击:1 】 【 发布时间:2017_03_03 08:59:59 】

  1、根据nginx的访问日志,根据匹配规则查出来源域名,按照来源域名的在一定时间内的访问量来确定屏蔽对象

  将下面的脚本放入到系统定时任务中,定时(2-5分钟,可根据具体情况做相应调整)执行。

  确定一个判断不正常的流量的数量,凡是大于该数量的来源一律清洗。

  当然这里有可能会有误判,所以在后面将正常的来源地址过滤掉。

  cat purge_traffic.sh

  #!/bin/bash

  if [ -f /var/log/nginx/www-access.log ]; then

  tail -10000 /var/log/nginx/www-access.log | grep -E 'cps_site|tracert.php?source' | awk -F'"' '{if ($4 ~ /http:/){print $4}}' | awk -F '/' '{print $3}' | grep -v -E '.xxx.cn|.baidu.com|google.com' | sort | uniq -c | sort -nr | head -60 > /tmp/cps_site.log

  cat /tmp/cps_site.log | awk '{if( $1 > 100 ){print $2}}' > /tmp/purge_cps.log

  fi

  2、nginx中调用的perl脚本,当请求进来时,通过下面的脚本判断Referer地址是否来自上面生成的需要清理的域名。

  perl判断脚本,当发现来源地址匹配时返回1

  cat purgetraffic.pm

  package purgeTraffic;

  use nginx;

  sub purge {

  my $r = shift;

  my $ua = $r->header_in("Referer");

  if(! $ua ) { return 0; }

  open(FILES, "/tmp/purge_cps.log") || return 0;

  @cps_file=;

  close(FILES);

  foreach (@cps_file) {

  my $eachcps = $_;

  chomp $eachcps;

  #$r->print($eachcps .'| ');

  if ( $ua =~ m/$eachcps/ ) {

  #return HTTP_NOT_ALLOWED;

  return 1;

  }

  }

  return 0;

  }

  1;

  __END__

  3、nginx.conf 中调用perl脚本,符合清洗规则的来源直接返回 404,

  http {

  ...

  perl_modules /etc/nginx;

  perl_require purgetraffic.pm;

  ...

  perl_set $purge purgeTraffic::purge;

  server {

  server_name www.xxx.cn;

  if ($purge = 1) { return 404; } #屏蔽垃圾流量

  ...

  }

  }

  重新加载nginx,完成自动流量清洗

  还可以稍微修改一下perl脚本,增加一个白名单,减少误判的可能。

本网站由川南居提供技术支持,fkzxf版权所有 浙ICP备12031891号
淳安分站 淳安分站