RHEL4升级2.6.19内核+L7补丁彻底封QQ,MSN

前言:
    
    通常有众多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 [url]http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.19.7.tar.bz2[/url]

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

3,下载Layer-7补丁,模块协议:
[url]http://sourceforge.net/project/showfiles.php?group_id=80085[/url]
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 ***用得着哦

三,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版主及众高人的精彩文章,让小菜我可以完成这篇文档,也期望有人能得到什么
并希望有人继续完善提出更好更高效的方法。


参考文章:
[url]http://www.chinaunix.net/jh/4/853647.html[/url]
[url]http://bbs.chinaunix.net/viewthread.php?tid=505370[/url]
[url]http://bbs.chinaunix.net/viewthread.php?tid=484867[/url]
[url]http://linux.chinaunix.net/bbs/viewthread.php?tid=885123[/url]

你可能感兴趣的:(RHEL4升级2.6.19内核+L7补丁彻底封QQ,MSN)