我从网上找了这篇文章,实际此做了一些。并改动了一些步骤的内容,但大体还是保持了原貌,同时也截图说明了一些。
虽然原文,个人认为不严谨,但是整体还是正确的,可能是作者也和偶一样,有点懒,有些就没有详细说明吧。
在些感谢原作者的奉献。尤其是对偶的帮助
其中@@是偶的注明及改动的地方。
原文链接:[url]http://blog.xok.cn/article.asp?id=44[/url]
前言:
主要目的彻底封锁QQ,MSN通信;字符过滤(支持中文),避免服务器上出现非法字眼.
注意:如果apache开启了Gzip或mod_deflate,output策略的字符过滤将失效.
流程:
打上layer-7补丁
升级内核至2.6.19.7
升级iptables至1.3.7
适用环境:透过NAT共享上网的方式
步骤:
一,下载所需要的软件包:
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.6.20以上的版本,当然之后一些编译的过程要改变下。
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
@@l7-protocols-2007-11-22
netfilter-layer7-v2.9.tar.gz
@@我采有的是netfilter-layer7-v2.17,因为手头上有,又懒不想去更新。
二,配置好内核选项:
1.把源码都放在/usr/src下
tar -jvf linux-2.6.19.7.tar.bz2 #解压
cd linux-2.6.19.7
@@mv linux-2.6.19.7 linux 改名为linux
2.配置内核源码:
make menuconfig
(内核配置参照2.6内核编译的说明文档,论坛很多的)
3.新内核加进了Proxy Server经常用到几个功能:
Core Netfilter configuration
(2.6.19.7内核netfilter的string,comment,quota,iprange等模块已集成了)
@@在我使用的CentOs 5.1上。iptables的版本是1.3.5,也有这些模块.
@@ /usr/src/linux/make menuconfig Networking--Networking options--Network packet filtering (replaces ipchains)--Core Netfilter Configuration
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
@@ tar zxvf l7-protocols-2007-11-22.tar.gz
@@ cd l7-protocols-2007-11-22
make install
2.L7内核支持补丁:
cd /usr/src/linux-2.6.19.7
@@cd /usr/src/linux
patch -p1 < /usr/src/netfilter-layer7-v2.9/kernel-2.6.18-2.6.19-layer7-2.9.patch
@@patch -p1
3,make menuconfig进去
把Layer 7 match support选上
@@把L7加入到内核编译中,其它的,同志们看着做。
@@/usr/src/linux/make menuconfig Networking--Networking options--Network packet filtering (replaces ipchains)--Core Netfilter Configuration
四,编译内核:
make
make modules_install
make install
reboot选2.6.19.7内核启动
@@可以改变GRUB.CONF吧,偶懒。也没有改。
五,升级iptables:
cd /usr/src/iptables-1.3.7
#打上iptables的Layer7补丁
patch -p1 < ../netfilter-layer7-v2.9/iptables-layer7-2.9.patch
@@patch -p1 <../netfilter-layer7-v2.17/iptables-1.3-for-kernel-pre2.6.20-layer7-2.17.patch
@@我没有找到iptables-layer7-2.9.patch,呵呵,后经证明,我做的也是对的。这个地方也是我建议各位使用2.6.20后内核的一个原因啦。呵呵。
chmod +x extensions/.layer7-test
export KERNEL_DIR=/usr/src/linux-2.6.20
@@这里为何是linux-2.6.20呢,按照上文应是linux-2.6.19
@@export KERNEL_DIR=/usr/src/linux
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
@@这个在1.3.5版本上不能编译也能成功通过命令的。注意下图中的:
@@-A INPUT -p tcp -m tcp --dport 22 -j fail2ban-SSH 这个是我用了fail2ban来限制那些SSH扫描登陆的。呵呵
@@-A FORWARD -p tcp -m tcp --dport 80 -m string --string "tencent" --algo bm --to 65535 -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]
@@最后注明,我根据我的实测更改了部分,但此文的整体思路的确不错。而且参考起来,只要会变通,也能顺利完成全文所说的项目。
@@为了证明也能测试成功,截图说明:
虽然原文,个人认为不严谨,但是整体还是正确的,可能是作者也和偶一样,有点懒,有些就没有详细说明吧。
在些感谢原作者的奉献。尤其是对偶的帮助
其中@@是偶的注明及改动的地方。
原文链接:[url]http://blog.xok.cn/article.asp?id=44[/url]
前言:
主要目的彻底封锁QQ,MSN通信;字符过滤(支持中文),避免服务器上出现非法字眼.
注意:如果apache开启了Gzip或mod_deflate,output策略的字符过滤将失效.
流程:
打上layer-7补丁
升级内核至2.6.19.7
升级iptables至1.3.7
适用环境:透过NAT共享上网的方式
步骤:
一,下载所需要的软件包:
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.6.20以上的版本,当然之后一些编译的过程要改变下。
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
@@l7-protocols-2007-11-22
netfilter-layer7-v2.9.tar.gz
@@我采有的是netfilter-layer7-v2.17,因为手头上有,又懒不想去更新。
二,配置好内核选项:
1.把源码都放在/usr/src下
tar -jvf linux-2.6.19.7.tar.bz2 #解压
cd linux-2.6.19.7
@@mv linux-2.6.19.7 linux 改名为linux
2.配置内核源码:
make menuconfig
(内核配置参照2.6内核编译的说明文档,论坛很多的)
3.新内核加进了Proxy Server经常用到几个功能:
Core Netfilter configuration
(2.6.19.7内核netfilter的string,comment,quota,iprange等模块已集成了)
@@在我使用的CentOs 5.1上。iptables的版本是1.3.5,也有这些模块.
@@ /usr/src/linux/make menuconfig Networking--Networking options--Network packet filtering (replaces ipchains)--Core Netfilter Configuration
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
@@ tar zxvf l7-protocols-2007-11-22.tar.gz
@@ cd l7-protocols-2007-11-22
make install
2.L7内核支持补丁:
cd /usr/src/linux-2.6.19.7
@@cd /usr/src/linux
patch -p1 < /usr/src/netfilter-layer7-v2.9/kernel-2.6.18-2.6.19-layer7-2.9.patch
@@patch -p1
3,make menuconfig进去
把Layer 7 match support选上
@@把L7加入到内核编译中,其它的,同志们看着做。
@@/usr/src/linux/make menuconfig Networking--Networking options--Network packet filtering (replaces ipchains)--Core Netfilter Configuration
四,编译内核:
make
make modules_install
make install
reboot选2.6.19.7内核启动
@@可以改变GRUB.CONF吧,偶懒。也没有改。
五,升级iptables:
cd /usr/src/iptables-1.3.7
#打上iptables的Layer7补丁
patch -p1 < ../netfilter-layer7-v2.9/iptables-layer7-2.9.patch
@@patch -p1 <../netfilter-layer7-v2.17/iptables-1.3-for-kernel-pre2.6.20-layer7-2.17.patch
@@我没有找到iptables-layer7-2.9.patch,呵呵,后经证明,我做的也是对的。这个地方也是我建议各位使用2.6.20后内核的一个原因啦。呵呵。
chmod +x extensions/.layer7-test
export KERNEL_DIR=/usr/src/linux-2.6.20
@@这里为何是linux-2.6.20呢,按照上文应是linux-2.6.19
@@export KERNEL_DIR=/usr/src/linux
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
@@这个在1.3.5版本上不能编译也能成功通过命令的。注意下图中的:
@@-A INPUT -p tcp -m tcp --dport 22 -j fail2ban-SSH 这个是我用了fail2ban来限制那些SSH扫描登陆的。呵呵
@@-A FORWARD -p tcp -m tcp --dport 80 -m string --string "tencent" --algo bm --to 65535 -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]
@@最后注明,我根据我的实测更改了部分,但此文的整体思路的确不错。而且参考起来,只要会变通,也能顺利完成全文所说的项目。
@@为了证明也能测试成功,截图说明: