Iptables+layer7的实现
1.内核 +7层补丁
2.iptables +l7补丁
IPTABLES 7层过滤
软件环境:
http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.25.19.tar.bz2 (内核源代码,已不是最新了)
http://www.netfilter.org/projects/iptables/files/iptables-1.4.2.tar.bz2 (iptables源代码)
http://ie.archive.ubuntu.com/sourceforge/l/l7/l7-filter/netfilter-layer7-v2.20.tar.gz (L7补丁)
http://ie.archive.ubuntu.com/sourceforge/l/l7/l7-filter/l7-protocols-2008-10-04.tar.gz (7层协议)
主要目标:
为iptables增加layer7补丁,实现应用层过滤功能,以便能够实现过滤即时通信和下载
软件的流量,及一些流氓软件的流量过滤。
但是我的内核版本是2.6.18-164.el5不支持L7过滤功能,为此我们需要升级一下我的内核版本
1、重新编译内核 将kernel+layer7补丁合并
(Linux内核 在/boot/vmlinuz-2.6.18-164.el5
内核模块 在/lib/modules/2.6.18-164.el5/kernel/)
tar -jxvf linux-2.6.25.19.tar.bz2 -C /usr/src/ --将我上传上去的linux内核源码解压缩
tar -zxvf netfilter-layer7-v2.20.tar.gz -C /usr/src/ --解压缩L7补丁
cd /usr/src/linux-2.6.25.19/
patch -p1 < /usr/src/netfilter-layer7-v2.20/kernel-2.6.25-layer7-2.20.patch --打上L7的补丁
2、配置新内核
cp /boot/config-2.6.18-8.el5 .config --沿用旧的内核配置
make menuconfig --打开配置菜单
//配置内核时依次选择如下,在“Networking ---> Networking Options ---> Network Packet filtering framework (Netfilter) ”处主修改如下两个地方:
1) 在Core Netfilter Configuration ---->中
将“Netfilter connection tracking suport (NEW)”选择编译为模块(M)(按下空格键),需选取此项才能在下面看到layer7支持的配置。
再将layer7、string、state、time、IPsec、iprange、connlimit……等编译成模块(M),一般这些都满足需要了。
2) 在IP: Netfilter Configuration ---->中
将“IPv4 connection tracking support (require for NAT)”编译成模块(M)。
将“Full NAT”下的“MASQUERADE target support”和“REDIRECT target support”编译成模块。
3)退出,保存
3、编译及安装模块、新内核
make && make modules_install && make install
编译安装成后后,重启选择使用新的内核(2.6.25.19)引导系统(这一步需要一定的时间哦)也可以修改一下/etc/grub.conf这也文件让系统开机自动用新的内核引导如下:
重启之后再看一下内核版本
4、重新编译iptables
① 卸载老的iptables (iptables v1.3.5,先保存一下老的控制脚本)
cp /etc/init.d/iptables /etc/init.d/iptables.bak
rpm -e iptables --nodeps
② 合并iptables和layer7补丁
tar -jxvf iptables-1.4.2.tar.bz2 -C /usr/src/
cd /usr/src/netfilter-layer7-v2.20/iptables-1.4.1.1-for-kernel-2.6.20forward/
cp libxt_layer7.c libxt_layer7.man /usr/src/iptables-1.4.2/extensions/
5、编译安装
cd /usr/src/iptables-1.4.2/
./configure --prefix=/ --with-ksource=/usr/src/linux-2.6.25.19
make && make install
cp /etc/init.d/iptables.bak /etc/init.d/iptables --还原脚本,这样就可以用以下命令了
service iptables {start|stop|restart|condrestart|status|panic|save}
6、安装l7-protocols包
tar -zxvf l7-protocols-2009-05-10.tar.gz -C /etc
mv /etc/l7-protocols-2009-05-10/ /etc/l7-protocols
到这里iptables已经支持layer7了可以对应用层进行控制了!!!!!!!!!!!。