针对切割Nginx动态日志自动拉黑脚本
#!/bin/bash
#日志存放目录
LOGS=/data/wwwlogs/
#Nginx目录
NGINX_DIR=/usr/local/nginx/conf/vhost
#阻止IP配置
BLOCKIP=blockip.conf
#判断nginx是否有vhost目录
if [[ ! -d $NGINX_DIR ]];then
mkdir -p $NGINX_DIR
echo "$NGINX_DIR 目录创建成功!"
else
echo "$NGINX_DIR 目录已经存在,无需创建!"
fi
#判断是否有blockip.conf文件
if [[ ! -f $NGINX_DIR/$BLOCKIP ]];then
touch $NGINX_DIR/$BLOCKIP
echo "$BLOCKIP 文件创建成功!"
else
echo "$BLOCKIP 文件已经存在,无需创建!"
fi
#批量查询日志,并显示日志最后1000行中的第1,11,14列
find $LOGS -type f -name "*.com_nginx.log" -exec tail -n1000 {} \; | awk '{print $4,$9,$10}' |
#内部IP,防止把自己给屏蔽导致不能正常访问
grep -Ev "127.0.0.1|localhost" |
#阿里云IP过滤,不知道为什么可能会导致403错误,应该是阿里云的CDN加速
grep -Ev "140.205.253.*|119.23.169.*|123.57.117.*|122.227.164.206" |
#过滤搜索引擎蜘蛛
grep -i -Ev "google|yahoo|baidu|msnbot|FeedSky|sogou|360|bing|soso|403|api" |
#对IP进行统计访问次数与排序
awk '{print $1}' | sort | uniq -c | sort -rn |
#查询1000条内的ip判断超过50次进行拉黑,并输出到nginx配置文件
awk '{if($1>50)print "deny "$2";"}' > $NGINX_DIR/$BLOCKIP
#加载Nginx配置
#/usr/local/nginx/sbin/nginx -s reload
版权声明:
作者:Akiraka
链接:https://www.akiraka.net/linux/160.html
来源:Akiraka
文章版权归作者所有,未经允许请勿转载。
THE END
0
二维码
海报
针对切割Nginx动态日志自动拉黑脚本
#!/bin/bash
#日志存放目录
LOGS=/data/wwwlogs/
#Nginx目录
NGINX_DIR=/usr/local/nginx/conf/vhost
#阻止IP配置
BLOCKIP=blockip.conf
#判断nginx是否有vh……
文章目录
关闭