netfilter,iptables,layer7实现内容过滤

前言: 
     
    通常有众多Boss级人物会要求你封锁公司的QQ,msn通信,哪个心里是一百个不愿意啊,现实就是现实 
    冒着被公司众JJMMDD吐口水的危险你也不得不干啊,说干就干不废话ing了。 

主要目的彻底封锁QQ,MSN通信  

流程: 
打上layer-7补丁 
升级内核至2.6.19.7 
升级iptables至1.3.7 

适用环境:透过NAT共享上网的方式 

(By Upkiller) 

步骤: 

一,下载所需要的软件包:  

1,下载新内核linux-2.6.19.7 
wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.19.7.tar.bz2 

2,下载iptables1.3.7 
wget http://www.netfilter.org/projects/iptables/files/iptables-1.3.7.tar.bz2 

3,下载Layer-7补丁,模块协议: 
http://sourceforge.net/project/showfiles.php?group_id=80085 
l7-protocols-2007-01-14.tar.gz 
netfilter-layer7-v2.9.tar.gz 

二,配置好内核选项:  

1.把源码都放在/usr/src下 
tar -jvf linux-2.6.19.7.tar.bz2           #解压 
cd linux-2.6.19.7              

2.配置内核源码: 
make menuconfig 
(内核配置参照2.6内核编译的说明文档,论坛很多的) 

3.新内核加进了Proxy Server经常用到几个功能: 
Core Netfilter configuration 
(2.6.19.7内核netfilter的string,comment,quota,iprange等模块已集成了) 

ppp (point-to-point protocol) support  
PPP MPPE compression (encryption)     #微软加密协议支持,做pptp vpn用得着哦 

三,L7补丁:  

1,安装l7协议: 
tar -zxvf l7-protocols-2007-01-14.tar.gz 
cd l7-protocols-2007-01-14 
make install 

2.L7内核支持补丁: 
cd /usr/src/linux-2.6.19.7 
patch -p1 < /usr/src/netfilter-layer7-v2.9/kernel-2.6.18-2.6.19-layer7-2.9.patch 

3,make menuconfig进去 
把Layer 7 match support选上 

四,编译内核:  

make 
make modules_install 
make install 
reboot选2.6.19.7内核启动 

五,升级iptables:  

cd /usr/src/iptables-1.3.7 
#打上iptables的Layer7补丁 
patch -p1 < ../netfilter-layer7-v2.9/iptables-layer7-2.9.patch 

chmod +x extensions/.layer7-test 
export KERNEL_DIR=/usr/src/linux-2.6.20 
export IPTABLES_DIR=/usr/src/iptables-1.3.7 

make BINDIR=/sbin LIBDIR=/lib MANDIR=/usr/share/man install 

六,测试  

iptables -I FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT 

1,用string模块封QQ的DNS:  

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

#封.qq.com,717103636F6D这段数据包特征可用嗅探器获取, 
#如果直接用string封.qq.com,但是String模块不支持(估计是字符串匹配的问题) 
#封qq的话很多wqq,qqxx这样的域名都不能用了所以封.qq.com是最佳做法 
iptables -I FORWARD -p udp --dport 53 -m string --hex-string "|717103636F6D|" --algo bm -j DROP 

此方法可以使用hosts文件和代理的方式绕过。 

2,彻底封杀QQ,分四步分别从udp,tcp,http代理,socks代理方式:  

#用L7自带的QQ协议封杀通过TCP出去的QQ通信 
iptables -I FORWARD -p tcp -m multiport --dport 80,443 -m layer7 --l7proto qq -j DROP 

#封QQ的UDP 8000端口的通信 
iptables -I FORWARD -p udp --dport 8000 -j DROP 

#封Socks代理 
iptables -I FORWARD -p tcp -m layer7 --l7proto socks -j DROP 

#封QQ通过Http代理出去(网页代理功能正常): 
#新增一个过滤CONNECT模式的L7协议: 

cd /etc/l7-protocols/protocols 
#新建一文件httpagent.pat,内容如下: 
# The HttpAgent Connect Action 
httpagent 
^\x43\x4F\x4E\x4E.+\x0D\x0A$ 

iptables -I FORWARD -p tcp -m layer7 --l7proto httpagent -j DROP 


3,用L7封Msn:  
#封MSN 
iptables -I FORWARD -m layer7 --l7proto msnmessenger -j DROP 

七,最后:  

感谢CU版主及众高人的精彩文章,让小菜我可以完成这篇文档,也期望有人能得到什么 
并希望有人继续完善提出更好更高效的方法。 


参考文章: 
http://www.chinaunix.net/jh/4/853647.html 
http://bbs.chinaunix.net/viewthread.php?tid=505370 
http://bbs.chinaunix.net/viewthread.php?tid=484867 
http://linux.chinaunix.net/bbs/viewthread.php?tid=885123
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值