透明的SSL代理神话和事实


8

我一直在搜索许多小时,有关为SSL(不是Squid)设置透明代理的方法。普遍的答案是我不能,但是我知道有一些方法。我的目的只有以下几点:

  1. 黑名单/白名单域名(不是IP号)。内容将不会被过滤或修改。
  2. 强制用户浏览这些列表。如果我在网络浏览器中修改了此类设置,则可以撤消该设置。

以下页面告诉我我可以不加修改地通过流量,但没有说明如何: iptables使用privoxy的https透明代理?

下一页显示了443的iptables规则,我本人无法使用:http : //alien.slackbook.org/dokuwiki/doku.php?id=slackware : proxy

以下页面介绍了如何使其仅与Squid一起使用:http : //www.rahulpahade.com/content/squid-transparent-proxy-over-ssl-https

编辑:一个人在这里说: 我如何使用IPTABLES在Squid周围创建HTTPS(443)传递? “最好的做法是阻止对端口443的直接访问,并告诉用户如果他们要使用HTTPS,则必须将其浏览器配置为使用代理。” 但是我只知道如何完全阻止443,而不是让它在代理下工作。

Answers:


7

如果要过滤域名,则有两种可能的方法:如果客户端知道必须对HTTPS连接使用代理并对其进行过滤,则可以从客户端发出的CONNECT方法中获取名称(Squids支持该方法)。顺便说一句)。或者,如果您确实 确实需要透明地进行操作,则需要查看(加密的)请求标头。

如果要查看加密的请求标头,则需要一个密钥。如果您想拥有一个密钥,则需要一个证书,该证书是:a)客户端信任的证书,它是“正确的”证书; b)认证每个可能的主机(通配符所有)。

所以您需要做的是

  1. 为您的代理设置证书。这取决于您的软件如何执行-您可能使用stunnel在代理端终止SSL连接,在其后面具有一些过滤HTTP代理,并使用iptables DNAT目标为所有传出流量重新建立SSL并再次使用stunnel。也可能有针对MitM SSL代理的“盒装”解决方案。
  2. 在将要使用代理的所有客户端上安装上述证书

通常,如果您需要透明代理,这是因为您不希望或无法重新配置客户端以使用代理。如果您的请求也是如此,则您可能无法选择在客户端上安装证书并将其标记为“受信任”。因此,即使有透明的SSL代理的技术方法,我怀疑也不会为您赢得多少收益。


这足以使我很清楚有关透明代理的事实。谢谢!
Teresa e Junior

您如何“ ...从客户端发出的CONNECT方法中获取名称,如果它知道它必须对HTTPS连接使用代理并对其进行过滤”?
2013年

使用Squid的@ davidkennedy85与过滤其他访问方法的方式几乎相同-只需使用ACL。例如:servercomputing.blogspot.de/2012/01/...
所述-wabbit

您的解释大多是难以理解的;我学到了很多。谢谢。有人认为我对此表示怀疑,那就是监视流量的任何人都知道主机名(域名)。security.stackexchange.com/questions/2914/...
阿尔伯特Netymk

4

我知道这是一个老问题,但是如果OP仅想将某些域名列入黑名单/白名单,那么他们根本就不必使用代理,他们可以只使用基于DNS的黑名单。

  • 设置您的现场DNS服务器为您要列入黑名单的任何域返回127.0.0.1
  • 在您的Internet网关上,除了DNS服务器之外的所有IP都将无法访问TCP / UDP端口53,因此只有您的DNS服务器才能从基于Internet的服务器发出DNS请求。

任何其他域都将被允许。所有Web流量SSL或其他方式的流量都将原样通过网关。

编辑:看到OP准备强迫用户通过他的列表,他可以阻止其他访问DNS的方法。这样,如果用户尝试使用被阻止的其他DNS方法之一,则该网站将无法正常工作。亦称“我的路还是高速公路”

对于@wheeler提到的基于HTTPS的DNS,您可以仅阻止对https://dns.google.comhttps://cloudflare-dns.com/dns-queryhttps://这样的站点进行常规DNS查找doh.cleanbrowsing.org/doh/family-filter/。尽管随着越来越多的服务联机,这将很快变得难以为继。

您可能还需要一种阻止MIME类型的方法,例如针对正在开发的其他DNS方法的application / dns-udpwireformat。


不再是一种非常有效的解决方案,因为现在将HTTP-over-HTTPS视为是一件事情。
惠勒

2

委托可以用作HTTPS 的中间人代理。


谢谢,的确如此,但是我无法使它正常工作!似乎它需要与用于端口80的iptables规则不同的iptables规则,或者有一些我无法确定的代表选择。
Teresa e Junior

1

对于透明模式,Inline IPS(Suricata,Snort)系统可以帮助您阻止SSL站点。

https://redmine.openinfosecfoundation.org/projects/suricata/wiki/Setting_up_IPSinline_for_Linux

阻止特定用户的SSL网站规则:

drop ip any 443 -> 192.168.3.x any (content:".facebook.com"; msg:"Simplewall block facebook.com  ";sid:7;rev:1;)

drop ip any 443 -> 192.168.3.204 any (content:".youtube"; msg:"Simplewall block youtube.com" ;sid:4;rev:1;)

基于扩展名的阻止文件下载规则:

drop ip any any -> 192.168.3.63 any (msg:"File exe block"; fileext:"exe"; filestore ;sid:1;rev:1;)

drop ip any ssl -> 192.168.3.63 any (msg:"File mp3 block"; fileext:"mp3"; filestore ;sid:11;rev:1;)

drop ip any ssl -> 192.168.3.63 any (msg:"File pdf block"; fileext:"pdf"; filestore ;sid:21;rev:1;)

使用SimpleWall尝试一下

使用Simplewall Web界面添加阻止规则非常简单。

您还可以将Simplewall => Content Filter使用相同规则的IPS规则与http内容过滤器一起添加。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.