需kangle 3.1以上商业版支持,搭配ipset或iptables自动封禁IP,解禁IP。

安装软件包

1# centos
2yum install ipset iptables
3
4# Debian
5apt install ipset iptables

创建kangle的防火墙集合

1ipset create kangle hash:ip hashsize 4096 maxelem 1000000
2# 加入系统自启动
3echo "/usr/sbin/ipset create kangle hash:ip hashsize 4096 maxelem 1000000" >> /etc/rc.d/rc.local

ipset的集合丢入Iptables的链,使与iptables和ipset进行联动。

1iptables -I INPUT -m set --match-set kangle src -p tcp -m multiport --destination-port 80,81,443,3312,3313 -j DROP
2service iptables save
3service iptables restart

增加kangle配置文件 /vhs/kangle/ext目录新建一个xml文件

 1touch /vhs/kangle/ext/ipset.xml;
 2cat >>/vhs/kangle/ext/ipset.xml<<EOF
 3<!--#start 800 -->
 4<?xml version="1.0" encoding="utf-8"?>
 5<config>
 6<block_ip_cmd>/usr/sbin/ipset add kangle ${ip}</block_ip_cmd>
 7<unblock_ip_cmd>/usr/sbin/ipset del kangle ${ip}</unblock_ip_cmd>
 8<flush_ip_cmd>/usr/sbin/ipset flush kangle</flush_ip_cmd>
 9</config>
10EOF

重载kangle配置文件

1/vhs/kangle/bin/kangle -r

屏蔽的IP查看

1ipset list kangle

卸载kangle ipset防御

1rm -f /vhs/kangle/ext/ipset.xml
2/vhs/kangle/bin/kangle --r
3ipset flush

使用kangle黑名单

进入kangle的管理后台:ip:3312

black_list标记模块。在请求控制中可以使用这个模块,这个可以和其它模块配合,如ip_rate用来检测某个ip的访问频率。仅在全局请求控制中才会同步到防火墙上。 per_ip_deny,在配置==>资源限制,勾上per_ip_deny,kangle会对超过每ip连接数限制的加入黑名单。

设置2秒80次访问,拉入黑名单,目标选择拒绝。 kangle