Shell 分析 Nginx 日志文件找出恶意 IP 教程

总会有些无聊人的会攻击你的网站,跑你 VPS 流量、试你网站密码、探测你网站源数据等等,这个老王在《利用 iftop 解决 Linux 由于带宽占用过高导致无法远程连接的问题》也分享过类似的经历,本文就给大家分享一个 Shell 脚本,分析 Nginx 日志文件找出恶意 IP(访问频次过高)。

一、Shell 分析 Nginx 日志

如果你用的 LNMP 一键脚本,那么 Nginx 日志默认在 /home/wwwlogs 下,日志中有访问时间、访问者 IP、网站 URL 等信息。

下面这个简单的 Shell 脚本可以分析 Nginx 日志文件,将最近 4000 条网站访问记录中,出现频次超过 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 拉黑了, 这些教程之前老王也分享过。

如果你的垃圾 IP 特别多,也可以用 ipset,结合 iptables 也是非常方便的,自行 Google 一下就行。

赞(3)
关注我们
未经允许不得转载:老王博客 » Shell 分析 Nginx 日志文件找出恶意 IP 教程

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址