个人网站总被攻击?写个自动封禁IP的脚本给你!

2023-01-13 0 621

个人网站总被攻击?写个自动封禁IP的脚本给你!

1.在ngnix的conf产品目录下建立两个blockip.conf文档

2.里头放须要禁言的IP,文档格式如下表所示

deny 1.2.3.4;

3.在ngnix的HTTP的实用性中加进如下表所示文本

include blockips.conf;

个人网站总被攻击?写个自动封禁IP的脚本给你!

相片

4.重新启动 ngnix

/usr/local/nginx/sbin/nginx -s reload

5.接着你就会看见IP被禁言了,你会喜提403

个人网站总被攻击?写个自动封禁IP的脚本给你!

相片

小思索:怎样同时实现采用ngnix手动禁言ip的机能

AWK统计数据access.log,历史记录每秒钟出访少于60次的ip,接着相互配合nginx展开禁言撰写shellJAVAcrontab定时跑JAVA

好了上面操作步骤列出来了,那我们先来同时实现第两个吧

个人网站总被攻击?写个自动封禁IP的脚本给你!

相片

操作一: AWK统计数据access.log,历史记录每秒钟出访少于60次的ip

awk {print $1} access.log | sort | uniq -cd | awk {if($1>60)print $0}

awk {print $1} access.log 取出access.log的第一列即为ip。sort | uniq -cd 去重和排序awk {if($1>60)print $0} 判断重复的数量是否少于60个,少于60个就展示出来

操作二:撰写shellJAVA,同时实现整体机能(写了注释代码)

#不能把别人IP一直封着吧,这里就清除掉了 echo “” > /usr/local/nginx/conf/blockip.conf #前面最开始撰写的统计数据数据机能 ip_list=$(awk {print $1} access.log | sort | uniq -cd | awk {if($1>60)print $0}) #判断这个变量是否为空 if test -z “$ip_list” then #为空写入 11.log中,并重新启动ngnix echo “为空” >> /usr/local/nginx/logs/11.log /usr/local/nginx/sbin/nginx -s reload else #如果不为空 前面加上 deny文档格式和ip写入blockip.conf中 echo “deny” $ip_list > /usr/local/nginx/conf/blockip.conf #因为前面携带了行数,所有我们须要去除掉前面的行数,写入后在读取一次 ip_list2=$(awk {print $3} /usr/local/nginx/conf/blockip.conf) #最后再把读取出来的值,在次写入到blockip.conf中 echo “deny” $ip_list2″;”> /usr/local/nginx/conf/blockip.conf #重新启动ngnix /usr/local/nginx/sbin/nginx -s reload #清空之前的日志,从最新的开始截取 echo “” > /usr/local/nginx/logs/access.log fi

操作三: 采用crontab定时,来同时实现出访每秒钟少于60的

这个crontab 就不多讲的,不会的可以参考:

https://blog.csdn.net/qq_38925100/article/details/123043112

直接实操吧:

crontab -e * * * * * cd /usr/local/nginx/logs/ && sh ip_test.sh 每一分钟运行一次 systemctl restart crond.service 重新启动一下实用性既可

个人网站总被攻击?写个自动封禁IP的脚本给你!

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务