顺便一说,毕竟防护CC默认只是阻断访问,肯定没黑名单封禁不接收数据来的强,省流量是肯定的。
需kangle 3.1以上商业版支持,可配合iptables自动封,解封ip,防止攻击。使用得当,效果非常好。
初始化iptables,输入以下命令(root): 必须添加,否者都提示No chain/target/match by that name.报错
- /sbin/iptables -N kangle
- /sbin/iptables -I INPUT -p tcp -j kangle
- /etc/init.d/iptables save
增加配置文件
/vhs/kangle/ext目录新建一个xml文件,如:iptables.xml,内容如下:(目录不存在可以用mkdir -p /vhs/kangle/ext创建)
- <?xml version="1.0" encoding="utf-8"?>
- <config>
- <block_ip_cmd>/sbin/iptables -I kangle -s ${ip} -j DROP</block_ip_cmd>
- <unblock_ip_cmd>/sbin/iptables -D kangle -s ${ip} -j DROP</unblock_ip_cmd>
- <flush_ip_cmd>/sbin/iptables -F kangle</flush_ip_cmd>
- <bl_time>600</bl_time>
- </config>
bl_time是黑名单时间,单位秒,请修改为你的设置。这里设置的是10分钟。
如果不想添加初始化iptables命令的话,可以放在系统默认的INPUT表中,把kangle替换INPUT就可以了。比如说用下面这个,就可以不进去ssh进行初始化,方便做cdnbest多节点分发之类,注意默认封禁all,包括ping也会进行拦截10分钟,期间无法登陆ssh,至于命令加不加tcp看你自己了,个人建议全封了。
- <!--#start 800 -->
- <?xml version="1.0" encoding="utf-8"?>
- <config>
- <block_ip_cmd>/sbin/iptables -I INPUT -s ${ip} -j DROP</block_ip_cmd>
- <unblock_ip_cmd>/sbin/iptables -D INPUT -s ${ip} -j DROP</unblock_ip_cmd>
- <flush_ip_cmd>/sbin/iptables -F INPUT</flush_ip_cmd>
- <bl_time>600</bl_time>
- </config>
重载kangle配置文件
- /vhs/kangle/bin/kangle -r
使用黑名单
进kangle管理后台 http://ip:3311/
black_list标记模块。在请求控制中可以使用这个模块,这个可以和其它模块配合,如ip_rate用来检测某个ip的访问频率。仅在全局请求控制中才会同步到防火墙上。
per_ip_deny,在配置==>资源限制,勾上per_ip_deny,kangle会对超过每ip连接数限制的加入黑名单。
具体设置可以参考:
http://bbs.itzmx.com/thread-9270-1-1.html
使用
- iptables -L -n --line-numbers
查看封禁效果
效果图,个人建议使用频率,2秒80次封禁10分钟是不错的设置。目标设置拒绝
补充,现在http2的话,资源并发占用很大,建议调大数值,比如说10秒内200次。