个人网站总被攻击?那就写个自动封禁IP的脚本吧。

思路

  1. AWK统计access.log,记录每分钟访问超过100次的ip,然后配合nginx进行封禁。
  2. 编写shell脚本。
  3. 定时任务跑脚本。

好,思路有了,那我们就一步一步的来实现。

第一步:

使用awk统计access.log日志。

#acces_file_path,一个路径变量,下面完整脚本会有体现。
awk '{a[$1]++}END{for(i in a){if(a[i]>100)print "deny "i";"}}' $acces_file_path/*_access.log{a[$1]++}         # 表示字典a,如果不存在 就设置a{$1} = 0;存在则value值一直加1; a只是个名字,随便写
END{for(i in a)   # 等文本统计完成之后,输出字典的键和value,即IP和频次
{if(a[i]>100)print "deny "i";"}}  # 判断IP出现次数超过100之后,进行打印(只写i就会只打印值,也就是IP)"deny(空格)"和";" 是自己添加的打印内容(封禁格式是这样的)

第二步:

awk已经将需要封禁的IP及格式都给打印出来了。接下来编写脚本。

#!/bin/bash
# * * * * * bash /data/scripts/nginx_banned_ip.sh  每分钟执行一次# /usr/local/nginx/conf/vhosts/banned_ip.conf 内容格式
# deny 172.0.0.1;
# deny 172.0.0.2;log=`echo $0|sed 's/\..*/.log/'`                             # 脚本输出存放日志
acces_file_path=/usr/local/nginx/logs                        # 网站访问日志(可以一台机器多个网址使用)
banned_ip_file=/usr/local/nginx/conf/vhosts/banned_ip.conf   # IP封禁文件# 判断封禁文件是否存在,如果不存在就进行创建
[ ! -s "$banned_ip_file" ] && touch /usr/local/nginx/conf/vhosts/banned_ip.conf# 统计数据之后将IP写入到封禁文件中(每次执行都会将之前内容清空。只写入本次要封禁的IP)
awk '{a[$1]++}END{for(i in a){if(a[i]>100)print "deny "i";"}}' $acces_file_path/*_access.log > $banned_ip_file# 存在IP时进行重启nginx
[ -s "$banned_ip_file" ] && /usr/local/nginx/sbin/nginx -s reload# 清空访问日志
acces_file_list=`ls $acces_file_path/*_access.log`
for i in $acces_file_list
do> $i
done
[ ! -z "$acces_file_list" ] && /usr/local/nginx/sbin/nginx -s reload

第三步:

使用crontab定时,来实现访问每分钟超过100的。

crontab -e
* * * * * bash /data/scripts/nginx_banned_ip.shsystemctl restart crond.service 重启一下配置既可

到此文章结束,谢谢您的观看。如若文章有错误理解,欢迎批评指正,同时非常期待你的评论、点赞和收藏。

Nginx自动封禁IP相关推荐

  1. Nginx自动封禁可疑Ip

    文章目录 一.Nginx封禁ip 1.简介 2.nignx 禁止IP访问 2.1 方法一 2.2 方法二 3.关于 deny 的使用 二.脚本自动封禁Ip 1.流程介绍 2.脚本实战 2.1 核心脚本 ...

  2. Ngnix IP封禁以及实现自动封禁IP

    1.在ngnix的conf目录下创建一个blockip.conf文件 2.里面放需要封禁的IP,格式如下 deny 1.2.3.4; 3.在ngnix的HTTP的配置中添加如下内容 include b ...

  3. 我的网站被攻击了,运维大佬给了我自动封禁ip的脚本。

    我的网站被攻击了,发现友圈最近出现这种情况的还不少,真是神奇了,这事也能扎堆发生. 分享出来给大家,万一以后用得着呢~ 故事背景 我的一个小网站最近总是收到云监控报警,一个部署在4核8G单机上的小网站 ...

  4. Nginx 如何封禁IP和IP段

    文章目录 前言 1.禁用IP和IP段 2.配置禁用ip和ip段 3.仅允许内网ip 4.格式化nginx的403页面 前言 Nginx不仅仅只是一款反向代理和负载均衡服务器,它还能提供很多强大的功能, ...

  5. Nginx+Lua脚本+Redis 实现自动封禁访问频率过高IP

    前言:由于公司前几天短信接口被一直攻击,并且攻击者不停变换IP,导致阿里云短信平台上的短信被恶意刷取了几千条,然后在Nginx上对短信接口做了一些限制 临时解决方案: 1.查看Nginx日志发现被攻击 ...

  6. openresty开发系列38--通过Lua+Redis 实现动态封禁IP

    openresty开发系列38--通过Lua+Redis 实现动态封禁IP 一)需求背景为了封禁某些爬虫或者恶意用户对服务器的请求,我们需要建立一个动态的 IP 黑名单.对于黑名单之内的 IP ,拒绝 ...

  7. Openresty通过Lua+Redis 实现动态封禁IP

    需求背景 为了封禁某些爬虫或者恶意用户对服务器的请求,我们需要建立一个动态的 IP 黑名单.对于黑名单之内的 IP ,拒绝提供服务.并且可以设置失效 环境准备 linux version:centos ...

  8. 服务器被攻击怎么封禁IP

    如果您的服务器被入侵了,最好的做法是立即断开网络连接,以防止攻击者进一步损害您的系统.然后,您应该检查您的服务器,看看是否有任何指示受到入侵的迹象.如果您发现了任何可疑的活动,您应该立即联系您的网络管 ...

  9. 计算机策略中封运行程序,使用组策略封禁IP地址的方法

    在Windows服务器或电脑受到某个IP大量发包攻击时,系统会变得很慢.上网慢,引发一系列的问题,当查到攻击来源IP后,可以通过组策略直接封禁IP.本文以当前Windows系统受到了来自 10.89. ...

最新文章

  1. jmeter 自定义参数_jmeter参数化并在jenkins上执行
  2. 详解虚函数的实现过程之菱形继承(5)
  3. Flume架构及应用
  4. Cool!15个创意的 CSS3 文本效果【下篇】
  5. 2015蓝桥杯省赛---java---A---9(垒筛子)
  6. python 网站发送验证码_Python爬虫模拟登录带验证码网站
  7. JZOJ 3490. 旅游(travel)
  8. “通配符的匹配很全面, 但无法找到元素 ‘utillist‘ 的声明”的问题
  9. ConcurrentHashMap(转)
  10. Linux开发_判断程序是否以管理员权限运行(root/sudo)
  11. JavaScript 调用 Web Service 的多种方法
  12. mybatis运行原理详解
  13. 《云计算核心技术剖析》读书笔记之一
  14. LCD1602温度显示程序设计流程
  15. (转)DirectoryEntry的使用
  16. 终于等到离职这一天了--献给准备、犹豫离职中的朋友们!
  17. 非计算机专业考研软件工程,#考研报名#计算机类、软件工程类考生报名前必看...
  18. 【贪玩巴斯】理工类科技检索(三)——「科技检索中的课题主题分析与例题全解」
  19. 2020新版小桔灯作文能力阶梯序列作文课件教案教材全套
  20. kali linux 初始密码

热门文章

  1. (私人收藏)2019WER积木教育机器人赛(普及赛)解决方案-(全套)获取能源核心
  2. 尚硅谷Docker实战教程学习总结文档
  3. 每天一个命令:top工具命令
  4. HDU 2209 翻纸牌游戏(DFS)
  5. VUE课堂笔记1-课前准备
  6. 维峰电子深交所上市:市值64亿 李文化家族色彩浓厚
  7. 用户画像建模(客户基本属性表,客户营销信息表)
  8. 人+山=仙,人+谷=俗
  9. [BZOJ]1003 物流运输题解
  10. git-hub 的使用指南