My network configuration http://daveden.files.wordpress.com/2013/05/network-configuration.png
代理服务器在端口3128上运行带有SquID的Ubuntu,在端口8080上运行DansGuardian.
我想强制所有客户端使用代理服务器 – 特别是端口8080 – 进行任何http / httpS访问.
但是,我不想透明地重定向,因为这对httpS不起作用.我不介意配置每个客户端,我不介意每个客户端都知道它正在使用代理服务器.我只是不希望客户端能够在没有代理设置的情况下浏览网页.
我该怎么做呢?如果客户端未配置为在端口8080上使用代理服务器,是否可以丢弃数据包?
我尝试使用iptables丢弃具有8080以外的dport的数据包,但是我认为我拒绝了太多,我无法再访问任何东西.
编辑
我重写了这个问题,所以它不是特定于iptables的,但我并不反对使用iptables.我只想吸引更广泛的可能解决方案.
编辑2
我想我可能给了一些错误的印象.为了清楚起见,我完全没有兴趣过滤httpS流量(即,在代理处查看数据包并检查内容).我对使用DansGuardian阻止网站更感兴趣,无论是通过http还是httpS(通过查看数据包的目的地).
编辑3
根据Alexandru-Florin Vintil的建议,这是我目前正在做的事情:
# Redirect http traffic to port 8080 (DansGuardian)iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 8080# Check TCP and UDP traffic against whiteListiptables -A FORWARD -i eth1 -p tcp --dport 443 -j whiteListiptables -A FORWARD -i eth1 -p udp --dport 443 -j whiteList# Drop all other httpS trafficiptables -A FORWARD -i eth1 -p tcp --dport 443 -j DROPiptables -A FORWARD -i eth1 -p udp --dport 443 -j DROP# Drop all traffic aimed straight at the proxyiptables -A FORWARD -i eth1 -p tcp --dport 3128 -j DROPiptables -A FORWARD -i eth1 -p udp --dport 3128 -j DROPiptables -A FORWARD -i eth1 -p tcp --dport 8080 -j DROPiptables -A FORWARD -i eth1 -p udp --dport 8080 -j DROP
简而言之,将http流量重定向到端口8080,删除未列入白名单的所有httpS流量(在单独的链中),并删除明确使用代理的所有流量.如果没有最后一条规则,客户端可以使用httpS访问任何网站,只要他们将浏览器配置为使用代理,因为目标端口是8080而不是443.因此,即使丢弃绑定到443的所有流量也不会完全阻止httpS .
解决方法 我的2美分:关于http:让防火墙透明地将端口80流量转发到代理/过滤器是最简单的做事方式.无需客户端配置,您可以免除任何主机/子网使用代理,而无需重新配置客户端.这是唯一可以确保通过代理传递的所有内容的方法.
除阻止所有传出httpS 443流量以及仅允许基于允许传出端口443的ip的站点子集之外的任何方法都将无法按预期工作.设计了httpS的安全协议(除了一些缺陷)以防止中间人攻击(代理是“合法的”MITM).这样,httpS就可以执行它的设计目标.但是,如果你想要IGnorE httpS,你应该设置你的鱿鱼使用DIRECT而不是使用CONNECT(点击),但即使是这种情况,你仍然可能遇到有问题的网站,其中包含混合的http / httpS部分.这样,您的SquID代理也将管理httpS.这也应该反映在防火墙的透明转发部分中.
总结以上是内存溢出为你收集整理的linux – 强制客户端使用代理全部内容,希望文章能够帮你解决linux – 强制客户端使用代理所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)