基于nginx日志,封蜘蛛IP

回复 收藏
本帖最后由 andy 于 2009-10-16 14:58 编辑

#! /bin/bash

grep 'spider' /home/logs/client/access.log |grep -v 'Baidu' |awk '{print $1}' >/root/ip1.txt  //日志中大部分蜘蛛都有spider的关键字,但是百度的不能封,所以过滤掉百度
grep 'YoudaoBot' /home/logs/client/access.log  | awk '{print $1}' >>/root/ip1.txt  // 封掉网易的有道
grep 'Yahoo!' /home/logs/client/access.log  | awk '{print $1}' >>/root/ip1.txt  //封掉雅虎
sort -n /root/ip1.txt |uniq  |sort |grep -v '192.168.0.' |grep -v '127.0.0.1'>/root/ip2.txt // 过滤掉信任IP
/sbin/iptables -nvL |awk '$1 <= 30 {print $8}' >/root/ip3.txt  // 如果一小时内,发包不超过30个就要解封
for ip in `cat /root/ip3.txt`; do /sbin/iptables -D INPUT -s $ip -j DROP ; done
/sbin/iptables -Z // 将iptables计数器置为0
for ip in `cat /root/ip2.txt`; do /sbin/iptables -I INPUT -s $ip -j DROP ; done
2009-10-16 14:45 举报
已邀请:
0

阿铭老师 管理员

赞同来自:

本帖最后由 andy 于 2009-10-16 14:50 编辑

说明: 该脚本于是基于nginx的日志来做的过滤,该服务器上nginx的日志是按小时切割的,所以我执行了如下的任务计划  59 * * * * /bin/sh /usr/local/sbin/killspider.sh

回复帖子,请先登录注册

退出全屏模式 全屏模式 回复
评分
可选评分理由: