LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1928|回复: 21

squid封qq的问题

[复制链接]
发表于 2005-6-1 16:12:23 | 显示全部楼层 |阅读模式
http_port 192.168.35.1:3128
dns_nameservers 210.82.8.1 210.82.5.1
visible_hostname as3
cache_dir ufs /var/spool/squid 1000 24 256
cache_mem 80 MB
cache_swap_low 90
cache_swap_high 95
httpd_accel_host as3
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on
acl myclients src 192.168.35.0/24
acl all src 0.0.0.0/0.0.0.0

acl qq_1 url_regex -i qq
acl qq_2 url_regex -i tencent
acl qq_domain dstdomain tcpconn.tencent.com tcpconn2.tencent.com tcpconn3.tencent.com tcpconn4.tencent.com
acl qq_ip dst "/etc/squid/acl/qq_ip"

http_access deny qq_1
http_access deny qq_2
http_access deny qq_domain
http_access deny qq_ip
http_access allow myclients
http_access deny all

然后再创建"/etc/squid/acl/qq_ip"文件
添加了一些qq服务器的ip

但是,qq还是能登陆,我查看qq的登陆设置,显示登陆的是:tcpconn.tencent.com:443

可是我明明禁了tcpconn.tencent.com啊:
acl qq_domain dstdomain tcpconn.tencent.com tcpconn2.tencent.com tcpconn3.tencent.com tcpconn4.tencent.com
而且tcpconn.tencent.com 的ip是218.18.95.220
我在"/etc/squid/acl/qq_ip"文件里也添加了这个ip,还是没封住这个ip和域名,这是为什么呢?

ps:已经不能访问
www.qq.com和www.tencent.com
了,说明访问控制已经生效了。
是封ip和域名的访问控制段有问题吗?
发表于 2005-6-1 20:15:02 | 显示全部楼层
你还要把QQ网络高级设置里IP列表列进去
回复 支持 反对

使用道具 举报

发表于 2005-6-1 22:57:32 | 显示全部楼层
我看要彻底封住 QQ,恐怕真的只能通过抓包来实现,否则别人随便使用一个代理,就没办法了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-6-2 08:22:43 | 显示全部楼层
Post by 风暴地带
你还要把QQ网络高级设置里IP列表列进去

我知道服务器的ip还没填全
但是,既然已经填了tcpconn.tencent.com(218.18.95.220),那么qq就应该不能再用这个ip登陆了,可是现在还能。
我怀疑是不是还没封住这个ip啊?
squid高手帮忙看看配置文件有问题吗?
回复 支持 反对

使用道具 举报

发表于 2005-6-2 14:38:37 | 显示全部楼层
会不会是你在“squid和iptables的关系”的帖子中问到的原因?你的 iptables 是否已经禁止了处 squid 外的其他对外连接请求?我觉得可以先用传统的 3128 端口试试看,在 QQ 中设置一下代理。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-6-3 10:27:33 | 显示全部楼层
ok
测试下先
thanks
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-6-6 13:51:58 | 显示全部楼层
经过几天的试验
发现确实是iptables没有禁止除squid外的连接
只用squid时,能封住
加上iptables就不行了
我的脚本:

#!/bin/bash
echo "Starting Iptables Rules..."
echo "1" > /proc/sys/net/ipv4/ip_forward
inet_iface="eth1"
inet_ip="218.107.130.52"
lan_iface="eth0"
lan_ip="192.168.35.1"
lan_ip_range="192.18.35.0/24"
ipt="/sbin/iptables"

http_server="192.168.35.7"
http="80"
sql_server="192.168.35.201"
sql="1433"
ftp_server="192.168.35.7"
ftp="21"
mail_server="192.168.35.7"
pop3="110"
smtp="25"

/sbin/depmod -a
/sbin/modprobe ip_tables
/sbin/modprobe iptable_nat
/sbin/modprobe ip_nat_ftp
/sbin/modprobe ipt_LOG

$ipt -A INPUT -s $lan_ip -p tcp --dport 80 -j ACCEPT
$ipt -A INPUT -s $lan_ip -p tcp --sport 80 -j ACCEPT
$ipt -A INPUT -j DROP
$ipt -A FORWARD -s $lan_ip -p tcp --dport 80 -j ACCEPT
$ipt -A FORWARD -s $lan_ip -p tcp --sport 80 -j ACCEPT
$ipt -A FORWARD -j DROP

for TABLE in filter nat mangle ; do
$ipt -t $TABLE -F
$ipt -t $TABLE -X
done

$ipt -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
for DNS in $(grep ^n /etc/resolv.conf|awk '{print $2}') ; do
$ipt -A INPUT -p udp -s $DNS --sport domain -j ACCEPT
done

#$ipt -N LOGDENY
#$ipt -A LOGDENY -j LOG --log-prefix "iptables:"
#$ipt -A LOGDENY -j DROP
#$ipt -A INPUT -i ! lo -m state --state NEW,INVALID -j LOGDENY

$ipt -t nat -A POSTROUTING -o $inet_iface -j SNAT --to $inet_ip

$ipt -t nat -A PREROUTING -i $lan_iface -p tcp --dport 80 -j REDIRECT --to-ports 3128

