程序谷 认真生活 享受生活

Nginx自动加入黑名单

⚠️ 本文最后更新于2023年11月15日,已经过了626天没有更新,若内容或图片失效,请留言反馈
图片描述

创建黑名单文件

touch /etc/nginx/conf.d/ip.conf

编辑nginx文件包含黑名单文件

vim /etc/nginx/nginx.conf

在access_log上方添加如下内容

# 黑名单文件
include /etc/nginx/conf.d/ip.conf;
access_log /var/log/nginx/access.log;

创建脚本

vim /etc/nginx/ip.sh

写入以下内容

#!/bin/bash

lastmin=`date -d'-1 minutes' +%d/%b/%Y:%H:%M`
#截取前一分钟的日志,按IP统计数量,超过300条的IP添加到临时文件中,没有满足条件的IP时会清空临时文件的内容
grep $lastmin /var/log/nginx/access.log | grep -vE '(.jpg|.jpeg|.js|.css|.gif|.bmp|.png)'|awk '{print $1}'|sort|uniq -c|sort -rn|awk '{if($1>300)print "deny "$2";"}' > /etc/nginx/conf.d/blockips_temp.txt
cat /var/log/nginx/access.log | grep 'etc/passwd' |awk '{print $1}'|sort|uniq -c|sort -rn |awk {'print $2'}
#如果临时文件内容不为空,将IP加入到配置文件中并重载nginx,否则跳过
if test -s /etc/nginx/conf.d/blockips_temp.txt; then
    echo "# `date`" >> /etc/nginx/conf.d/ip.conf
    cat /etc/nginx/conf.d/blockips_temp.txt >> /etc/nginx/conf.d/ip.conf
    systemctl reload nginx
fi

设置脚本运行

//如果需要选择编辑器,选择2,vim
crontab -e 

添加如下内容,每分钟执行一次

*/1 * * * * sh /etc/nginx/ip.sh

查看定时

crontab -l
By 大芃展翅 On
此页面评论区已关闭
程序谷 |  蜀ICP备2020031553号-1