Apache Log Parser阻止某些IP

时间:2015-10-21 17:15:47

标签: bash apache shell

因此,使用以下内容我可以获得IP地址列表

cat access.* | awk '{ print $1 }' | sort | awk '{print $1;}' | sort -n >> toblock.txt

如何过滤它以写出机器人IP?

然后我可以把它传递给:

for i in `cat block.txt`; do csf -d $i;done 

所以我可以阻止他们......

1 个答案:

答案 0 :(得分:0)

注意 - 如上所述,您建议将阻止来自源IP的所有流量;如果这是你的意图那么没关系 - 你也可以考虑使用'mod_security'(这篇文章包括使用:〜/ .htaccess与mod_rewrite规则,防火墙规则和mod_security - blocking the80 legs crawler) - 使用mod_security它更容易设置动态规则匹配'bots'并拒绝一个规则与潜在的数千个防火墙规则...

如果您更喜欢防火墙方法,那么可能更好:

  • 查找IP的DNS信息
  • 使用一条规则阻止机器人的整个RANGE ......

回到你的查询,你需要为'坏机器人'创建一个REGEX(正则表达式)模式,如下所示:

BAD_BOTS="bad_bot1|very bad bot|super bad bot|etc bad bot patterns" 

然后(忽略大小写并搜索这些模式)

egrep -i "${BAD_BOTS}" access.* | awk '{print $1}' | sort -n | uniq >> toblock.txt  

我不熟悉'csf'所以我不能对你问题的这一部分发表评论。

:)
戴尔