Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1337086
  • 博文数量: 463
  • 博客积分: 10540
  • 博客等级: 上将
  • 技术积分: 5450
  • 用 户 组: 普通用户
  • 注册时间: 2006-11-12 08:30
文章分类

全部博文(463)

文章存档

2014年(2)

2012年(14)

2011年(42)

2010年(18)

2009年(78)

2008年(35)

2007年(182)

2006年(92)

我的朋友

分类: LINUX

2010-10-27 09:45:11

iptables的--connlimit匹配项可以限制ip并发连接数。然而,模块并没有以静态方式编译进内核,故我们使用此选项时会提示错误。网上查找相关资料后,绝大部分的解决方案均是重新编译内核,其实,有更简单的方法。
       对于linux的模块,没有静态编译进内核的,其实大部分已经编译成动态模块,我们其实只要找出是哪个模块问题便解决了,而此匹配项对应的模块是ipt_connlimit,下面便是详细解决方法。

先运行命令:depmod -a
此命令的作用便是找出所有可用的动态模块,这个命令是必须的,它不会有输出。
下一步是将模块插入内核
modprobe ipt_connlimit
同样不会有输出,没提示出错便表示成功了。(注意:insmod也是将模块插入内核,但是它不会自动清理模块的依赖关系,若依赖模块没先插入,便直接报错,不推荐使用)

这时我们可以使用connlimit匹配项了。
如iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 5 --connlimit-mask 32 -j DROP
示例写得有些简单,我们可根据连接状态来匹配,甚至可以根据某一次DOS攻击,包的特征来匹配。这里,各位自由发挥了。

这里再例出对connlimit两个参数的研究:
--connlimit-above x   限定并发连接的最大数目
--connlimit-mask   x   限定某个网络的最大并发连接数,x为32时,代表具体的主机,为默认值。x的值一般是代表A,B,C三类网络的8,16,24。

阅读(1704) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~