layer7 是在linux上面的一個防火牆模塊,它可以在iptables上面實現七層過濾,能過濾包括電驢,msn,qq等一些列軟件,我們知道在Linux上面firewall是基於內核模塊實現的,所以我們要想起用layer7模塊就必須編譯內核,下面是步驟:
1. 需要源碼包
The 2.4 or 2.6 Linux kernel source (2.6 strongly preferred) 內核源2.4或者2.6版本碼包
The iptables source iptables源碼包
l7-filter kernel version" package lyer7源碼包
"Protocol definitions" package (l7-protocols-YYYY-MM-DD.tar.gz) lyer7規則包
2. 編譯內核
# tar zxvf linux-2.6.28.10.tar.gz -C /usr/src
// 解壓內核源碼包到/usr/scr
# tar zxvf netfilter-layer7-v2.22.tar.gz -C /usr/src
//解壓layer7源碼包到/usr/src
# ln –s /usr/src/linux-2.6.28.10/ /usr/src/linux
//把內核解壓後文件夾連接到/usr/src/linux文件夾
# cd /usr/src/linux/ 切換到/usr/srclinux 文件夾
# patch -p1 < ../netfilter-layer7-v2.22/kernel-2.6.25-2.6.28-layer7-2.22.patch
//用layer7提供的補丁爲內核打補丁
#cp /boot/config-2.6.18-164.el5 /usr/src/linux/.config 複製/boot/config-XX 爲 .config爲藍本
# make menuconfig編譯內核
在下面選項中啓用以下模塊
Networking support → Networking Options →Network packet filtering framework →Code Netfilter Configuration
Ü <M> Netfilter connection tracking support
Ü <M> “layer7” match support
Ü <M> “string” match support
Ü <M> “time” match support
Ü <M> “iprange” match support
Ü <M> “connlimit” match support
Ü <M> “state” match support
Ü <M> “conntrack” connection match support
Ü <M> “mac” address match support
Ü <M> "multiport" Multiple port match support
v Networking support → Networking Options →Network packet filtering framework → IP: Netfilter Configuration
Ü <M> IPv4 connection tracking support (required for NAT)
Ü <M> Full NAT
v <M> MASQUERADE target support <M> NETMAP target support <M> REDIRECT target support
爲內核添加支持選項(layer7)
#make 開始編譯
#make modules_install 安裝內核模塊 安裝在/lib/modules/2.6.28.10/
#make install 安裝新內核
編輯grub 把新內核作爲默認啓動內核 並重啓
# cp /etc/rc.d/init.d/iptables ~/iptables
複製/etc/rc.d/init.d/iptables 到~/iptables 爲了用service iptables 可用
# cp /etc/sysconfig/iptables.config /root 備份iptables配置文件
# rpm -e iptables-ipv6 iptables iptstate --nodeps
卸載當前系統下的iptables
# tar jxvf iptables-1.4.6.tar.bz2 –C /usr/src
解壓iptables 源碼包到/usr/src
# cd /usr/src/iptables-1.4.6j
切換到iptables文件夾內
#cp ../netfilter-layer7-v2.22/iptables-1.4.3forward-for-kernel-2.6.20forward/libxt_layer7.* ./extensions/ 把layer7中對於iptables的補丁複製到iptables 源碼中
./configure --prefix=/usr --with-ksource=/usr/src/linux
配置iptables 默認安裝前綴爲/usr 內核模塊位於 /usr/src/linux下
#make 編譯iptables
#make install 安裝iptables
# tar zxvf l7-protocols-2009-05-28.tar.gz
安裝layer7的
# cd l7-protocols-2009-05-28
切換到目錄
# make install
安裝layer7規則包
# mv ~/iptables /etc/rc.d/init.d/
把此前備份的 ~/iptables 複製回到/etc/rc.d/init.d/目錄下
# cp /root/iptables.config /etc/sysconfig/iptables.config 複製回iptables配置文件
# vim /etc/rc.d/init.d/iptables 編寫這個文件
利用服務腳本
# service iptables start
啓動 iptables 這樣iptables就可以即用layer7 模塊了
使用layer7
#iptables -t nat -A POSTROUTING -m layer7 --17proto qq -j DROP