nginx 防垃圾流量的perl清洗脚本

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脚本,增加一个白名单,减少误判的可能。

(0)

相关推荐

  • 真正防垃圾邮件的小技巧

    我的邮箱,大概收取三类内容。一方面是工作方面的一些往来,如工作安排和通知。一方面是一些私人信件,例如老同学、好友发来的问候。使用同一邮箱注册很多站点的帐户之后,部分服务商会被利益驱使,将邮件地址透露给 ...

  • 手机怎样设置防跑流量(如何控制手机流量偷跑)

    对于智能手机用户来说,Wi-Fi是手机上网必备.但在日常生活中,我们难免会碰到没有Wi-Fi的情况,这时候就不得不用流量了.但现在很多手机APP非常不老实,在使用数据连接时也疯狂跑流量,其中最典型的就 ...

  • 苹果手机如何防垃圾广告、垃圾短信?

    相信有很多人买苹果时都是看中了iOS系统的封闭性,可以有效地保障用户的安全.但是后来很多苹果用户都有一个共同的难言之隐,那就是每天都要收到一些垃圾广告以及垃圾短信.还好随着iOS11系统的推送,这个问 ...

  • 手机怎样设置防跑流量(手机偷跑流量怎么回事)

    曾几何时,智能手机刚开始兴起的时候,我们用着2G,3G的流量,一个月包上个30G的流量都绰绰有余,用都用不掉,最后快到月底清零的时候,在那拼命的用,想把它用完,不能浪费.在当时已经拥有60G,流量已经 ...

  • nginx 全局变量及防DDOS攻击的简单配置

    经常需要配置Nginx ,其中有许多以 $ 开头的变量,经常需要查阅nginx 所支持的变量。 可能是对 Ngixn资源不熟悉,干脆就直接读源码,分析出支持的变量。 Nginx支持的http变量实现在 ...

  • 配置Sendmail服务器以防治垃圾邮件

    本文介绍了一些在Linux中广泛使用的防垃圾邮件技术,同时也介绍了通过配置邮件传送代理服务器Sendmail来抑制垃圾邮件的具体方法。 随着Internet的发展,电子邮件作为 一种通信方式逐渐普及。 ...

  • 手机流量监控软件哪个好? 安卓手机流量监控软件哪个好?

    手机流量监控软件哪个好用?下文将为大家推荐一些好用的安卓手机流量监控软件,好用的流量监控软件可以帮助我们发现流量老虎,并且可以帮助我们管理流量,很方便哦~ --马头流量 马头流量是国内最好的手机流量管 ...

  • 选择反垃圾邮件产品应考虑几个方面

    我们都知道,在网络安全中,垃圾邮件问题是非常普遍的问题。那么对于一个企业来说,垃圾邮件的干扰总是令人烦恼。那么我们在选择一件反垃圾邮件产品的时候,应该注意一些什么呢?垃圾邮件产品的面世在一定程度上解决 ...

  • 阿里旺旺如何阻止垃圾信息

    第一步:输入淘宝会员名和密码进入淘宝旺旺(相信这个都会不必我说了).! 第二步:单击"菜单 " 第三步:单击"系统设置” 第四步:选择“防垃圾消息”选项 第五步:单击“添加”按扭分别输入关键字,比如我 ...