我已经search了很多个小时,为SSL(而不是Squid)设置透明代理的方法。 一般的答案是我不能,但我知道有一些方法 。 我的目的只是以下几点:
下面的页面告诉我可以通过未经修改的stream量,但它没有说明: iptables https透明代理与privoxy?
下面的页面显示了一个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创buildHTTPS(443)通过鱿鱼周围? “最好的办法是阻止对端口443的直接访问,并告诉用户如果他们想使用HTTPS,他们必须configuration他们的浏览器来使用代理。” 但是我只知道如何完全阻止443,而不是在代理下工作。
如果你想过滤域名,你有两种可能的方法:你可以从客户端发出的CONNECT方法中获取名称,如果它知道它必须使用HTTPS conenctions的代理并对其进行过滤(Squid支持BTW)。 或者,如果您确实需要透明地执行此操作,则需要查看(encryption的)请求标头。
如果你想看到encryption的请求头,你需要有一个密钥。 如果你想拥有一个密钥,你需要一个证书,它被客户信任为“正确的”证书,并且b)certificate每个可能的主机(通配符)。
所以你需要做的是
大多数情况下,如果你需要透明的代理,这是因为你不想或不能重新configuration客户端使用代理。 如果您的请求也属于这种情况,那么您可能无法在客户端上安装证书,并将其标记为“可信”。 所以,即使透明的SSL代理有一个技术方法,我怀疑你没有太多的收获。
我知道这是一个老问题,但是如果OP只想将某些域名列入黑名单或白名单,他们根本不需要使用代理,他们可以使用基于DNS的黑名单。
任何其他域将被允许。 所有networkingstream量SSL或其他方式都将不经过网关。
代表可以作为HTTPS 的中间人代理工作。
对于透明模式, 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下添加规则以及http内容filter。