QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1480|回复: 3

(转载)netfilter防火墙TCP线程限制解决方法

[复制链接]
发表于 2005-7-25 02:55:41 | 显示全部楼层 |阅读模式
Linux netfilter防火墙TCP线程限制解决方法
<转载>http://spaces.msn.com/members/afile/PersonalSpace.aspx?_c=

最近办公网里的电脑又有中招的,高波、冲击波、震荡波什么的.....总而言之中招的电脑总是试图进行扫描和地址欺骗攻击,虽然作为网关的RH9 Linux 防火墙主机已经进行了相应的保护,但是为了让用户能更简单地知道自已中招了,特地想了这个办法:

依据中招的电脑会引起大量的TCP(其实也有UDP的啦)出网访问请求,对每一个IP进行的TCP联接总数进行限制,当用户使用中的TCP联接数目超出一定限制后,这个用户的所有到80端口的WEB访问请求重定向到某一个WEB服务器上去并给予提示:

1、给Linux内核打补丁,使其支持iplimit过滤器,去下载patch-o-matic补丁,这里我用的补丁是patch-o-matic-20030107,差不多如下了:
#tar -xvf patch-o-matic-20030107.tar
#cd patch-o-matic-20030107
#./runme base
....
先正确填上核心源代码的位置,一般都是/usr/src/linux-2.4了。
在后面的菜单中一项一项地看,直到看到iplimit被丁后选择打上。

2、修改内核配置,在Network Options->Netfilter Configuration的列表中选择支持Connections/IP limit match support,可以编译为模块也可以编译到内核中,无所谓了。

3、重新编译核心并重启,并核实你的iptables工具是否支持iplimit:
#iptables -m iplimit
如果看到
iptables v1.2.8: You must specify `--iplimit-above'
Try `iptables -h' or 'iptables --help' for more information.
就是已经支持了,相反如果看到:
iptables v1.2.8: Couldn't load match `iplimit1':/usr/local/lib/iptables/libipt_iplimit.so: cannot open shared object file: No such file or directory
Try `iptables -h' or 'iptables --help' for more information.
就是还不支持,可以去下载新版的iptables或是源码包。

4、上面的都是废话,到这里配置才开始:
#iptabels -t mangle -I PREROUTING -p tcp -m iplimit --iplimit-above 100 --iplimit-mask 255.255.255.255 -j MARK --set-mark 0x0123
//在mangle表的PREROUTING链中,把每一个IP地址超出100个联接统计数的报文都打上0x0123这个标记
#iptables -N BLOCKLIMIT
//在filer表中,新建一个BLOCKLIMIT链,将用它来处理超限报文
#iptables -A BLOCKLIMIT -m state --state RELATED,ESTABLISHED -j ACCEPT
#iptables -A BLOCKLIMIT -p tcp -m tcp --dport 80 -j ACCEPT
#iptables -A BLOCKLIMIT -p tcp -j DROP

在FORWARD链中,对于线程总数超出限制的TCP报文,处理的方法为,放行相关和已建联接的报文,放行WEB访问的报文(用来让用户去访问被重定向到的网页)。并禁行其它的超限报文。
因此,经过filter表FORWARD链要加以下这一条:
#iptables -I FORWARD -m mark --mark 0x0123 -j BLOCKLIMIT

到这里,内部网络内建立了大量对外TCP联接的用户会出现超限后只能访问网页的情况。

5、最后把超限后的WEB访问请求重定向到某个WEB服务器上:
#iptables -t nat -I PREROUTING -i eth0 -s 192.168.0.0/24 -p tcp -m tcp --dport 80 -m mark --mark 0x0123 -j DNAT --to-destination xxx.xxx.xxx:80
上面eth0对应内网接口名称,192.168.0.0/24对应内网私网地址,xxx.xxx.xxx.xxx:80对应要重定向到的WEB服务器的IP地址和端口。

6、题外话,这样做如果用户在超限时访问的不是首页和已存在的文件时,重定向会访问WEB服务器上的网页会出现404 NotFound错误,这个时候只要设定一下WEB服务器,把404错定到这个WEB服务器的首页去就行了,由于这种情况下这个WEB服务器只能用来提示用户超限和中毒,因此建议最后独立建一个小的WEB服务器来充当超限提示页的提供。我这里用了RH9里带的Apache,具体配置就不提了。
 楼主| 发表于 2005-7-28 11:39:59 | 显示全部楼层
版主抗义,为什么,总是改我的帖子。也不说一下。。。
还删了我好多贴子。。
回复

使用道具 举报

发表于 2005-7-30 10:18:49 | 显示全部楼层
没找到iplimit项,是不是改成connlimit 了?
回复

使用道具 举报

 楼主| 发表于 2005-7-30 15:18:25 | 显示全部楼层
如果你用的是iptables 1.3.xx..‘patch-o-matic-20040107
就是connnlimit
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-5 16:09 , Processed in 0.043212 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表