网站首页

人工智能P2P分享搜索全网发布信息网站地图标签大全

当前位置:诺佳网 > 电子/半导体 > 嵌入式技术 >

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

时间:2023-01-29 11:44

人气:

作者:admin

标签: IP  Shell  代码  脚本  HTTP 

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

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

1.在ngnix的conf目录下创建一个blockip.conf文件

2.里面放需要封禁的IP,格式如下

deny1.2.3.4;

3.在ngnix的HTTP的配置中添加如下内容

includeblockips.conf;

8efa3542-96c4-11ed-bfe3-dac502259ad0.png

4.重启 ngnix

/usr/local/nginx/sbin/nginx-sreload

然后你就会看到IP被封禁了,你会喜提403;

8f04ef78-96c4-11ed-bfe3-dac502259ad0.png

小思考:如何实现使用ngnix自动封禁ip的功能

1.AWK统计access.log,记录每分钟访问超过60次的ip,然后配合nginx进行封禁

2.编写shell脚本

3.crontab定时跑脚本

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

8f11205e-96c4-11ed-bfe3-dac502259ad0.png

操作一:AWK统计access.log,记录每分钟访问超过60次的ip

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

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

操作二:编写shell脚本,实现整体功能(写了注释代码)

#不能把别人IP一直封着吧,这里就清除掉了
echo"">/usr/local/nginx/conf/blockip.conf

#前面最开始编写的统计数据功能
ip_list=$(awk'{print$1}'access.log|sort|uniq-cd|awk'{if($1>60)print$0}')

#判断这个变量是否为空
iftest-z"$ip_list"
then
#为空写入11.log中,并重新启动ngnix
echo"为空">>/usr/local/nginx/logs/11.log

/usr/local/nginx/sbin/nginx-sreload

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-sreload
#清空之前的日志,从最新的开始截取
echo"">/usr/local/nginx/logs/access.log

fi

操作三:使用crontab定时,来实现访问每分钟超过60的

直接实操吧:

crontab-e
*****cd/usr/local/nginx/logs/&&ship_test.sh每一分钟运行一次
systemctlrestartcrond.service重启一下配置既可
8f30285a-96c4-11ed-bfe3-dac502259ad0.png

审核编辑:汤梓红
温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信