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了可以對應用層進行控制了!!!!!!!!!!!。