« scode - MT Comment AntiSpam |
Main
| GFS »
January 11, 2005
Linux NAT 定时封禁 QQ 的解决方案步骤一
版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明。
https://windtear.net/archives/2005/01/11/000552.html
需求:
每天8:00~12:00 13:30~17:30 不允许访问QQ 其余时间允许
个别机器可以允许通过
解决方案 步骤:
1.采用端口封禁和目的地址封禁的方法 (crontab定时任务 脚本附后)
2.如果用squid做透明加速网关 可以匹配User-Agent 或者 dstdomain 为 .qq.com .tencent.com
然后进行封禁 (squid 的 acl 支持时间段)
3.考虑到现在qq服务器支持 UDP/8000 TCP/80 TCP/443 所以TCP/80和443比较难控制
我想到的就是通过匹配User-Agent了
4.允许个别通过 可以提供一个接口 文件或者数据库均可 然后服务器端监控变化
在脚本的最后通过-I 加到最前面允许通过
具体做法为:
# 2005-01-11 deny qq
0 8 * * * /root/bin/qqdeny.sh
0 12 * * * /root/bin/qqundeny.sh
30 13 * * * /root/bin/qqdeny.sh
30 17 * * * /root/bin/qqundeny.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 /etc/rc.d/qqserverlist`;do /sbin/iptables -I FORWARD -d $i -j DROP;done
# 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 /etc/rc.d/qqserverlist`;do /sbin/iptables -D FORWARD -d $i -j DROP;done
% cat qqserverlist
202.96.170.164
202.96.170.165
202.96.170.175
202.96.170.188
61.135.131.240
61.141.194.203
61.141.194.231
61.141.194.224
218.18.95.165
219.133.40.15
61.144.238.137
61.144.238.145
61.144.238.146
61.144.238.150
61.144.238.151
202.104.129.254
202.104.129.252
202.104.129.253
202.104.129.251
202.104.129.242
202.104.129.246
202.103.190.61
202.103.149.40
218.18.95.165
218.18.95.140
218.18.95.153
218.17.209.23
218.17.217.103
218.17.209.42
61.141.194.200
(地址参考了 http://www.itpub.net/241487,1.html 和水木新软件版网友补充) (有网友给出了 iptables 的用法帮助 贴出来 供初学者或查询参考 http://iptables-tutorial.frozentux.net/cn/iptables-tutorial-cn-1.1.19.html
|
|
Posted by windtear at January 11, 2005 8:11 PM