使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
Ø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) 修改内核配置项
ØMake mrproper(清除已编译的内核)
ØMake oldconfig 全部保持默认 mv /boot/config-2.6.18-186.el5 /usr/src/linux-2.6.28.8/.config
Ø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
Ø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/
Ø#./configure –with-ksource=/usr/src/linux-2.6.28
ØMake && make install
b) 安装l7协议
ØMkdir /etc/l7-protocols
ØMv /usr/src/ l7-protocols-2009-5-10 /usr/src/l7-protocols
ØCp –R /usr/src/ l7-protocols /usr/src/iptables-1.4.8/
Ø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]