我的网站被攻击了,运维大佬给了我自动封禁ip的脚本。
我的网站被攻击了,发现友圈最近出现这种情况的还不少,真是神奇了,这事也能扎堆发生。
分享出来给大家,万一以后用得着呢~
故事背景
我的一个小网站最近总是收到云监控报警,一个部署在4核8G单机上的小网站。
查了log发现,我是被流量攻击了。
我招谁惹谁了呀,烦死了。昨天半夜11点收到报警短信,搞到了半夜12点,太耽误我睡觉了。
调研了一下云平台的安全服务,还挺贵,弃疗了。
我还是自己写吧,不是为了提升技术水平,单纯的为了省钱!
实现思路
首先,我的小网站访问量不高,如果某位大哥一天访问超过10次我就觉得有鬼了。
除非你是在爬我的数据~
还是你就是吃饱撑的!
有些ip定位是酱婶的,你可控制住自己,别太自由喽~
综上分析,我的实现思路如下:
- 监测log日志,分析访问ip。
- 每天ip的访问次数超过100就果断封掉。(为了避免误伤,我暂时把这个阈值设置成100,后面看情况动态调整。)
功能拆解
- 编写脚本,按日期拆分access.log(之前犯懒没做日志拆分,只是定时删除了访问日志)
- 编写定时任务,每天0点拆分访问日志
- 编写脚本,分析access.log访问日志,封禁当天访问次数超过100的ip
- 编写定时任务,每10分钟执行一次封禁ip脚本
思路是如此的清晰,奈何我并不擅长编写shell脚本,于是请教了群里的大佬,最终的实现如下:
具体实现
1. 日志拆分脚本
已经清楚的写了注释
其中LOG_PATH和PID换成你自己的路径
sh
``` 