![浏览时阻止所有非 HTTPS 流量](https://linux22.com/image/1560535/%E6%B5%8F%E8%A7%88%E6%97%B6%E9%98%BB%E6%AD%A2%E6%89%80%E6%9C%89%E9%9D%9E%20HTTPS%20%E6%B5%81%E9%87%8F.png)
我正在尝试批准从外部 Windows 系统进入我们公司网络的防火墙规则,以访问代理并返回到互联网。我的需求将涉及使用 Web 浏览器,例如提供用户名/密码。我的公司要求所有防火墙规则都只有通过它们的加密流量。虽然传输到代理本身是未加密的,但批准者已澄清,只要通过防火墙的数据包本身是加密的(例如访问基于 TLS(HTTPS)的网站),就可以接受。
我的问题是,如何确保浏览时只允许 HTTPS 流量的请求?
激进的解决方案是仅使用curl
and/or wget
,手动解析 HTML 并根据响应手动发送请求,确保每次都使用 HTTPS。除了显然需要大量时间之外,这还意味着启用 javascript 的页面等将无法按预期工作。
我愿意接受各种解决方案,例如:
- Firefox/Chrome 插件
- 在外部机器上运行本地代理(例如 CNTLM),只有当 URL 与某种模式匹配时才转发到远程代理(我查看了 CNTLM 手册,但找不到它列出的任何命令行或配置选项以仅允许某些 URL 模式)
- 使用提供此类选项的特殊浏览器
- 有没有办法配置代理隧道(记住它必须在 Windows 上可用),它在一侧加密流量,在另一侧解密,那么这一切都没有必要
请注意,我不需要担心除我的 Web 浏览器之外的其他应用程序发送的流量,因为这仅适用于我在该应用程序中专门配置了代理的情况
答案1
有没有办法配置代理隧道(记住它必须在 Windows 上可用),它在一侧加密流量,在另一侧解密,那么这一切都没有必要
是的——最常见的情况是,你会使用 VPN(例如 IKEv2、OpenVPN 或某些专有产品),因为它可以加密全部IP 流量并不仅限于 HTTP。外部网络上的人们使用 VPN 软件连接回公司 LAN 的情况非常普遍。
还有一些软件可以通过 TLS 隧道传输单个 TCP 连接,例如 stunnel。
我建议要求使用 VPN 或其他安全传输是最好的方法,因为它可以在公司方面强制执行政策,并避免客户端丢失/“忘记”其配置等事故。
另一方面,通过 VPN 接入公司网络仅有的保护你和代理之间的通信,但不执行任何强制请求转发出去通过代理访问是安全的。(我不知道你的策略是只针对传入连接还是也针对传出连接。)如果是一项要求,应该在代理本身上实现。
Firefox/Chrome 插件
对于手动配置,Firefox 支持 HTTP 和 HTTPS(“SSL”)的单独代理服务器地址;它曾经具有用于配置每个站点的扩展。
许多浏览器都支持PAC 文件它可以具有基于 URL 的代理选择自定义逻辑。