运维

运维相关知识和内容

LNMP中使用Shell 分析 Nginx 日志文件找出恶意 IP 教程

一、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 一下就行。