IT技术互动交流平台

iptables实现应用层的包过滤

作者:蓝宫卫  发布日期:2013-10-19 08:38:33

平台

linux5.4

源码包

iptables-1.4.2.tar.bz2

l7-protocols-2008-10-04.tar.gz

linux-2.6.25.19.tar.bz2

netfilter-layer7-v2.20.tar.gz

 

卸载原有的iptables、可以先把iptables的启动脚本提前备份一份;等后面重新编译iptables时再复制过来。

( /etc/init.d/iptables )

而后把源码包解压缩到 /usr/local/src/下;

步骤

一、重新编译内核

1、合并kernellayer7补丁

# tar jxvflinux-2.6.25.19.tar.gz2 -C /usr/src/

# tar zxvfnetfilter-layer7-v2.20.tar.gz -C /usr/src/

# cd/usr/src/linux-2.6.25.19/

# patch-p1 < /usr/src/netfilter-layer7-v2.20/kernel-2.6.25-layer7-2.20.patch

2、配置新内核

# cp/boot/config-2.6.18-8.el5 .config

【 可以沿用原本的内核 或者升级内核 】

# makemenuconfig

配置内核时,在“Networking ---> Networking Options ---> NetworkPacket filtering framework (Netfilter) ”处主要注意两个地方:

1) ---> Core Netfilter Configuration

//将“Netfilter connection tracking suport (NEW)”选择编译为模块(M),需选取此项才能看到layer7支持的配置。

//layer7stringstatetimeIPseciprangeconnlimit……等编译成模块,根据需要看着办。

2) ---> IP: Netfilter Configuration

//将“IPv4 connection tracking support (require for NAT)”编译成模块。

//将“Full NAT”下的“MASQUERADE target support”和“REDIRECT target support”编译成模块。

--->.config

3、编译及安装模块、新内核

# make&& make modules_install && make install

编译安装成后后,重启选择使用新的内核(2.6.25.19)引导系统 】

二、重新编译iptables

1卸载现有iptables

# rpm -eiptables --nodeps

 

2、合并iptableslayer7补丁

# tar jxvfiptables-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/

# cplibxt_layer7.c libxt_layer7.man /usr/src/iptables-1.4.2/extensions/

 

3、编译安装

# cd/usr/src/iptables-1.4.2/

 

# ./configure --prefix=/ --with-ksource=/usr/src/linux-2.6.25.19

# make&& make install

 

4、安装l7-protocols模式包

# tar zxvfl7-protocols-2008-10-04.tar.gz -C /etc/

# mv/etc/l7-protocols-2008-10-04 /etc/l7-protocols

 

这个时候测试页是无任何规则的:

232641610.png

 

三、layer7规则示例

1layer7 match

如果想过滤了条件就是在这个目录进行分类、可以在此设置规则:

/etc/l7-protocols-2008-10-04/protocols/

# iptables-A FORWARD -m layer7 --l7proto qq -j DROP

filter forward 处理七层协议;

232642149.png

# iptables-A FORWARD -m layer7 --l7proto msnmessenger -j DROP

# iptables-A FORWARD -m layer7 --l7proto msn-filetransfer -j DROP

# iptables-A FORWARD -m layer7 --l7proto xunlei -j DROP

# iptables-A FORWARD -m layer7 --l7proto edonkey -j DROP

# iptables-A FORWARD -m layer7 --l7proto bittorrent -j DROP

2string match

# iptables-A FORWARD -p udp --dport 53 -m string --string "tencent" --algo bm-j DROP

# iptables-A FORWARD -p udp --dport 53 -m string --string "verycd" --algo bm -jDROP

# iptables-A FORWARD -p tcp --dport 80 -m string --string "sex" --algo bm -jDROP

3state match

# iptables-A FORWARD -m state --state NEW -p tcp ! --syn -j DROP

# iptables-A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

4connlimit match

# iptables-A FORWARD -p tcp --syn -m connlimit --connlimit-above 100 --connlimit-mask 24-j DROP

5time match

# iptables-A FORWARD -p tcp --dport 80 -m time --timestart 8:00 --timestop 17:00--weekdays Mon,Tue,Wed,Thu,Fri -j ACCEPT


Tag标签: iptables   应用层   包过滤  
  • 专题推荐

About IT165 - 广告服务 - 隐私声明 - 版权申明 - 免责条款 - 网站地图 - 网友投稿 - 联系方式
本站内容来自于互联网,仅供用于网络技术学习,学习中请遵循相关法律法规