首页 > 系统相关 >【Shell脚本】根据web访问日志,封禁请求量异常的IP,如IP在半小时后恢复正常,则解除封禁

【Shell脚本】根据web访问日志,封禁请求量异常的IP,如IP在半小时后恢复正常,则解除封禁

时间:2024-08-28 12:52:46浏览次数:9  
标签:封禁 web IP ips ipt 日志

#!/bin/bash  
####################################################################################  
#根据web访问日志,封禁请求量异常的IP,如IP在半小时后恢复正常,则解除封禁  
####################################################################################  
logfile=/data/log/access.log  
#显示一分钟前的小时和分钟  
d1=`date -d "-1 minute" +%H%M`  
d2=`date +%M`  
ipt=/sbin/iptables  
ips=/tmp/ips.txt  
block()  
{   
#将一分钟前的日志全部过滤出来并提取IP以及统计访问次数  
 grep '$d1:' $logfile|awk '{print $1}'|sort -n|uniq -c|sort -n > $ips  
 #利用for循环将次数超过100的IP依次遍历出来并予以封禁  
 for i in `awk '$1>100 {print $2}' $ips`   
 do  
 $ipt -I INPUT -p tcp --dport 80 -s $i -j REJECT   
 echo "`date +%F-%T` $i" >> /tmp/badip.log   
 done  
}  
unblock()  
{   
#将封禁后所产生的pkts数量小于10的IP依次遍历予以解封  
 for a in `$ipt -nvL INPUT --line-numbers |grep '0.0.0.0/0'|awk '$2<10 {print $1}'|sort -nr`   
 do   
 $ipt -D INPUT $a  
 done  
 $ipt -Z  
}  
#当时间在00分以及30分时执行解封函数  
if [ $d2 -eq "00" ] || [ $d2 -eq "30" ]   
 then  
 #要先解再封,因为刚刚封禁时产生的pkts数量很少  
 unblock  
 block   
 else  
 block  
fi  

标签:封禁,web,IP,ips,ipt,日志
From: https://www.cnblogs.com/o-O-oO/p/18384438

相关文章

  • 【Shell脚本】判断用户输入的是否为IP地址
    方法1:#!/bin/bashfunctioncheck_ip(){IP=$1VALID_CHECK=$(echo$IP|awk-F.'$1<=255&&$2<=255&&$3<=255&&$4<=255{print"yes"}')ifecho$IP|grep-E"^[0-9]{1,3}\.[0-9]{1,3}\......
  • 毕业设计——基于IPSec VPN的高可靠性中学校园网络设计与实现
    ​​​​​​​目录文章目录摘要1前言1.1研究背景 1.2国内外研究现状 1.3设计方法与思路 1.3.1设计方法2.需求分析2.1用户及网络需求分析2.1.1网络需求分析2.1.2用户信息需求2.1.3业务需求分析2.1.4应用需求分析2.2可行性分析 2.3现状分析 ......
  • 在浏览器上使用transformers.js运行(WebGPU)RMBG-1.4进行抠图(背景移除)
    在浏览器上使用transformers.js运行(WebGPU)RMBG-1.4进行抠图(背景移除)说明:首次发表日期:2024-08-28官方Github仓库地址:https://github.com/xenova/transformers.js/tree/main/examples/remove-background-client准备下载onnx模型文件:https://huggingface.co/briaai/RMBG-1.......
  • OpenCV Mat和IplImage访问像素的方法总结
    在opencv的编程中,遍历访问图像元素是经常遇到的操作,掌握其方法非常重要,无论是Mat类的像素访问,还是IplImage结构体的访问的方法,都必须扎实掌握,毕竟,图像处理本质上就是对像素的各种操作,访问元素就是各种图像处理算法的第一步。首先先看看图像的是怎么存储的。单通道图像多......
  • Multipass虚拟机ssh登录(密码方式)
    Multipass虚拟机ssh登录(密码方式)[!NOTE]以Ubuntu24,04LTS为例准备工作为了演示新建一个示例虚拟机。multipasslaunch--namevm01-c4-m4G-d100G--networkbridged操作步骤进入虚拟机multipassshellvm01设置密码multipass默认会给所有实例生......
  • 3. JavaScript 变量声明
    var、let和const是JavaScript中用于声明变量的关键字,但它们在作用域、提升(hoisting)、以及是否可以重新赋值等方面存在一些重要的区别。1.作用域(Scope)var:具有函数作用域(functionscope),即如果在函数内部声明var变量,该变量在整个函数内都有效。如果在函数外部声明,则具......
  • 使用idea快速创建springbootWeb项目(springboot+springWeb+mybatis-Plus)
    idea快速创建springbootWeb项目详细步骤如下1)创建项目2)选择springboot版本3)添加web依赖4)添加Thymeleaf5)添加lombok依赖然后点击create进入下一步双击pom.xml文件6)添加mybatis-plus依赖        这里使用的springboot版本比较新,mybatis-plus-boot-star......
  • 基恩士SR-X80系列扫码枪EIP通讯 ( 汇川AM401<->基恩士SR-X80 )
    第一步:扫码枪设置1,基恩士扫码枪IP地址设置 2,扫码枪EIP设置第二步:PLC设置及编程1,EDS文件导入  2,EIP配置 3,程序VARx触发读码:BOOL;接收数据长度:UINT;接收数据:ARRAY[0..127]OFBYTE;str接收数据:STRING;TRIG0:R_TR......
  • JavaScript 程序寻找通过 2 个点的线(Program to find line passing through 2 Points)
              在数学和计算机科学中,找到通过两个点的线的方程是一个基础问题。假设我们有两个点 P1​(x1​,y1​) 和 P2​(x2​,y2​),我们想要找到通过这两个点的直线方程。直线方程的形式直线的方程通常表示为 y=mx+b,其中 m 是斜率,b 是 y 轴截距。计算斜率......
  • 探索最佳无代码低代码工具:加速 Web 应用开发
    Web应用无处不在。从用户友好的在线表单到功能强大的企业级解决方案,Web应用的多样性和复杂性不断增长。随着低代码无代码技术的发展,构建一个Web应用的门槛正在大大降低。对于刚踏入Web开发领域的人员来说,正确的低代码/无代码工具不仅能加速学习过程,还能显著提高开发效率......