更新日期:

pfSense中的Squid代理服务拦截HTTPS流量

作者:

山姆是一家算法交易公司的网络分析师。他获得了UMKC的信息技术学士学位。

在pfsense中使用squid代理拦截https流量

鱿鱼简介

鱿鱼已成为最受欢迎的鱼类之一流行的包对于pfSense防火墙,不难看出原因。

Squid代理服务器可以通过保留通常访问的网页、图像和其他文件的本地缓存来提高网络性能。此外,Squid可以监控流量,并记录您网络上的用户正在查看的网页。

为了充分利用Squid的好处,我建议花点时间正确启用HTTPS拦截。

本指南假设您已经启动并运行了pfSense防火墙。如果你还没有,你可以很容易地安装pfSense在一台旧电脑上,你可能已经有了。

为什么应该在Squid中启用HTTPS拦截

默认情况下,Squid代理服务器无法监视加密的HTTPS流量。Squid只需建立到目标服务器的TCP连接,并用HTTP 200响应响应客户端,以指示连接已建立。

一旦这个加密通道已经建立,Squid在客户端和服务器之间传递数据包,但由于受到SSL加密的保护,它不再对流量有任何可见性。

在过去的几年里,许多热门网站,包括谷歌、YouTube、Reddit和Facebook,已经开始默认启用HTTPS加密。这意味着如果不配置HTTPS拦截,Squid代理具有有限的过滤、监视和日志记录功能。

幸运的是,Squid支持中间人SSL过滤,这将允许您更有效地监视通过代理服务器的流量。

可以使用Squid中的SSL拦截功能检查加密的HTTPS流量。

可以使用Squid中的SSL拦截功能检查加密的HTTPS流量。

步骤1:安装Squid3软件包

要开始安装,请使用pfSense包管理器(系统\软件包).

从包列表中找到Squid3后,单击包右侧的加号按钮,开始安装包。

包管理器将自动下载并安装Squid3 PBI。

从pfSense软件包管理器安装Squid3软件包。

从pfSense软件包管理器安装Squid3软件包。

Squid3软件包安装进度。

Squid3软件包安装进度。

步骤2:配置Squid常规设置

安装Squid软件包后,必须配置常规设置。可以在中找到设置页面服务\Squid代理服务器

配置以下选项:

  1. 使鱿鱼代理- - -检查
  2. 保持设置/数据- - -检查
  3. 代理接口(年代)-选择LAN和环回

“常规设置”区域中的其他设置可以保留在默认设置上。

pfSense中的Squid3常规设置页面

pfSense中的Squid3常规设置页面

步骤3:配置透明代理设置

在“常规设置”下面,您将看到透明代理设置。在大多数情况下,您可能希望启用透明代理模式。启用此模式时,防火墙将自动将所有传入的web流量重定向到Squid代理服务器。

启用透明模式后,无需将客户端的web浏览器配置为使用代理。在大多数情况下,客户机甚至不会注意到他们的流量正在通过代理。

要启用透明代理,需要进行以下设置:

  1. 透明的HTTP代理- - -检查
  2. 透明代理接口-局域网

本节中的其他设置可以保持默认设置,除非您希望配置特定的地址以绕过代理。

向下滚动至页面底部,然后单击保存以应用设置

如果您决定不启用透明模式,则需要为希望使用代理服务器的每个客户端配置web浏览器设置。

pfSense中的Squid3透明代理设置。

pfSense中的Squid3透明代理设置。

此时,您已经配置了一个在透明模式下运行的基本Squid代理。在继续之前,我建议从客户端计算机测试web浏览功能,以确保一切正常工作。

在继续启用SSL拦截之前,使用基本代理功能对任何问题进行故障排除和解决。

步骤4:配置证书颁发机构

在Squid中开启HTTPS拦截功能之前,必须先在pfSense中配置证书颁发机构。该CA将用于动态生成新的客户端SSL证书,以自动加密和解密web通信。

  1. 访问中的证书管理器系统\证书管理器菜单。
  2. 点击加号按钮创建新的证书颁发机构

为新证书颁发机构配置以下设置。

  1. 描述性名称-为您的CA选择一个名称。请记住,该名称将显示在客户端可见的客户端证书上。
  2. 方法-从下拉菜单中选择“创建内部证书颁发机构”。
  3. 键长-我推荐2048的最大兼容性,但你可以使用4096位的最大安全性。
  4. 摘要算法-使用SHA256或更高版本。与前面的设置一样,您需要平衡安全性和设备兼容性。
  5. 一生-将此设置为3650天(10年)
  6. -填写该部分的所有字段(国家、州等)。这些都将在客户端看到的证书中可见。

