zhanghy5337 发表于 2010-7-5 16:31:39

使l7过滤应用层协议

一、使l7过滤应用层协议
1.         L7概念:是一个linux内核包分类器,和其他的分类器不同,L7不仅仅是对协议的端口定义,它的表达式和应用层协议匹配,以此来检验使用的是那种协议?
2.         L7对处理器和内存敏感,使用L7情况:
                        i.需要匹配一些使用未定义的协议端口(P2P文件应用共享)
                      ii.            有意义的通讯使用非标准端口(如:http使用了8080端口)
3.         L7的组成:三部分组成:一个是内核补丁,一个是iptables补丁,一个是协议定义文本。
4.         使用netfilter/iptables封锁企业QQ,msn,xulei
                        i.            需要的软件包:linux-2.6.-28.tar.bz2,netfilter-layer7-v2.21.tar.gz,iptables-1.4.8.tar.bz2.l7-protocols.tar.gz
                      ii.            把上面的软件包解压到/usr/src (个人习惯)
a)         Tar –jxvf linux-2.6.-28.tar.bz2 –C /usr/src
b)      Tar –jxvf iptables-1.4.8.tar.bz2 –C /usr/src
c)         Tar –zxvf netfilter-layer7-v2.21.tar.gz –C /usr/src
d)      Tar –zxvf ll7-protocols.tar.gz –C /usr/src
                  iii.            卸载系统自带的iptables
a)         先用rpm –qa | grep iptables
b)      Rpm –e iptables iptables-ipv6 –nodeps (yum remove iptable)
                     iv.            安装l7
a)         给新内核打上l7补丁
ØCd /usr/src/linux-2.6.28.8
&Oslash;Patch –p1 < /usr/src/net/netfilter-layer7-v2.21/keer-2.6*.patch
                     v.            编译内核
a)         编译环境:GCCyum –y install gcc* rpm –import /etc/pki/rpm-gpg/RPM*
b)      修改内核配置项
&Oslash;Make mrproper(清除已编译的内核)
&Oslash;Make oldconfig 全部保持默认 mv /boot/config-2.6.18-186.el5 /usr/src/linux-2.6.28.8/.config
&Oslash;Make menuconfig (需要安装ncurses-devel,可以编译成模块,再模块安装)
General setup--->
Prompt for development and/or incomplete code/drivers必选
Networking--->
Networking options--->
Network packet filtering framework (Netfilter)--->
Network packet filtering framework (Netfilter)--->
Core Netfilter Configuration--->   该项下的所有项目建议都选上
       <M> Netfilter connection tracking support这个项目必需选上,下面才会出现layer7的选项
          <M>   "layer7" match support         必选                              
                        Layer 7 debugging output   必选   
      IP: Netfilter Configuration--->    该项下的所有项目必需都选上
u编译并安装新内核 make && make modules_install && make install
u设置新内核为默认启动,如果远程连接服务器则必须要设置,在/etc/gurb.conf 中将default=1改成default=0
                      vi.            编译安装iptables并支持layer7
a)         编译安装iptables并支持layer7
&Oslash;Cp –R
/usr/src/netfilter-layer7-v2.22/iptables-1.4.1forward-for-kernel-2.6.20forward/libxt_layer7.* /usr/src/iptables-1.4.8/extensions/
&Oslash;#./configure –with-ksource=/usr/src/linux-2.6.28
&Oslash;Make && make install
b)         安装l7协议
&Oslash;Mkdir /etc/l7-protocols
&Oslash;Mv /usr/src/ l7-protocols-2009-5-10 /usr/src/l7-protocols
&Oslash;Cp –R /usr/src/ l7-protocols /usr/src/iptables-1.4.8/
&Oslash;Make && make install
二、layer7规则示例
1.         layer7 match
# iptables -A FORWARD -m layer7 –l7proto qq -j DROP
# 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
2.         string 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 -j DROP
# iptables -A FORWARD -p tcp –dport 80 -m string –string "sex" –algo bm -j DROP
3.         state match
# iptables -A FORWARD -m state –state NEW -p tcp ! –syn -j DROP
# iptables -A FORWARD -m state –state ESTABLISHED,RELATED -j ACCEPT
4.         connlimit match
# iptables -A FORWARD -p tcp –syn -m connlimit –connlimit-above 100 –connlimit-mask 24 -j DROP
5.         time match
# iptables -A FORWARD -p tcp –dport 80 -m time –timestart 8:00 –timestop 17:00 –weekdays Mon,Tue,Wed,Thu,Fri -j ACCEPT
页: [1]
查看完整版本: 使l7过滤应用层协议