Nginx自动封禁IP
个人网站总被攻击?那就写个自动封禁IP的脚本吧。
思路
- AWK统计access.log,记录每分钟访问超过100次的ip,然后配合nginx进行封禁。
- 编写shell脚本。
- 定时任务跑脚本。
好,思路有了,那我们就一步一步的来实现。
第一步:
使用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.简介 2.nignx 禁止IP访问 2.1 方法一 2.2 方法二 3.关于 deny 的使用 二.脚本自动封禁Ip 1.流程介绍 2.脚本实战 2.1 核心脚本 ... 1.在ngnix的conf目录下创建一个blockip.conf文件 2.里面放需要封禁的IP,格式如下 deny 1.2.3.4; 3.在ngnix的HTTP的配置中添加如下内容 include b ... 我的网站被攻击了,发现友圈最近出现这种情况的还不少,真是神奇了,这事也能扎堆发生. 分享出来给大家,万一以后用得着呢~ 故事背景 我的一个小网站最近总是收到云监控报警,一个部署在4核8G单机上的小网站 ... 文章目录 前言 1.禁用IP和IP段 2.配置禁用ip和ip段 3.仅允许内网ip 4.格式化nginx的403页面 前言 Nginx不仅仅只是一款反向代理和负载均衡服务器,它还能提供很多强大的功能, ... 前言:由于公司前几天短信接口被一直攻击,并且攻击者不停变换IP,导致阿里云短信平台上的短信被恶意刷取了几千条,然后在Nginx上对短信接口做了一些限制 临时解决方案: 1.查看Nginx日志发现被攻击 ... openresty开发系列38--通过Lua+Redis 实现动态封禁IP 一)需求背景为了封禁某些爬虫或者恶意用户对服务器的请求,我们需要建立一个动态的 IP 黑名单.对于黑名单之内的 IP ,拒绝 ... 需求背景 为了封禁某些爬虫或者恶意用户对服务器的请求,我们需要建立一个动态的 IP 黑名单.对于黑名单之内的 IP ,拒绝提供服务.并且可以设置失效 环境准备 linux version:centos ... 如果您的服务器被入侵了,最好的做法是立即断开网络连接,以防止攻击者进一步损害您的系统.然后,您应该检查您的服务器,看看是否有任何指示受到入侵的迹象.如果您发现了任何可疑的活动,您应该立即联系您的网络管 ... 在Windows服务器或电脑受到某个IP大量发包攻击时,系统会变得很慢.上网慢,引发一系列的问题,当查到攻击来源IP后,可以通过组策略直接封禁IP.本文以当前Windows系统受到了来自 10.89. ...Nginx自动封禁IP相关推荐
最新文章
热门文章