$ipt -t nat -A PREROUTING --dst $inet_ip -p tcp --dport $http -j DNAT --to-destination $http_server
$ipt -t nat -A POSTROUTING -p tcp --dst $http_server --dport $http -j SNAT --to-source $lan_ip
$ipt -t nat -A OUTPUT --dst $inet_ip -p tcp --dport $http -j DNAT --to-destination $http_server

$ipt -t nat -A PREROUTING --dst $inet_ip -p tcp --dport $sql -j DNAT --to-destination $sql_server
$ipt -t nat -A POSTROUTING -p tcp --dst $sql_server --dport $sql -j SNAT --to-source $lan_ip

$ipt -t nat -A PREROUTING --dst $inet_ip -p tcp --dport $ftp -j DNAT --to-destination $ftp_server
$ipt -t nat -A POSTROUTING -p tcp --dst $ftp_server --dport $ftp -j SNAT --to-source $lan_ip
$ipt -t nat -A OUTPUT --dst $inet_ip -p tcp --dport $ftp -j DNAT --to-destination $ftp_server

echo "done"
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-6-6 13:57:09 | 显示全部楼层
说明一下
必须开input的输入,才能发布内网的服务
$ipt -A INPUT -s $lan_ip -p tcp --dport 80 -j ACCEPT
$ipt -A INPUT -s $lan_ip -p tcp --sport 80 -j ACCEPT
$ipt -A INPUT -j DROP
我只开了80端口,把其他的都drop掉了
可是qq还是能上了
如果我把这三行都去掉(脚本中不写关于input的内容,就像没有output的内容一样)
qq就登陆不上了

应该怎么修改脚本呢?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-6-6 14:15:28 | 显示全部楼层
我晕
没有
$ipt -A INPUT -s $lan_ip -p tcp --dport 80 -j ACCEPT
$ipt -A INPUT -s $lan_ip -p tcp --sport 80 -j ACCEPT
$ipt -A INPUT -j DROP
qq还能上,说明除了squid,iptables还允许其他的连接
我的脚本是这样的:
#!/bin/bash
echo "Starting Iptables Rules..."
echo "1" > /proc/sys/net/ipv4/ip_forward
inet_iface="eth1"
inet_ip="218.107.130.52"
lan_iface="eth0"
lan_ip="192.168.35.1"
lan_ip_range="192.18.35.0/24"
ipt="/sbin/iptables"

http_server="192.168.35.7"
http="80"
sql_server="192.168.35.201"
sql="1433"
ftp_server="192.168.35.7"
ftp="21"
mail_server="192.168.35.7"
pop3="110"
smtp="25"

/sbin/depmod -a
/sbin/modprobe ip_tables
/sbin/modprobe iptable_nat
/sbin/modprobe ip_nat_ftp

$ipt -A FORWARD -s $lan_ip -p tcp --dport 80 -j ACCEPT
$ipt -A FORWARD -s $lan_ip -p tcp --sport 80 -j ACCEPT
$ipt -A FORWARD -j DROP

for TABLE in filter nat mangle ; do
$ipt -t $TABLE -F
$ipt -t $TABLE -X
done

$ipt -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
for DNS in $(grep ^n /etc/resolv.conf|awk '{print $2}') ; do
$ipt -A INPUT -p udp -s $DNS --sport domain -j ACCEPT
done

$ipt -t nat -A POSTROUTING -o $inet_iface -j SNAT --to $inet_ip

$ipt -t nat -A PREROUTING -i $lan_iface -p tcp --dport 80 -j REDIRECT --to-ports 3128

$ipt -t nat -A PREROUTING --dst $inet_ip -p tcp --dport $http -j DNAT --to-destination $http_server
$ipt -t nat -A POSTROUTING -p tcp --dst $http_server --dport $http -j SNAT --to-source $lan_ip
$ipt -t nat -A OUTPUT --dst $inet_ip -p tcp --dport $http -j DNAT --to-destination $http_server

$ipt -t nat -A PREROUTING --dst $inet_ip -p tcp --dport $sql -j DNAT --to-destination $sql_server
$ipt -t nat -A POSTROUTING -p tcp --dst $sql_server --dport $sql -j SNAT --to-source $lan_ip

$ipt -t nat -A PREROUTING --dst $inet_ip -p tcp --dport $ftp -j DNAT --to-destination $ftp_server
$ipt -t nat -A POSTROUTING -p tcp --dst $ftp_server --dport $ftp -j SNAT --to-source $lan_ip
$ipt -t nat -A OUTPUT --dst $inet_ip -p tcp --dport $ftp -j DNAT --to-destination $ftp_server

echo "done"

发布内网的服务也没有问题
回复 支持 反对

使用道具 举报

发表于 2005-6-6 17:35:44 | 显示全部楼层
在squid.conf当中封住如下几个就可以搞定了。
#QQ domain
acl baddomains dstdomain .qq.com
#QQ servers
acl badips dst 218.18.95.0/24
acl badips dst 218.17.209.0/24
acl badips dst 61.144.238.0/24
acl badips dst 219.133.49.0/24
acl badips dst 219.133.38.0/24

http_access deny baddomains
http_access deny badips
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表