给你的主机防火墙添加l7-filter
linux系统自带的防火墙也可以起到过滤字符串或特定的报文的共能,但是其过滤能力远远有限,不能进行一些
常用协议及软件的过滤,如大家最熟悉的QQ、p2p下载协议等,l7-filter 便为我们的防火墙提供了更加强大的
过滤功能,对于过滤常见的软件或协议来说不仅不费吹灰之力,操作还极其方简单。
我们先来认识一下l7-filter
l7-filter即7层过滤器,L7过滤器是一个软件包,它提供了对Linux的Netfilter的子系统可以基于互联网协议 ,
在他们的数据包的应用层数据进行分类的分类。 这个工具的主要目标是使尽可能的识别点对点等节目,使用不
可预知的端口号,正因它是为后来才给linux的Netfilter一个软件包,所以我们要为linux的内核选择相对应的l7
软件包,对内核打l7补丁,然后重新编辑内核,开启相应的模块功能,因为l7是对iptables的功能提升,也需要
对iptables打补丁、重新编译,最终我们再安装一个协议包,这个协议包里包含了l7能够进行过滤的协议即可。
需要准备的压缩包:
1、linux-2.6.28.10.tar.gz 因l7的版本对内核版本的限制,内核的版本不要过新。
2、iptables-1.4.6.tar.bz2 iptables的源码安装包
3、netfilter-layer7-v2.22.tar.gz l7的源码安装包
4、l7-protocols-2009-05-28.tar.gz l7的协议包
我们直接开始操作:(说明:只要没有明确操作目录,就不必切换目录)
一、对内核的工作
1、解压内核和内核补丁:
tar xvf linux-2.6.28.10.tar.gz -C /usr/src
tar xvf netfilter-layer7-v2.22.tar.gz -C /usr/src/
进入工作目录
cd /usr/src/
创建linux-2.6.28.10的连接linux(关于内核编译的步骤及原理在我博客中有相关的文章,在此不再重复)
ln -sv linux-2.6.28.10 linux
cd linux
2、给内核打补丁
patch -p1 < ../netfilter-layer7-v2.22/kernel-2.6.25-2.6.28-layer7-2.22.patch
3、重新配置、编译、安装内核
拷贝一个内核配置的样本
cp /boot/config-2.6.18-164.el5 .config
make menuconfig
根据对内核的配置进行如下修改
进入Networking support --->Networking options --->Network packet filtering framework (Net
filter) ---> Core Netfilter Configuration进行如下修改
<M> Netfilter connection tracking support
<M> "string" match support
<M> "time" match support
<M> "layer7" match support
<M>iprange" address range match support
<M> "connlimit" match support
<M> "state" match support
<M> "conntrack" connection tracking match support
<M> "mac" address match support
<M> "multiport" Multiple port match support
进行完相应的修改之后则保存退出
编译、安装内核
make 编译模块
make modules_install 安装内核模块
make install 安装内核
3、测试新编译的内核
用新编译的内核重新启动系统,当系统能正常启动之后再进行下面的操作,不然将出现错误提示。
二、编译安装iptables
1、备份系统原有的iptables启动脚本和配置文件
cp /etc/init.d/iptabless ~/iptables 将iptables的启动脚本备份至家目录
cp /etc/sysconfig/iptables-config ~/
2、卸载系统原有的与iptables有关的rpm包
rpm -e iptables-ipv6 iptables iptstate --nodeps
3、解压、编译、安装iptables-1.4.6.tar.bz2 源码包
tar xvf iptables-1.4.6.tar.bz2 -C /usr/src
cd /usr/src/iptables-1.4.6
cp ../netfilter-layer7-v2.22/iptables-1.4.3forward-for-kernel-2.6.20forward/libx_layer7.* ./extensisons/
./configure --prefix=/usr --with-ksource=/usr/src/linux
make
make install
三、编译安装l7-protocols-2009-05-28.tar.gz协议包
1、解压
tar xvf l7-protocols-2009-05-28.tar.gz
2、编译安装(不需要编译)
cd l7-protocols-2009-05-28
make install
四、修改、还原iptables的服务脚本和配置文件
mv ~/ipitables /etc/rc.d/init.d/
cd !$
修改服务脚本
vim iptables
在莫行模式下输入
:%s@/bin/$IPTABLES@/usr/sbin/$IPTABLES@g
保存退出
cp iptables-config /etc/sysconfig/ 还原配置文件
好了,我们就可以启动服务了
service iptables start
到此我们的l7就安装成功我们可以简单练习一下,禁止192.168.10.0/24内的主机上QQ,命令如下:
iptables -t filter -A FORWARD -s 192.168.10.0/24 -m layer7 --17proto qq -j REJECT
至于软件或协议的控制也是如此的方便。