单击保存按钮完成CA的创建。

在pfSense中创建新的证书颁发机构。

在pfSense中创建新的证书颁发机构。

步骤5:导出CA证书

创建新CA后,必须导出CA证书。此证书需要安装在将使用代理服务器的任何客户端计算机上。

在CA管理器页面中,单击出口证书按钮下载证书。这将下载CA证书的。crt文件格式的副本。

从pfSense证书颁发机构管理器导出CA证书。

从pfSense证书颁发机构管理器导出CA证书。

步骤6:将CA证书安装到客户端计算机

为了防止客户端计算机上的浏览器显示证书错误,必须在所有使用代理服务器的客户端计算机上安装pfSense CA的CA证书。

跳过此步骤将导致客户端接收到浏览器安全错误,并可能导致各种HTTPS连接问题。

证书必须放在受信任的根证书颁发机构存储区以防止浏览器错误。

如果您的网络上只有少量的计算机,那么在每台计算机上手动导入证书可能是最简单的方法。

对于较大的网络,您应该考虑设置Microsoft Active Directory证书服务。ad集成的证书颁发机构可以自动向属于该域的主机推出根证书。

Windows 7下导入证书

要将证书导入运行Windows 7的计算机,请双击.crt文件以打开“证书”对话框。

  1. 点击安装证书按钮启动导入向导。
  2. 单击下一步在证书导入向导的第一页。
  3. 选择该选项将所有证书放入以下存储区
  4. 单击浏览按钮并选择受信任的根证书颁发机构。
  5. 单击下一步然后单击finish在导入确认页面上。
  6. 出现提示时,单击“是”确认安全警告

您应该会看到一条消息,指示证书导入已成功完成。

在Mac OS X上导入证书

请按照以下步骤在Mac OS X上手动导入证书。

  1. 打开Keychain Access应用程序-使用spotlight搜索轻松查找此应用程序。
  2. 点击锁定符号为改变打开钥匙链。
  3. 打开“文件”菜单选择Import物品。
  4. 选择CA证书从pfSense出口(此时,您应该在密钥链中看到证书,并显示消息“此根证书不受信任”)
  5. 双击证书并展开对话框的信任部分。在第一个名为“使用此证书时”的下拉框中选择总是信任。
  6. 关闭对话框并退出钥匙链访问应用程序。

步骤7:启用SSL人中间过滤

将证书加载到客户端计算机之后,就可以在Squid中启用SSL过滤了。进入鱿鱼设置页面(服务\Squid代理服务器)并配置下面的设置。

  1. HTTPS/SSL拦截- - -检查
  2. SSL截获接口——选择局域网
  3. CA—选择步骤4中创建的证书颁发机构

单击页面底部的“保存”以应用设置。

在PSFSESE中间设置的SUID3 SSL人

在PSFSESE中间设置的SUID3 SSL人

步骤8:测试SSL拦截

启用SSL拦截后的最佳实践是确认它按预期工作。按照以下步骤验证代理正在解密HTTPS连接。

  1. 访问使用HTTPS的站点,例如Reddit,从代理后面的客户端计算机。
  2. 查看证书信息由web浏览器显示。在Chrome中,这可以通过单击地址栏上的锁定符号来完成。
  3. 确认证书颁发者信息与您在步骤4中创建证书颁发机构时输入的信息匹配。

Squid 3.4中的已知问题

pfSense软件包管理器当前包含Squid版本3.4,该版本存在一个已知问题,即它错误地生成SHA1证书而不是SHA256。

由于SHA1是一种弱算法,许多浏览器在遇到使用该算法签名的证书时都会显示错误。

为了解决这个问题,我建议手动升级到Squid版本3.5.3,它没有这个问题。

升级到Squid 3.5.3

根据您运行的是32位还是64位版本的pfSense,升级指令略有不同。

要确定您使用的是哪个版本,请打开pfSense仪表板检查系统信息仪表板小部件的版本部分.如果看到AMD64,那么按照64位指令操作。如果看到i386,则使用32位指令。

