Linux通过ipset批量屏蔽IP地址

发布于 2015-11-20 作者 [重庆SEO]

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增加即可。

以下是整理的cdnunion_monitor IP列表,如有其他遗漏IP请告知

222.76.214.72
221.234.40.18
221.234.40.17
221.208.198.3
221.204.194.14
221.204.194.13
221.203.3.140
221.11.62.158
221.11.62.157
220.194.214.145
220.167.104.175
220.167.104.169
220.167.104.168
219.153.64.202
218.65.131.150
218.65.131.149
218.29.186.69
211.155.80.5
211.149.219.100
210.14.78.120
202.199.128.25
183.203.21.78
175.6.4.163
172.240.255.52
162.212.182.88
124.93.248.40
124.67.21.4
124.67.21.3
124.237.78.216
124.232.137.204
124.130.146.174
123.254.108.182
123.254.108.167
123.254.108.158
123.249.21.124
123.249.21.121
123.249.21.120
123.138.244.65
123.138.244.64
122.136.32.8
122.136.32.7
122.136.32.6
122.10.36.33
121.201.61.66
121.201.61.65
121.201.61.64
121.12.170.52
120.210.209.33
120.210.209.32
120.202.108.215
120.193.10.54
120.192.85.34
119.84.87.163
119.84.87.162
119.36.38.35
119.36.38.34
119.120.92.236
118.144.77.224
117.41.169.35
117.21.229.225
117.169.17.149
116.31.123.21
116.212.127.73
113.10.158.252
112.65.205.2
112.5.254.251
112.253.2.182
111.9.116.100
111.20.248.83
111.161.17.147
111.161.17.146
107.191.106.12
106.38.202.179
103.56.218.36
103.41.7.66
103.246.245.80
103.227.76.28
103.227.76.27
101.55.64.208
95.110.228.29
95.110.227.91
61.164.210.5
61.155.136.46
61.135.199.243
60.6.200.146
60.18.146.254
60.18.146.253
60.169.9.186
59.46.172.231
58.221.66.14
58.22.98.9
58.22.98.25
43.241.44.97
23.252.167.30
23.239.115.237
23.239.114.253
23.234.14.133
1.82.185.26