搜外网>搜外问答>问答页面

Linux通过ipset批量屏蔽IP地址

linux分析web日志的时候常常需要过滤一些条件进行更有效的分析。比如排除搜索引擎爬虫,spam等内容。

可能我们在Web服务器软件里(比如nginx/apache)已经禁止某些spam[?]正确抓取网站页面。但是他们还是会连接进来消耗资源。且日志中会写入大量的日志,比如UA:cdnunion_monitor就是这样一个垃圾。尽管我已经将他的所有访问返回410,但它每天还是大量尝试抓取我的网站页面。因此最好的办法就是iptables[?]封锁

选取部分日志提取cdnunion_monitor的所有IP,demo日志选取请根据实际情况修改

find access*15*10_* -exec grep 'cdnunion' {} \;|awk '{print $1}'|sort|uniq

通常使用iptables一条一个添加相关命令即可,但是由于数量过多,而且后期不好维护,所以使用ipset管理IP集然后配合iptables使用。

安装ipset

yum install ipset

创建名字为cdnunion的IP集

ipset create cdnunion hash:net

向cdnunion的IP集增加IP的单个命令如下

ipset add cdnunion 60.251.86.53
ipset list # 可以看到变化

因为从日志获取到的IP太多,所以可以用个bash批处理添加IP(过程略)

iptables增加规则

iptables -I INPUT -m set --match-set cdnunion src -p tcp -j DROP
service iptables save
service iptables restart

现在可以跟踪查看日志是否还有cdnunion特征的IP访问,因为我开始只选了一个区间的日志,并没有选更大的范围。所以我这里有个别遗漏掉的IP,后续通过ipset add cdnunion增加即可。

追加问题
    1 人参与回答
一年之计
一年之计 · 南瓜号

很专业的样子

SEO培训招生中
189