#!/bin/sh
#防刷脚本 #env
ACCESS_PATH=/home/wwwlogs
ACCESS_LOG=y.log
IPTABLES_TOP_LOG=iptables_top.log
DROP_LOG=droplist.log
HISTORY_LOG=history.log
#ip白名单
noip=`cat noip.list`
#防刷阈值
limitnum=500
#统计请求日志
while true
do
awk '{print$1}' ${ACCESS_PATH}/${ACCESS_LOG} \
| egrep -vi "${noip}" \
| sort \
| uniq -c \
| sort -rn \
| head -20 \
>${ACCESS_PATH}/${IPTABLES_TOP_LOG} #判断是否达到阈值
exec<${ACCESS_PATH}/${IPTABLES_TOP_LOG}
while read line
do
count=$(echo $line | awk '{print$1}')
ip=$(echo $line |awk '{print$2}')
[ "$count" -gt "$limitnum" ] && {
iptables -I INPUT -s $ip -j DROP;
echo -e " $line is dropped\c">>${ACCESS_PATH}/${DROP_LOG}
}
done
#发送告警
sendnum=`cat ${ACCESS_PATH}/${DROP_LOG}|wc -L`
[ "$sendnum" -gt "0" ] && {
content="报警:$(hostname) $(date +%X) $(cat ${ACCESS_PATH}/${DROP_LOG}) \
以上IP访问次数频繁,单IP 1分钟超过阈值${limitnum}请注意查看"
python /server/scripts/iptables/sms.py 15900009999 "${content}"
cat ${ACCESS_PATH}/droplist.log >>${ACCESS_PATH}/${HISTORY_LOG}
>${ACCESS_PATH}/${DROP_LOG}|
}
#清除1分钟内数据,准备下一次新数据 >${ACCESS_PATH}/${IPTABLES_TOP_LOG}
sleep 60
done
#!/bin/sh
#防刷脚本 #env
ACCESS_PATH=/home/wwwlogs
ACCESS_LOG=y.log
IPTABLES_TOP_LOG=iptables_top.log
DROP_LOG=droplist.log
#防刷阈值
limitnum=500
#统计请求日志
while true
do
awk '{print$1}' ${ACCESS_PATH}/${ACCESS_LOG} \
| sort \
| uniq -c \
| sort -rn \
| head -20 \
>${ACCESS_PATH}/${IPTABLES_TOP_LOG} #判断是否达到阈值
exec<${ACCESS_PATH}/${IPTABLES_TOP_LOG}
while read line
do
count=$(echo $line | awk '{print$1}')
ip=$(echo $line |awk '{print$2}')
[ "$count" -gt "$limitnum" ] && {
iptables -I INPUT -s $ip -j DROP;
echo -e " $line is dropped\c">>${ACCESS_PATH}/${DROP_LOG}
}
done #清除1分钟内数据,准备下一次新数据 >${ACCESS_PATH}/${IPTABLES_TOP_LOG}
sleep 60
done

