LFQ 第5章 第7层过滤
| |
:雨 2008/08/07 15:09 ..by Rico
在本书的第1章,我们展示了OSI和TCP/IP的网络模型。我们发现,即便TCP/IP模型应用广泛,参考模型依然是OSI。

我们再看一下TCP/I{和OSI模型:

点击在新窗口中浏览此图片


在OSI模型的第7层找到的是应用(HTTP、FTP、SSH等)。从上图可以看到,TCP/IP将OSI的第5、6、7层集成到一个层:TCP第4层(应用层),名称相同,不过功能相异。

过滤或提升某些程序的通讯量可难可易。通常,我们可以通过命中源或目标端口为80(HTTP端口)的TCP包来过滤/提升网络通讯量。然而,网页服务器可配置使用任一端口,因此对于特定的通讯量我们的过滤/提升将无效。

网管另外要对付的就是P2P软件,如Kazaa、DC++、Emule等等。由于这些程序不使用标准端口,并且更糟糕的是,它们还能配置成使用标准端口(比如80).

当前,有人打算出手对付这些,并已经干得不错,启动的项目叫“第7层过滤”。

你可能猜到,“第7层过滤”就是过滤第7层数据的办法,即由程过滤由程序产生的网络通讯,不管在第4层用的是什么协议和端口。

L7过滤为Linux内核的包分类器,它不查找第4层的协议和端口,而是查找IP包里的数据,并做正则表达式匹配以决定数据的类型,及使用了什么程序协议。

我们还将讨论的另一个项目是IP2P,为L7过滤的替代品,设计用于只过滤P2P软件,而L7过滤处理的程序范围要更广泛。

何时使用第7层过滤
L7过滤为命中网络程序数据的很棒的解决方案,不过也存在不利的地方。主要是占用大量CPU计算,因此在通讯量非常大的系统上并不推荐采用。不过这还要看通过系统的数据类型。比如,平均20Mbps的www数据处理起来轻松小菜,而2Mbps的VoIP通讯就会使系统的性能严重下降。

通常,我们认为L7过滤比较适合SOHO环境,能够很好地过滤病毒、限制孩子下载音乐占用的带宽。

L7过滤还适合中小企业,用于限制一些非必要的通讯。比如,某企业只有10Mbps的互联网连接,某个员工使用P2P软件将很快占满所有通讯量,使正常的工作无法开展。

采用L7过滤另一个不利之处是它需要连接跟踪模块有效。之前我们讨论过该模块对大流量通讯并不适合。

因此,结论是:L7过滤是不错的工具,不过对CPU占用很高,并且必须要有ip_conntrack的协作。不推荐在超过5000pps(包/秒)的机器上使用,当然如果机器性能不在话下,就无所谓了。

第7层过滤工作原理
L7过滤为iptables提供分辨包属于哪个程序的方法。

TCP/IP模型有4层,在L7过滤项目之前,netfilter能够命中下面三层的数据:
● 链路层:iptables -A CHAIN -m mac --mac-source ...
● 网络层:iptables -A CHAIN -s IP_ADDRESS …
● 传输层:iptables -A CHAIN -p tcp --dport 80 …

在链路层,netfilter使用-m mac命中来自或者发向网络中某个MAC地址的包。在网络层有IP协议,netfilter命中来自或者发向某个IP地址的包,无论该包采用了什么通讯协议、端口或应用程序。在传输层有TCP、UDP协议,netfilter可以通过协议、端口命中相应的包。

可以对此三层的条件任意组合,比如:
iptables –A FORWARD –s 192.168.0.2 –p tcp -–dport 80 –m mac –-mac-source 00:01:BC:2D:EF:2A –j DROP

即,如果包源IP地址为192.168.0.2,且MAC地址为00:01:BC:2D:EF:2A,采用TCP协议,目标端口为80,将之丢弃。
内文分页: [1] [2] [3] [4] [5] [6] [7] [8]
< Tags: >

0 comment(s)

发表评论
表情
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
打开HTML
打开UBB
打开表情
隐藏
昵称   密码   游客无需密码
网址   电邮   [注册]
               

验证码 不区分大小写