命令可以通过SSH终端,或网上终端机(诊断\命令提示符

64位(AMD64)指令

  1. 通过运行以下命令下载PBI:取来https://files.pfsense.org/packages/10/All/squid-3.5.3-amd64.pbi
  2. 通过运行以下命令安装程序包:Pbi_add——no-checksig -f squid-3.5.3-amd64.pbi
  3. 运行下面的命令来创建正确的目录结构

CD /usr/pbi/squid-amd64/ rm -rf /usr/pbi/squid-amd64/etc-s /usr/pbi/squid-amd64/local/lib . txt /lib . txt-s /usr/pbi/squid-amd64/local/libexec . log . log . log-s /usr/pbi/squid-amd64/local/share . txt文件/usr/pbi/squid-amd64/bin

运行以上命令后重新启动pfSense (诊断\重新启动).

32位(i386)指令

  1. 通过运行以下命令下载PBI:取来https://files.pfsense.org/packages/10/All/squid-3.5.3-i386.pbi
  2. 通过运行以下命令安装程序包:pbi_添加——无检查信号-f squid-3.5.3-i386.pbi
  3. 运行下面的命令来创建正确的目录结构

cd/usr/pbi/squid-i386/rm-rf/usr/pbi/squid-i386/etc ln-s/usr/pbi/squid-i386/local/etc。ln-s/usr/pbi/squid-i386/local/lib。ln-s/usr/pbi/squid-i386/local/libexec。ln-s/usr/pbi/squid-i386/local/share。ln-s/usr/pbi/squid-i386/bin sbin

运行以上命令后重新启动pfSense (诊断\重新启动).

验证Squid 3.5.3的安装

重新启动pfSense后,启动一个新的SSH会话(或使用web终端)来验证更新的包是否正确安装。

当您运行下面的命令时,您应该会看到输出中列出的版本3.5.3。

/usr/local/sbin/squid - v

检查Squid 3.5.3是否正确安装。

检查Squid 3.5.3是否正确安装。

完成

祝贺您,如果您完成了上述所有步骤,那么您已经成功地将Squid配置为拦截加密的HTTPS流量。您应该立即注意到HTTPS请求被记录在Squid访问日志中。

要充分利用正在收集的新访问日志,我建议安装一个Squid日志分析器,例如Lightsquid

据作者所知,这篇文章准确、真实。内容仅用于信息或娱乐目的,不能替代商业、金融、法律或技术事务中的个人顾问或专业建议。

©2016 Sam Kear

评论

穆罕默德·艾哈迈德·拉扎2018年10月29日:

亲爱的先生,

我们遇到了SSL拦截的问题。在pfsense的最新版本中,我们启用了SSL拦截与Splice白名单碰撞。有了这个选项,一切都很顺利。当打开HTTPS网站显示内部ca。但在这个选项应用程序中,移动应用程序无法工作。

如果我们选择Splice ALL选项,所有https网站开始使用GlobalSign证书,没有什么被阻止。

请分享您的专业知识。

问候

丹尼斯2018年8月28日:

我还想知道如何将Squid HTTPS拦截与Suricata或Snort一起使用。我的兴趣不在于内容过滤/日志记录,而在于恶意软件的检测和预防。谢谢

道格2018年3月19日:

有没有办法让Suricata检查解密的流量?

萨达里克哈穆迪2018年2月4日:

如果我们在这种情况下使用手机,我们必须做什么?

如果我们想让证书自动注入

2018年1月08日:

您好,我想知道在Pfsense配置中启用“man in the middle SSL filtering”是否存在安全问题

bilal940212017年11月30日:

亲爱的先生,

我在客户端和浏览器上安装SSL证书,当我浏览一些东西时,浏览器显示ERR_SSL_PROTOCOL_ERROR。

Avithus2017年10月20日:

神奇的指导! !我有一个小问题,我的办公室里有150台左右的电脑,有没有办法一次把证书安装到所有的电脑上?或远程吗?

萨钦192017年10月16日:

你好先生,

如何在整个网络(作为互联网服务提供商)中阻止facebook/youtube页面(动态内容过滤)。

佛朗哥2017年9月12日:

我也遇到过类似的问题,如下所述,我尝试了一下,找到了适合我的解决方案。

与银行网站访问和获得错误:去SQUID代理服务器- SSL人中间。将SSL/MITM模式设置为“全部拼接”。然后转到远程证书检查和high-lite“接受有错误的远程服务器证书”。这起到了作用,可以访问银行和其他ssl站点,而不会出现任何错误。

澄清一下,我有黑名单选项的问题。我重新安装了鱿鱼守卫,没有再做黑名单选项。我手动进入目标类别并在那里列出了我的黑名单。

我知道有些可能有更好的解决方案,所以,如果你不喜欢我所做的对我有用的事情,请不要把这当作最好的最终解决方案。

野生的翅膀2017年9月8日:

对大卫来说,

这是因为现在的用户通过使用https访问普通社交媒体或其他被屏蔽/政策禁止的网站,从而绕过了安全设置和政策。大多数公司和政府机构都有网络可接受的使用策略,这些策略清楚地表明,当使用它们的资产时,您将受到监视,以及它们的可接受使用策略。如果它与工作无关,那么就不要使用公司资产。如果你不喜欢的话,回家用你的个人电脑。简单来说,绕过公司的安全措施,这些措施会过滤和阻止你访问网站,这可能会让公司陷入诉讼境地,你可能而且应该被解雇。这是确保上述过滤仍然可以完成并保护公司的又一个步骤。

奥布里兆瓦2017年6月20日:

请参考pfsense 2.3.4-RELEASE(amd64)写下同样的内容好吗

科比2017年6月2日:

你好,我用的是最新版本的pfsense鱿鱼和鱿鱼卫士。我在Squid代理服务器上启用了SSL Man In the Middle Filtering功能来拦截https网站。然而,当启用时,我不能连接到某些messenger应用程序(例如。松弛,bbm, skype)。你知道为什么连接到这些应用总是在尝试吗?

塞格斯2017年5月18日:

嗨。有没有什么方法可以缓存https而不安装证书在我的网络上的每个客户端??我有最新版本的pfsense 2.3.4-RELEASE (amd64)

建于2017年CDT 5月03日星期三15:13:29

我的pfsense盒子上安装了FreeBSD 10.3-RELEASE-p19。

非常感谢。

塞格斯2017年5月18日:

嗨。有没有什么方法可以缓存https而不安装证书在我的网络上的每个客户端??我有最新版本的pfsense 2.3.4-RELEASE (amd64)

建于2017年CDT 5月03日星期三15:13:29

我的pfsense盒子上安装了FreeBSD 10.3-RELEASE-p19。

非常感谢。

迪帕克2017年4月12日:

你好,山姆,

从某种意义上说,这个指南对我很有效。

我想使用vpn从家庭网络访问办公室网络,请建议。

Sheffy2017年3月25日:

我可以使用让我们加密' CA拦截HTTPS流量吗?

克劳迪奥2017年3月15日:

嗨,我想只授予访问一些网站,这是我所做的:

例如,我在白名单中列出了允许访问的网站

google.com

utorrent.com

在我的黑名单里阻止其他的。

正常的HTTP网站被允许或阻止正确,因为他们在WL或不,而HTTPS网站都是允许的,为什么?

如何阻止不在WL中的HTTPS网站?

我也试着把^。在提单上,但没有任何变化。

谢谢,

克劳迪奥。

瓦多普兰科酒店2017年3月12日:

你好它的工作原理很有魅力,但当协议为https时,加载页面的速度非常慢。我如何克服这个问题?

提前谢谢! !

会长Patricio2017年2月17日:

您好,我一步一步地实现了它,它工作得非常完美,除了当我想进入银行网站时,他们拒绝证书,不允许我登录。你能帮我吗?

使用OpenLDAP进行Pfsense认证2017年1月30日:

先生

我是PFSense的新手,我已经安装并配置了PFSense,它工作正常。

我已经设置了openLDAP服务器来创建用户,并希望通过PFsense对这些用户进行身份验证,以便我可以在用户ID身份验证的基础上向用户提供internet。

但我无法实现我的目标,请指导我如何做到这一点。

我的PFsense防火墙ip为192.168.1.1

我的OpenLDAP服务器ip是192.168.1.4

谢谢提前

大卫2017年1月18日:

**在客户端机器上安装证书并不是欺骗发生的必要条件,但客户端浏览器将在任何https网站上显示证书警告。由于这些警告,只有在将证书部署到客户端系统时才真正可行。

建立伪造的证书服务器和欺骗客户端机器的信任设置来窃听私有通信。这就是欺骗的本质。我发现,这样做的人不太可能提前通知用户,他们的加密https通信已经被暴露并被监控。

*幸运的SQUID支持中间SSL过滤中的人

更常被称为“中间人攻击”,而且有很好的理由。

证书颁发机构存在是有目的的。一旦这个目的被破坏,信任就失去了,每个人都失去了。如果你可以窃听你的用户,那么你的上游供应商也可以窃听你,对吗?

顺便说一句,我想不出有什么诚实或合乎道德的应用。您故意破坏https,然后以一种最终用户不会立即看到的方式修改客户端信任机制。如果你想阻止访问像reddit和youtube这样的网站,只要这样做。否则,您就违反了用户对隐私的合理期望。根据地点的不同,你也违反了法律。

还有一个原因是,每个人都应该一直使用良好、可靠的VPN服务。

**山姆是一家算法交易公司的网络分析师

哇。我很高兴我不在那里工作。

**我访问了北美的许多主要金融数据中心,安装新设备并解决问题

哦,妈的。好的。我们完蛋了。

umair9752016年12月24日:

2.3.2 PFSense…启用SSL拦截与透明代理和内部CA..获得证书错误. .

我的目标是通过SquidGuard屏蔽https社交网站。

有什么建议吗?

Boyom罗德里格2016年12月07日:

你好,

我仔细地听从了你的指导,我成功了。

然而,我有一个问题。当我激活squid中的https过滤,我的网络上的工作站的skype应用程序不再连接到skype。你遇到过这个问题吗?如果有,你是如何解决的?

山姆·基尔(作者)2016年12月1日从堪萨斯城发来:

@Carlos

在终端设备上没有安装证书的情况下,HTTPS解密仍然可以工作,但他们将在访问的加密页面上看到证书错误。最佳做法是将证书安装到设备上。

如果你面对的是公共网络或客户网络,这可能是个挑战。为了在手机上安装它,您可以实现一个移动设备管理系统,比如XenMobile,或者使用专用门户推送证书。

另一种可能是通过启动页面将用户指向一个链接以下载和安装证书。

卡洛斯2016年11月30日:

是否有任何方法可以在不使用CA的情况下通过透明代理拦截https ?如何在每个连接到wifi的手机上安装CA ?

欧内斯特2016年11月16日:

嗨,山姆

什么版本的PF你挂载这个…我一直与你的配置问题。。。hhtp正常,但https未打开,CA正常,但在启用SSL时仍未打开_

我有另一个问题如何通过组过滤af acl

黑名单进入鱿鱼是工作,但为所有进入局域网

如果我想通过那个限制,我就在鱿鱼身上加上

我试着使用squidguard,但没用

能给我解释一下怎么做吗

eaxample.-如果我拒绝lego.com加入squid=好,但无论如何…当ip添加(pc或用户)想要通过trow此站点时,如何通过

好吧,我认为进入鱿鱼不可能,因为申请所有LAN(值给鱿鱼)

2.——如果我不把它列入黑名单变成鱿鱼

我想让乌贼守卫去工作,对吧?在这种假设的情况下,我生成ACL公共或ACL特定…显然,我生成目标

但这根本不起作用。。。

你能解释一下怎么做吗

德尔芬2016年11月2日:

嗨,山姆

如何在Ubuntu上安装证书?我试着这样的:http://superuser.com/questions/437330/how-do-you-a..。

但这并没有奏效。提前谢谢。顺便说一句,这篇文章很棒

康蒂2016年10月19日:

使用mail.google.com:)