ip防刷脚本的更多相关文章

  1. 一个简单IP防刷工具类, x秒内最多允许y次单ip操作

    IP防刷,也就是在短时间内有大量相同ip的请求,可能是恶意的,也可能是超出业务范围的.总之,我们需要杜绝短时间内大量请求的问题,怎么处理? 其实这个问题,真的是太常见和太简单了,但是真正来做的时候,可 ...

  2. Linux 针对nginx日志文件做ip防刷限制

    针对nginx日志做ip访问限制 1.cat /var/log/server/nginx/access.log| awk -F '?' '/optionid/{print $1}'|awk '{pri ...

  3. php获取用户真实IP和防刷机制

      一. 如何获取用户IP地址 public static function getClientIp() { if (getenv('HTTP_CLIENT_IP')) { $ip = getenv( ...

  4. spring boot 对某个接口进行次数限制,防刷。简易版。demo。

    一般的项目 如果没有做防刷 容易被人爆接口 或者就是说没有做token防刷过滤. 容易被人用正常的token刷接口.有些token非一次性. 用户登录之后生成token会有一个过期时间,但一般没有做频 ...

  5. 使用Redis+自定义注解实现接口防刷

    最近开发了一个功能,需要发送短信验证码鉴权,考虑到短信服务需要收费,因此对此接口做了防刷处理,实现方式主要是Redis+自定义注解(需要导入Redis的相关依赖,完成Redis的相关配置,gs代码,这 ...

  6. 通过Redis、Memcache的 incr 原子操作防刷机制的使用差别

    我的版本如下: Redis:3.2.100 Memcache:1.4.4 最近在处理服务器压力测试的时候,想到一个方案,在一定时间段内限制用户访问次数.具体的实现就是通过redis的院子操作incre ...

  7. Spring Boot项目的接口防刷

    说明:使用了注解的方式进行对接口防刷的功能,非常高大上,本文章仅供参考 一,技术要点:springboot的基本知识,redis基本操作, 首先是写一个注解类: import java.lang.an ...

  8. 批量IP自动netcat脚本

    批量IP自动netcat脚本nc.sh 在同一目录新建一个名为ncip的文件,并以每行一个IP的方式罗列.使用sh命令执行nc.sh.此例中是测试22端口访问情况. #!/bin/bash IP_LI ...

  9. 批量IP自动ping脚本

    批量IP自动ping脚本ping.sh 在同一目录新建一个名为pingip的文件,并以每行一个IP的方式罗列.使用sh命令执行ping.sh #!/bin/bash IP_LIST=`cat ping ...

随机推荐

  1. 【转】IntelliJ IDEA 创建 hello world Java web Maven项目

    学Java的大部分吧都是要整Java web开发项目的,那么最好用的编辑器估计就是这个 IntelliJ IDEA,然后现在maven管理项目是很流行的.然后我就示范一下,如何使用这个IntelliJ ...

  2. 高通 添加 cmdline

    最近需要设置一个只读的属性值,采用的方法是在cmdline中添加,然后在init进程中解读. 记录一下代码跟踪过程. lk/app/aboot/aboot.c static const char *u ...

  3. C# 无法在发送 HTTP 标头之后进行重定向

    在调试中发现错误如下: Response.Redirect引起的“无法在发送HTTP标头之后进行重定向” 跳转失败 解决方案如下: 使用js方法来跳转地址 const string url=" ...

  4. Activiti5小试牛刀demo流程

    demo流程目标:刚接触Activiti5,先大致了解下Activiti5的架构,熟悉下开发流程 搭建开发环境 首先给MyEclipse安装Activiti Designer插件,下载网址http:/ ...

  5. JS性能细节学习初步总结

    1,声明变量要赋初值2,尽量避免声明全局变量,可以减少与系统的重名3,当编写大量js代码时,难免会遇到命名冲突,这是可以通过模拟命名空间方式     来避免冲突4,尽量避免使用全局变量,搜索全局变量是 ...

  6. windows使用技巧和工具(后面可能更新linux)

    *:希望广大网友有什么建议或者好的用法工具.也能够在以下评论. 希望这是一个能够让我们更好工作起来的帖子. 工作也能舒适和开心呢. 想着好久没写过博客了吧.今天就写一篇关于windows的使用的吧.我 ...

  7. Thinkphp5笔记五:配置data文件夹

    如果你看项目下的各种文件,有种乱七八糟的感觉的话,你就可以进行以下配置. 配置data文件夹的,整理各种文件,让看起来舒服些. 一.设置runtime文件夹 index.php define('RUN ...

  8. Node.js+Express on IIS(续)

    前一篇文章介绍了如何用iis来伺服node网站(开发期间特别有用),结果还落掉一点,我们用node来做restful服务的时候,很多时候可能要响应500系列的状态码,并不是整个系统从头到尾都是200, ...

  9. ZooKeeper学习之-Zookeeper简单介绍(一)

    一.分布式协调技术 在给大家介绍ZooKeeper之前先来给大家介绍一种技术——分布式协调技术.那么什么是分布式协调技术?那么我来告诉大家,其实分布式协调技术主要用来解决分布式环境当中多个进程之间的同 ...

  10. 最新Java校招面试题及答案

    本文作者在一年之内参加过多场面试,应聘岗位均为 Java 开发方向.在不断的面试中,分类总结了 Java 开发岗位面试中的一些知识点. 主要包括以下几个部分: Java 基础知识点 Java 常见集合 ...