1. awk 挖掘404恶意请求 nginx 封禁ip

#!/bin/bash
log_nginx="/home/wwwlogs/"
block_file="/usr/local/nginx/conf/vhost"

# 查询出 404 大于 {N=10} 次的 「自己改」
grep ' 404 ' $log_nginx/access_*.log | awk '{print $1}' | sort -rn |uniq -c | awk '$1>10 {print $2}'| awk -F ":" '{print $2}' > $log_nginx/ip.txt

for ip in `cat $log_nginx/ip.txt`
do
  result=$(grep $ip $block_file/blockip.conf)
    #判断ip是否被屏蔽
  if [ -z "${result}" ]; then
        echo "deny $ip;" >> $block_file/blockip.conf
  fi
done

service nginx reload

1.1. crontab -e

# 5 分钟执行一次 ip拉黑
*/5 * * * *  /path/block_ip.sh
#7天清空一次
0 0 */7 * * cat /dev/null > /usr/local/nginx/conf/vhost//blockip.conf

1.2. ⚠️ 注意

  • 确保 nginx.conf 加载 include vhost/*.conf;
  • 注意加载顺序
  • grep "404" $lognginx/access*.log 注意文件命名格式 可自行修改

results matching ""

    No results matching ""