采用Linux Iptables在网络层全面实现封堵QQ解决

lvye0 2011-03-17

前言:
QQ即腾讯(tencet.com 或qq.com),是一种实时通讯工具。目前很多公司都想办法对此通讯工具进行限制、控制。由于QQ生命力极强,导致各种方法都有可能漏网,除非你把大多数端口都封掉(tcp 80、433,UDP)。市面上有琳琅满目的网络安全产品、网络行为产品等。都提到能否封堵QQ,但是实际还是有些差距的。方案要解决的问题:实现某些电脑能够畅通无阻上QQ,某些电脑完全上不了QQ。

解决办法:
采用基于电脑IP地址的控制方法,本方案采用免费Linux操作系统+Iptables组件实现网络层封堵QQ。
基于电脑固定IP地址的管理涉及到MAC地址与IP地址的一一绑定。使得电脑管理控制到物理设备(电脑网卡)。实现MAC地址与IP地址的绑定可以通过交换机实现,路由器设备实现。如果网络比较简单,交换机没有此功能,也可以通过Linux服务器网关实现,实现方法是通过ethers 和arp,详细方法见下面。

实现步骤:
1、编写QQ所有服务器IP或主机列表脚本(qqserverlist)
如下:
tcpconn.tencent.com
tcpconn2.tencent.com
tcpconn3.tencent.com
tcpconn4.tencent.com
tcpconn5.tencent.com
tcpconn6.tencent.com
218.17.217.106
219.133.40.0/24
218.18.95.153
218.17.209.23
218.17.217.106
218.18.95.153
218.17.209.23
219.133.49.5
219.133.49.206
61.144.238.145
219.133.63.142
sz.tencent.com
sz2.tencent.com
sz3.tencent.com
sz4.tencent.com
sz5.tencent.com
sz6.tencent.com
sz7.tencent.com
sz8.tencent.com
sz9.tencent.com
注:此文件需要不断维护,QQ服务器主机有增加就必须增加到此列表
2、编写允许上QQ电脑的IP列表(permitiplist)
如:贵公司网络是采用内网192.168.1.x,下面可以作为你的参考。将允许上QQ的IP地址
增加在此列表
192.168.1.40
192.168.1.44
192.168.1.48
192.168.1.51
192.168.1.52
192.168.1.54
192.168.1.58
192.168.1.62
192.168.1.69
192.168.1.70
192.168.1.71
192.168.1.72
192.168.1.78
192.168.1.80
3、编写启用此功能的shell脚本(qqdeny.sh)
# qqdeny.sh
/sbin/iptables -I FORWARD -p udp --dport 8000 -j DROP
/sbin/iptables -I FORWARD -p udp --sport 4000 -j DROP
/sbin/iptables -I FORWARD -p udp --sport 4001 -j DROP
/sbin/iptables -I FORWARD -p udp --sport 4002 -j DROP
for i in `cat /opt/qq/qqserverlist`;do /sbin/iptables -I FORWARD -d $i -j DROP;done
for p in `cat /opt/qq/permitiplist`;do /sbin/iptables -I FORWARD -s $p -j ACCEPT;done
注意:符合“`”是数字“1”左边字符。另外脚本必须具有执行权限。
4、编写取消此功能的shell脚本(qqundeny.sh)
# qqundeny.sh
/sbin/iptables -D FORWARD -p udp --dport 8000 -j DROP
/sbin/iptables -D FORWARD -p udp --sport 4000 -j DROP
/sbin/iptables -D FORWARD -p udp --sport 4001 -j DROP
/sbin/iptables -D FORWARD -p udp --sport 4002 -j DROP
for i in `cat /opt/qq/qqserverlist`;do /sbin/iptables -D FORWARD -d $i -j DROP;done
for p in `cat /opt/qq/permitiplist`;do /sbin/iptables -D FORWARD -s $p -j ACCEPT;done
5、将脚本放在linux服务器上
Linux服务器必须安装有Iptables组件。
将创建目录在/opt/qq
#mkdir /opt/qq
将上面四个文件(qqserverlist permitiplist qqdeny.sh qqundeny.sh)放在/opt/qq目
录下,让qqdeny.sh qqundeny.sh具有执行权限
#chmod 755 qqdeny.sh
#chmod 755 qqundeny.sh
测试执行:
启动封堵QQ
#sh qqdeny.sh
取消封堵QQ
#sh qqundeny.sh
6、让服务器启动时,自动启动QQ封堵功能
将qqdeny.sh设置为启动时自动启动
#vi /etc/rc.d/rc.local
增加
sh /opt/qq/qqdeny.sh
通过上面6步,你将实现在linux服务器下封堵QQ,在日常维护过程中你还是需要定时
维护QQ服务器列表qqserverlist。这样将能够实现最简单同时也是最有效封堵与放行QQ的方案。
下面是有关在Linux下实现网卡MAC地址与IP地址绑定。
在网络交换机二层的情况下,可以通过arp协议得到实现。
实现步骤:
1、编写ethers文件,然后存放在/etc/目录下
文件格式可以是如下:
192.168.1.40 00:D0:F8:0F:4B:98
192.168.1.44 00:01:37:D2:1A:F2
192.168.1.46 00:50:8D:D3:04:FF
192.168.1.48 00:C0:4C:38:10:31
192.168.1.50 00:E0:4C:E8:55:6C
192.168.1.51 00:01:29:F1:9F:CC
192.168.1.52 00:D0:F8:0F:45:E5
192.168.1.54 00:50:BA:29:D3:7C
192.168.1.62 00:D0:F8:0F:4B:7D
192.168.1.69 00:50:BA:E4:80:1F
192.168.1.70 00:0A:EB:3D:18:20
192.168.1.73 00:50:BA:70:71:EC
备注:防止使用其它IP,可以将其余IP地址全面设置为00:00:00:00:00:00:00:00,
你可以手工追加在上面文件ethers就可以。
2、执行arp命令
#arp -f
3、让系统自动启动可以填加到/etc/rc.d/rc.local
#vi /etc/rc.d/rc.local
增加命令arp -f

接下来随便介绍将Linux服务器作为NAT网关
通过上面介绍,我还觉得有些朋友还想知道怎么把服务器当为网关,做NAT路由功能的
网关。
当然很多朋友已经掌握了此方法。我这里做简单的介绍。
实现步骤
1、配置路由功能IP转发,编辑/etc/sysctl.conf
#vi /etc/sysctl.conf
修改参数net.ipv4.ip_forward = 1
下面是此文件的配置
# Kernel sysctl configuration file for Red Hat Linux
#
# For binary values, 0 is disabled, 1 is enabled. See sysctl(8) for
# more details.
# Controls IP packet forwarding
net.ipv4.ip_forward = 1
# Controls source route verification
net.ipv4.conf.default.rp_filter = 1
# Controls the System Request debugging functionality of the kernel
kernel.sysrq = 0
# Controls whether core dumps will append the PID to the core filename.
# Useful for debugging multi-threaded applications.
kernel.core_uses_pid = 1
2、编写一个NAT脚本,然后运行就可以
下面是有关NAT脚本,如文件名为nat.sh 存放在/opt/
# work pc
/sbin/iptables -t nat -D POSTROUTING -o eth0 -s 192.168.1.40 -j MASQUERADE
/sbin/iptables -t nat -A POSTROUTING -o eth0 -s 192.168.1.40 -j MASQUERADE
/sbin/iptables -t nat -D POSTROUTING -o eth0 -s 192.168.1.42 -j MASQUERADE
/sbin/iptables -t nat -A POSTROUTING -o eth0 -s 192.168.1.42 -j MASQUERADE
/sbin/iptables -t nat -D POSTROUTING -o eth0 -s 192.168.1.44 -j MASQUERADE
/sbin/iptables -t nat -A POSTROUTING -o eth0 -s 192.168.1.44 -j MASQUERADE
/sbin/iptables -t nat -D POSTROUTING -o eth0 -s 192.168.1.46 -j MASQUERADE
/sbin/iptables -t nat -A POSTROUTING -o eth0 -s 192.168.1.46 -j MASQUERADE
/sbin/iptables -t nat -D POSTROUTING -o eth0 -s 192.168.1.48 -j MASQUERADE
/sbin/iptables -t nat -A POSTROUTING -o eth0 -s 192.168.1.48 -j MASQUERADE
/sbin/iptables -t nat -D POSTROUTING -o eth0 -s 192.168.1.50 -j MASQUERADE
/sbin/iptables -t nat -A POSTROUTING -o eth0 -s 192.168.1.50 -j MASQUERADE
注:里面一行就删除规则,一行是增加规则,将相关要上让上外网的IP增加上就可以。
3、让系统自动启动
#vi /etc/rc.d/rc.local
增加命令sh /opt/nat.sh

小结:通过上面的实现,你将能够配置出一台免费的网络网关,具有封堵、放行某台电脑上外网、限制QQ上网等。
本系统在linux RedHat 7.3配置并使用过。电脑的要求不高,一般稳定的兼容机就可以信任。以上信息部分来自互联网做过相关参考。作者自己使用配置,效果也不错。整理后与大家分享与交流。

相关推荐

老谢的自留地 / 0评论 2020-05-31