前言:有时候服务器会遭受到恶意IP访问,导致服务器负载很大,这个时候需要把这个IP封锁掉,以下两种脚本即可实现这种功能。封锁IP有两种方式:1,直接通过nginx即可,在配置文件中加入include blockip.conf;2,通过防火墙,加入防火墙规则,使固定的IP不能访问。

两种方式都是在日志文件中检索出访问量异常的IP,并作处理。

这里的脚本功能实现的是,当某个IP访问服务器大于我们设定的一个值后,封锁此IP,当然这个功能在实际中需要对百度、谷歌等爬出识别出来,这个脚本不处理,只要大于我们设定的值,就封锁,更加完善的线上脚本,我会在之后的博客中给出。

网上的脚本都是封锁IP,但是这里我们需要实现定时取消封锁IP的功能,原理就是定时启动两一个脚本,实现对封锁IP的解锁,具体配置如下:

一,nginx封锁IP

脚本逻辑:两个脚本,一个脚本检索出访问量大于固定值的IP,并把这个IP加入到nginx的封锁配置文件中,使用at任务,定时(如一个小时)启用另一个脚本,实现对封锁IP的解锁。步骤如下:

1、打开nginx配置文件:

vim /usr/local/nginx/conf/nginx.conf #这个配置文件根据自己的路径进行配置

2、在server段加入如下语句:

include    blockip.conf;

如图:

3、在nginx配置文件的同一路径中新建文件:blockip.conf

touch blockip.conf   #现在文件中先不用写入内容

4、编辑脚本,脚本内容如下:

#!/bin/bash

max=5    #我们设定的最大值,当访问量大于这个值得时候,封锁

confdir=/usr/local/nginx/conf/blockip.conf #nginx封锁配置文件路径

logdir=/usr/local/nginx/logs/access.log  #nginx访问日志文件路径

echo "">$confdir                #先把封锁配置文件中的内容清空

cat $logdir|awk '{print $1}'|sort|uniq -c|sort -n|while read line  #截取IP段

do

a=(`echo $line`)

if [ $a -ge $max ]     #比较每个访问IP是否大于设定的max值

then

echo "deny ${a[1]};">>$confdir  #把“deny IP;”语句写入封锁配置文件中

fi

done

service nginx reload      #重置nginx服务

at now+1 hours -f /root/unblockip.sh  一小时后启动解锁执行文件,路径自己定,unblockip.sh文件一定要设置执行权限:chmod +x unblockip.sh

5、以上是检索脚本,解锁脚本如下:

#!/bin/bash

sed -i 's/^/#&/g' /usr/local/nginx/conf/blockip.conf  #把nginx封锁配置文件中的内容注释掉

service nginx reload   #重置nginx服务,这样就做到了解锁IP

执行如下:

二、使用iptables封锁

封锁逻辑:两个脚本,一个检索出访问量大于我们设定值得IP,并把这个IP添加到防火墙规则中,实现IP封锁,定时(如一小时)后,使用at服务调用另一个脚本,这个脚本把iptables规则清楚,实现对封锁IP的解锁,脚本如下:

1、封锁IP脚本

#!/bin/bash

max=100   #我们设定的最大值,当访问量大于这个值得时候,封锁

logdir=/usr/local/nginx/logs/access.log   #nginx封锁配置文件路径

cat $logdir|awk '{print $1}'|sort|uniq -c|sort -n|while read line  #截取IP段

do

a=(`echo $line`)

if [ $a -ge $max ]    #比较每个访问IP是否大于设定的max值

then

iptables -I INPUT -p tcp --dport 80 -s ${a[1]} -j DROP #把访问量大于设定值的IP加入的防火墙规则中

fi

done

at now+2 minutes -f /root/unipblock.sh  #两分钟后(这个可以自己设置)调用另一个脚本,解锁IP

2、解锁IP脚本

iptables -F    #这个脚本就是清楚iptables规则

注释:这两个脚本在线上使用的时候会有问题,比如,每次清除iptables规则,那么之前封锁的IP就会被解锁,所以还有需要改善的地方,这里贴出来,就是给大家提供一种思路,定时取消封锁的IP,这个在网上还很少有涉及,我会在之后给出完善的线上使用的脚本,请大家关注。

转载于:https://blog.51cto.com/tsoagta/1710420

nginx封锁恶意IP,并且定时取消的两种脚本相关推荐

  1. win10定时关机c语言,Win10系统怎么定时关机?Windows10设置定时关机的两种方法

    最近,有位刚刚升级win10系统的用户反映自己在使用完电脑后经常会忘记手动关机,因此为了能够更好地保护电脑,希望在新系统中设置定时关机.这该如何操作呢?接下来,小编就向大家分享Windows10设置定 ...

  2. nginx限制恶意IP处理方法

    思考了几种方案,最终考虑使用ip黑名单的方式: 处理方法: 一.nginx黑名单方式: 1.过滤日志访问API接口的IP,统计每10分钟调用超过100次的IP,直接丢进nginx的访问黑名单 2.具体 ...

  3. 计算机安全设置关机,电脑用360安全卫士设置定时关机的两种方法

    大家都知道,手机是可以定时开关机的,那电脑行不行定时开关机?当然可以的.定时功能非常好用,而且定时关机的方法很多种,其中一种就是借助第三方定时关机软件,比如360安全卫士,就可以设置定时关机.下面以3 ...

  4. nginx防恶意ip访问控制

    业务分析:考虑到存在恶意用户频繁访问系统,采用nginx限制ip的访问! 描述:用户请求浏览器,经过后台的nginx层,路由到gateway网关层,由网关对应到后端的微服务.其中nginx层可以统计用 ...

  5. win定时关机_两种方法让你设置电脑定时关机

    方法一:利用计划程序 步骤一:在开始菜单搜索框中输入计划任务,点击任务计划程序 步骤二:点击操作再点击创建基本任务 创建基本任务中输入名称和相关描述 步骤三:触发器选择为每天,然后点击下一步 步骤四: ...

  6. iphone新旧手机数据传输已取消_两种方法轻松让iPhone实现APP互传,再也不羡慕安卓手机...

    安卓是一个开放式的系统,虽然不及封闭的iOS系统那么安全,但是使用中的便利程度的确比iOS高,包括APP的安装和分享.安卓系统安装APP只需要一个apk文件即可,这个apk文件可以通过蓝牙或者WiFi ...

  7. linux ip限制的两种设置方式

    经常网络被攻击,最有效的方式就是在linux操作系统上直接限制ip访问,主要有两种方式设置 1.使用hosts.allow和hosts.deny来设置ip白名单和黑名单,/etc/目录下     优先 ...

  8. Vivado IP核Global 和 out of context per IP两种综合方式区别

    Vivado IP核Global 和 out of context per IP两种综合方式区别 两者区别 OOC生成的文件 注意.注意.注意 1.更新IP核参数时需注意 2.IP核中包括高阻态时需注 ...

  9. nginx 防止恶意域名解析_配置nginx只允许域名访问,禁止ip访问【图文教程】

    平凡也就两个字: 懒和惰;成功也就两个字: 苦和勤;优秀也就两个字: 你和我.跟着我从0学习JAVA.spring全家桶和linux运维等知识,带你从懵懂少年走向人生巅峰,迎娶白富美!每一篇文章都是心 ...

  10. Nginx防止恶意解析-禁止通过IP访问网站

    https://www.jianshu.com/p/0921e033e355 参考链接 : Nginx防止恶意解析-禁止通过IP访问网站https://www.jianshu.com/p/0921e0 ...

最新文章

  1. magento工具PHP语言,Magento2建立中文翻译语言包
  2. sa执行命令方法总结
  3. No module named 'StringIO'
  4. Facebook开源NLP建模框架PyText,从论文到产品部署只需数天
  5. 从扁鹊医术看华为数据中心智能化运维之道
  6. 企业如何正确选择云ERP管理软件
  7. 使用Lex工具进行tiny+语言的词法分析
  8. No.1010_第七次团队会议
  9. 斐波那契数列升级版(洛谷P2626题题解,C++语言描述)
  10. UICollectionViewCell的设置间距
  11. SqliteDeveloper使用方法及注册
  12. 远程控制软件teamviewer简介
  13. GPS经纬度转百度地图经纬度
  14. 固态硬盘SSD之Flash闪存的基本概念
  15. CAJ阅读器相关问题
  16. OpenCV图像识别技术+Mediapipe与Unity引擎的结合
  17. 某鱼最近卖的很火蓝色版微信去水印小程序源码+接口
  18. 互联网创业最好的时代
  19. 用微分和差分方程描述的因果LIT系统
  20. 【Sass/SCSS】我花4小时整理了的Sass的函数

热门文章

  1. DNS-实验3_委派子域和转发
  2. 服务器主板测试工程师的项目,重视经验,人才紧缺—硬件测试工程师
  3. Linux Cgroups详解(一)
  4. 1124 Raffle for Weibo Followers(20 分)
  5. scala中实现break与continue功能
  6. 八数码 详解(C++)
  7. html----选项卡自动切换以及鼠标悬停时停止(js)
  8. 四平方和蓝桥杯Java_蓝桥杯-四平方和问题
  9. cmd jar java_cmd运行jar报错问题
  10. drop sqlite 多个表_android sqlite 一次创建多个表