L7-filter (Application Layer Packet Classifier for Linux), 是Linux上的一个数据包分类器,作为iptables的扩展它加强iptables在分析封包的能力,iptables在处理封包时不是简单的基于如网络应用port号,而是用正则表达式匹配Layer7应用协议(HTTP、FTP)的传输数据,这样更能准确的分析数据包。它能使 Linux的 iptables 支持 Layer 7 (OSI应用层) 过滤功能, 限制封杀 P2P、即时通讯(MSN、QQ、AIM)软件。
那么今天就给大家讲讲如何在CentOS5.5下安装和配置L7-filter:
1.所需软件(这里给出的顺序就是你要安装的先后顺序)
libnfnetlink-0.0.41.tar.bz2
libnetfilter_queue-0.0.17.tar.bz
libnetfilter_conntrack-0.0.99.tar.bz
l7-filter-userspace-0.11.tar.gz
l7-protocols-2009-05-28.tar.gz
2.安装过程
按照上边说的顺序安装就好了,没啥难的,需要注意的是,安装完第一个后,安装第二个就出现了如下错误:
checking for LIBNFNETLINK... configure: error: Cannot find libnfnetlink >= 0.0.41
说句真的,为了这个错误,我也找了好久,虽然也知道哪里错了,可就是不知道咋改,功夫不负有心人。看到这样一段话:
The error is from pkg-config, so the important bit is that pkg-config can find the relevant .pc file. Have a look at the pkg-config man page;
you may need to set PKG_CONFIG_PATH and possibly others depending how things are installed.
都这样说了,还说啥呢,给出修正方法,在终端输入:
PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
接下来?接下来屏幕一整狂闪,success,这就是结果。窃喜吧!
3.配置使用
在/etc/l7-protocols/protocols/中列出了所有支持的协议。
创建/etc/l7-filter.conf文件在其中添加自己需要监视的协议,例如
ftp 5
http 6
qq 68
运行l7-filter -f /etc/l7-filter.conf,每行前面是协议名称,对应于/etc/l7-protocols/protocols下面的协议名称,这就是要告诉你,如第一行你要拦截迅雷,则必须在/etc/l7-protocols/protocols下有一个xunlei.pat文件,里边是用正则表达式写的规则。当然啦, 你想用它来定义自己的,就要对正则表达式有比较清楚的认识和了解了,然后写出自己的XXX.pat规则文件了。
4.启动l7-filter
在终端下输入l7-filter -f /etc/l7-filter.conf,然后在iptables中添加规则,如下所示(这是我的环境,不一定对你的哈):
iptables -A INPUT -j NFQUEUE --queue-num 0
其实,经过上面的安装配置,你会发现没啥难的,关键在于你要把规则给弄好,这才是王道啊.