内尔2016年9月29日:

gmail.com打不通。。。。。。

山姆·基尔(作者)2016年9月28日来自堪萨斯城:

默翰,

在客户端机器上安装证书并不是欺骗发生的必要条件,但客户端浏览器将在任何https网站上显示证书警告。由于这些警告,只有在将证书部署到客户端系统时才真正可行。

默翰2016年9月28日:

你好

是否有可能在客户端机器上不导入CA证书。

谢谢

mohanrao83@gmail.com

美国国际集团2016年9月13日:

这就跟你问声好!

我有你的解决方案完全工作,但我不能与squidguard url过滤集成。

当我启用squidguard的http网站是工作的,但所有的httpS网站不显示和浏览器和url栏报告类似的事情:https://http.*并且明显没有显示任何站点。

任何建议吗?

moivg792016年8月4日:

我有pfsense 2.3和squid 3.5.19,我已经完成了上面的所有步骤,但是ssl Web显示证书错误。你能帮助我吗?

谢谢你!

阿隆索2016年7月7日:

PfSense 2.3.1 Rp5上最新的Squid versión是3.5.19。甚至你也建议安装squid-3.5.3-amd64。pbi,但我不能安装它,因为在PfSense 2.3.1-RELEASE命令pbi_add已弃用。现在看来必须使用pkg命令,但是“pkg add squid-3.5.3-amd64”。Pbi是不够的。你知道一些技巧已经安装固定鱿鱼versión在PfSense 2.3.1 R p5?

迈克2016年6月26日:

非常感谢。这个指南非常有效!

shr_kaza2016年5月23日:

bagaimana卡拉为她

--启用zph qos di squid 3.5.3

相关文章

Baidu