一、Shell 分析 Nginx 日志
如果你用的 LNMP 一键脚本,那么 Nginx 日志默认在 /home/wwwlogs
下,日志中有访问时间、访问者 IP、网站 URL 等信息。
用这个简单的 Shell 脚本就可以分析 Nginx 日志文件,将最近的网站指定访问次数的访问记录中,出现频次超过 200 次的 IP 全部找出来:
# 定义访问次数上限 200 num=200 # 定义检查日志文件中的最后指定访问次数4000行数据 check_num=4000 LOG_DIR=/home/wwwlogs cd $LOG_DIR LOG_FILE=laowangblog.com.nginx.log # 筛选日志文件 IP=`tail $LOG_FILE -n $check_num|awk '{print $1}'|sort|uniq -c|sort -rn|awk '{if ($1>'$num'){print $2}}'` for i in $IP # 对这些 IP 的操作 do .... done
二、自动化 & 封禁这些 IP
自动化自然就是借助 crontab,如何处理这些恶意 IP,自然就是通过 iptables 拉黑了。
《Linux 利用 crontab 实现定时任务格式与用法简介》
《使用 iptables 禁止特定 IP / 某些 IP 段访问你的网站或者服务器》
如果你的垃圾 IP 特别多,也可以用 ipset,结合 iptables 也是非常方便的,自行 Google 一下就行。