1. awk 挖掘404恶意请求 nginx 封禁ip
#!/bin/bash
log_nginx="/home/wwwlogs/"
block_file="/usr/local/nginx/conf/vhost"
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)
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 注意文件命名格式 可自行修改