简介

OPNsense 提供功能齐全的缓存代理服务,具有广泛的访问控制列表、基于类别的 Web 过滤以及在透明模式下运行的能力。它支持HTTP、HTTPS和FTP 服务。此外,代理服务器可以与流量整形器结合使用,来改善用户体验。通过缓存经常访问的网站,它可以提高响应时间并提高带宽使用效率。ICAP接口可以与大多数专业防病毒解决方案集成。

  • OPNsense 中的缓存代理有哪些特点?
  • 如何在OPNsense缓存代理中配置自定义错误页面?
  • 如何在OPNsense中设置基本缓存代理?
  • 如何在OPNsense代理中启用Web过滤?
  • 如何在OPNsense代理中启用透明HTTP和SSL 模式?
  • 如何将内部CA 证书作为受信任的根CA 导入Windows 10?

注意,缓存代理服务严重依赖CPU负载和磁盘缓存写入,建议使用 SSD硬盘来缓存代理服务。

缓存代理功能

OPNsense 缓存代理服务的主要功能:

认证:可以使用以下身份验证方法将代理设置为透明代理:

  • 无身份认证
  • 本地数据库
  • Radius
  • LDAP

导航到Web Proxy> Administration> Forward Proxy>Authentication Settings配置 OPNsense 缓存代理身份验证选项。

访问 OPNsense Web 代理中的身份验证设置

访问 OPNsense Web 代理中的身份验证设置

访问控制:它通过使用以下标准支持访问控制列表:

  • 子网
  • 端口
  • MIME 类型
  • 禁止 IP
  • 白名单
  • 黑名单
  • 浏览器/用户代理
  • 支持黑名单

导航到Web Proxy> Administration> Forward Proxy>Access Control Lists配置 OPNsense 缓存代理访问控制列表。

在 OPNsense Web 代理中访问访问控制列表
在 OPNsense Web 代理中访问访问控制列表

透明模式

透明模式允许将所有请求路由到代理,而不需要在客户端进行任何配置。透明模式适用于不安全的 HTTP 流量。但是对于安全 (SSL) HTTPS 连接,代理成为中间人,因为客户端与代理“对话”,并且代理使用客户端必须信任的主密钥加密网络数据包。

注意:使用透明 HTTPS 代理可能存在风险,可能会不允许用于某些 Web 应用程序,例如电子商务。

Web 过滤器

OPNsense 包括基于类别的 Web 过滤支持,具有以下功能:

  • 从远程 URL 获取数据。
    使用内置调度程序保持最新。
    兼容最广泛使用的黑名单
    支持平面文件列表和基于类别的压缩列表。
    自动将基于类别的黑名单转换为 squid ACL。

流量管理

代理可以与流量整形器结合使用,以充分利用其整形功能。它还提供以下选项:

  • 设置下载/上传的最大文件大小
  • 限制整体带宽
  • 限制每台主机的带宽

导航到Web Proxy> Administration> General Proxy Settings>Traffic Management Settings配置流量管理。

WPAD / PAC

OPNsense 通过 WPAD / PAC 提供自动代理配置,用于无法使用透明模式的情况。

注意:由于通过 DNS 的WPAD需要Web UI 在默认 HTTP 端口 (TCP/80) 上运行,因此它存在 MITM 攻击漏洞。在这种情况下,应该使用代理服务器或避免从不受信任的网络配置应用程序。

自定义错误页面

OPNsense 缓存代理服务可自定义的错误页面。

多接口

代理可以同时在多个网络接口上运行。

配置自定义错误页面

按照下列步骤在OPNsense 缓存代理服务中配置自定义错误页面。

导航到Services> Web Proxy> Administration> 。General Proxy Settings找到用户错误页面,选Custom。然后,将出现Error Pages附加选项卡。单击Error Pages选项卡。单击Download图标获取包含所有可用错误页面和级联样式表文件:proxy_template.zip

在 OPNsense Web 代理中设置用户错误页面选项

在 OPNsense Web 代理中下载错误页面

根据需要更改相关文件压缩。

OPNsense Web 代理模板中的错误页面文件列表

单击custom_template.zip文件夹图标以选择新创建的 zip。

在 OPNsense Web 代理中上传自定义错误页面

点击上传按钮。点击Apply按钮。单击General Proxy Settings选项卡。单击Apply按钮激活错误页面模板。

设置基本缓存代理

可以按照下面10 个主要步骤在OPNsense 设置基本缓存代理服务:

  1. 启用/禁用代理服务器
  2. 配置代理接口
  3. 配置代理监听端口
  4. 启用/禁用缓存
  5. 配置身份验证方法
  6. 启用/禁用 FTP 代理
  7. 定义访问控制列表
  8. 定义远程访问控制列表
  9. 定义防火墙规则以防止客户端绕过代理服务器
  10. 配置客户端代理

下面简要介绍这些步骤。

启用/禁用代理服务器

在OPNsense 防火墙中,代理服务器带有合理的默认设置,可以快速设置。要在 OPNsense 防火墙中启用代理服务,可以按照以下步骤操作:导航到Services > Web Proxy > Administration。
选中Enable proxy选项。单击Apply激活代理服务器。代理将启用基于本地用户数据库的用户身份验证,并默认在 LAN 接口的 3128 端口上运行。

在 OPNsense 中启用代理

如何启动/重启/停止代理服务器?

导航到Services > Web Proxy > Administration来查看代理服务的状态。状态和操作按钮位于管理页面的右上角。代理服务器运行时,状态按钮显示为带有白色右箭头图标的绿色矩形。单击Restart按钮重新启动代理服务器。单击Stop按钮停止代理服务器。当代理服务器停止时,状态按钮显示为带有白色方形图标的红色矩形。可以单击Start按钮启动代理服务器。

配置代理接口和常规转发设置

如果需要更改代理将绑定的接口(子网),可以按照以下步骤操作:导航到Services > Web Proxy > Administration。单击Forward Proxy选项卡,打开General Forward Settings页面。在代理接口字段中选择接口。可以根据需要添加任意数量的接口或删除一个。单击Apply激活设置。

在 OPNsense 中选择代理接口
这里可以选中透明代理模式的启用透明 HTTP 代理选项。可以选中启用 SSL 检查来记录 HTTPS 流量,或让代理充当 Internet 和您的客户端之间的中间人。在启用此选项之前,请考虑安全隐患。如果使用透明 HTTPS 模式,需要设置NAT规则来反映流量。

可以选中仅记录 SNI 信息选项,这样只会记录请求的域和 IP 地址,不解码或过滤 SSL 内容。可以更改SSL代理服务将侦听的SSL 代理端口。默认为 3129。可以选择证书颁发机构用于SSL 检查。可以在SSL 无碰撞站点字段中输入需要不被检查的站点列表,例如银行和电子商务站点。要接受所有子域,在域前加上.。

配置代理监听端口

默认情况下,代理将侦听端口 3128。要更改代理侦听端口,您可以按照以下步骤操作:导航到Services > Web Proxy > Administration。单击Forward Proxy选项卡,打开General Forward Settings页面。根据需要将代理端口设置为适当的值,例如 8080。单击Apply激活设置。

在 OPNsense 中更改代理侦听端口

启用/禁用缓存

按照下面的步骤进行操作:导航到Services > Web Proxy > Administration。单击General Proxy Settings查看下拉菜单。点击Local Cache Settings。选中Enable local cache选项。打开顶部的高级模式按钮。

  • Memory Cache size in Megabytes选项根据需要增加 ,例如1024。 默认为256 MB。
  • Cache size in Megabytes选项根据需要增加,例如1024。默认为100 MB。
  • Maximum object size (MB)保持默认留空,即 4MB。
  • Maximum object size in memory (KB)保持留空。
  • Memory cache mode选项可以保持默认。也可以使用以下选项:
  • always:保留最近检索到的对象(默认)
  • disk:只有磁盘缓存命中存储在内存中,因此对象必须先缓存在磁盘上,然后再命中第二次,然后才能缓存在内存中。
  • network:只有从网络检索到的对象才会存储在内存中。
  • Enable Linux Package Cache选项,如果网络中有多个服务器并且不托管自己的包镜像,可以选中为 Linux 发行版启用包缓存的选项。可以节省 Internet 带宽,同时增加磁盘访问。
  • Enable Windows Update Cache选项,如果没有 WSUS 服务器,则可以选中启用或禁用 Windows 更新缓存的选项。

单击Apply激活设置。

在 OPNsense 中启用缓存代理

注意:因为默认不创建缓存,所以必须停止并重新启动代理服务,以确保正确创建缓存。

配置认证方式

要修改OPNsense 中代理服务的身份验证方法,可以按照以下步骤操作:导航到Services > Web Proxy > Administration。单击Forward Proxy查看下拉菜单。点击Authentication Settings。在 Authentication method字段中选择所需的身份验证器。如果不想使用任何身份验证,请单击下面的Clear All按钮。

提示:根据System> Access>Servers中配置的身份验证服务器,可以选择以下一个或多个选项:
  • 本地用户数据库
  • 半径
  • Radius
  • 基于时间的一次性密码
  • 不进行身份验证(将此字段留空)

如果需要,可以设置强制本地组来限制制对选定(本地)组中的用户的访问。可以根据需要填写身份验证提示。它将显示在身份验证请求窗口中。将身份验证 TTL(小时)设置为8。将指定代理服务器假定外部验证的用户名和密码组合有效的时间(以小时为单位)。当 TTL 过期时,将提示用户再次输入凭据。可以将身份验证进程保留为默认值。将控制身份验证器进程的总数。单击Apply激活设置。

启用FTP代理

在OPNsense 中启用FTP 代理服务,按照以下步骤操作:导航到Services > Web Proxy > Administration。单击Forward Proxy查看下拉菜单。点击FTP Proxy Settings。在FTP 代理接口字段中选择一个或多个接口,例如LAN或GUESTNET。可以更改默认的FTP 代理端口,默认为2121。可以勾选启用透明模式,将目标端口 21 的所有请求转发到代理服务器,无需任何额外配置。点击Apply激活设置。

在 OPNsense 中启用 FTP 代理服务

注意:FTP 代理仅在启用代理服务器的情况下才能工作。此外,代理仅适用于未加密的 FTP 流量。

定义访问控制列表

在OPNsense中为代理服务定义访问控制列表,按照以下步骤操作:导航到Services > Web Proxy > Administration。单击Forward Proxy查看下拉菜单。点击Access Control Lists。点击advanced mode toggle button。在允许的子网输入要允许访问代理服务器的子网。

默认情况下允许代理接口。添加不受限制的 IP 地址。对于这些 IP 地址,不应用身份验证和黑名单。可以在禁止的主机 IP 地址字段中输入入要拒绝访问代理服务器的IP 地址。可以将域添加到白名单中,这样它们就不会被代理服务器阻止,例如unharmful.com。可以将域添加到黑名单中,它们将被代理服务器阻止,例如harmful.com.

在 OPNsense-1 中为代理服务设置 ACL

可以设置Block browser/user-agents来阻止特定浏览器。例如,“Mozilla”将阻止“所有基于 Mozilla 的浏览器”,而 “(.) Macintosh(.) Firefox/36.0” 将阻止“Macintosh 版本的 Firefox 修订版 36.0”。下图的设置阻止了具有严重安全漏洞的从6到10的MS Internet Explorer浏览器。

可以设置Block specific MIME type reply以根据服务器的 MIME 类型回复的内容来阻止 HTTP 回复,例如图像、文本、HTML、flash、音乐、MPEG 等。例如,输入“video/Flv”将阻止 Youtube flash 视频内容,并且“application/x-javascript”会阻止“javascript”。

可以在Google GSuite restricted 字段中输入允许使用Google GSuite的域。所有不属于此域的帐户都将被禁止使用。

可以将YouTube Filter 字段设置为Moderate或Strict使用 Youtube 限制。

可以添加允许的目标 TCP 端口。可以添加允许的 SSL 端口。单击Apply激活设置。

在 OPNsense-2 中为代理服务设置 ACL

提示:可以使用正则表达式、逗号或按 Enter 键来创建新项目。“mydomain.com”匹配“ .mydomain.com”、“https?://( [a-zA-Z] ).mydomain”和“http(s)://textONLY.mydomain. ”;“.gif$” 匹配 ” .gif” 但不匹配 ” .giftest”;” [0-9]  .gif$” 匹配 “123.gif” 但不匹配 “test.gif”。

定义远程访问控制列表

在代理服务器中定义远程访问控制列表,按照以下步骤操作:导航到Services > Web Proxy > Administration。单击Remote Access Control Lists。点击右下角的 按钮添加远程黑名单。

在 OPNsense 中为代理服务添加远程黑名单
选中enabled选项。输入一个唯一的文件名来存储新的黑名单,例如StevenBlackListPorn。输入要从中检索黑名单的 URL,例如:https://raw.githubusercontent.com/StevenBlack/hosts/master/alternates/fakenews-gambling-porn-social/hosts。输入一个描述来说明该黑名单,例如StevenBlackList for social, fake news, gambling, and porn sites 。其他选项可以保留为默认值。单击Save存储设置。

在 OPNsense 中编辑代理服务的远程黑名单
单击Download ACLs & Apply获取并激活代理中新添加的远程黑名单。

下载与 在 OPNsense 中为代理服务应用远程 ACL

提示:下载远程黑名单后,可以通过单击带有笔图标的编辑按钮来编辑远程ACL。可以选择要使用的类别。它们用于基于类别的 Web 过滤。

定义防火墙规则以防止客户端绕过代理服务器

必须添加防火墙规则以确保没有人可以绕过代理。由于所有客户端都必须通过运行在端口 3128 上的 OPNsense 代理服务器访问 Internet,,因此必须阻止发送到 80/433 端口的所有 HTTP(S) 请求。可以通过以下四个主要步骤来阻止用户绕过代理服务器:

  • 添加防火墙规则阻止端口 80 上的出站 HTTP 流量。
  • 添加防火墙规则阻止端口 443 上的出站 HTTPS 流量。
  • 将新创建的规则移动到防火墙规则列表的顶部。
  • 激活新的防火墙规则。

(1)添加防火墙规则,阻止80端口

添加防火墙规则阻止端口 80 上的出站HTTP 流量,防止客户端绕过代理服务器,可以按照以下步骤操作:导航至Firewall> 。Rules点击代理绑定的接口,如LAN。单击 按钮添加防火墙规则。
将动作设置 为Block。将接口设置为代理绑定到的接口,如LAN.将协议设置 为TCP/UDP。将源设置 为LAN net

在 OPNsense 中添加防火墙规则以阻止端口 80 上的传出 HTTP 流量
将目标端口范围设置为HTTP。选中记录此规则处理的数据包选项来启用日志记录。输入Block Proxy Bypass类别字段。输入描述说明:Block HTTP Bypass。其他设置保留为默认设置。
单击Save按钮保存设置。

在 OPNsense 中添加防火墙规则以阻止端口 80 上的传出 HTTP 流量

(2)添加防火墙规则,阻止443端口

 可以按照以下步骤操作:在规则列表页面,在前面创建的阻止80端口出站的规则的右侧,单击Clone按钮,打开一个新的防火墙规则编辑页面。将目标端口范围设置为HTTPS。将描述字段更改为Block HTTPS Bypass。其他设置保留为默认设置。单击Save按钮保存设置。

(3)将新建的规则移至防火墙规则列表顶部

必须将创建的两个防火墙规则移到列表顶部,以便客户端的 HTTP(S) 请求与它们匹配并被阻止。

移动防火墙规则以防止客户端绕过 OPNsense 中的代理服务器

(4)激活新的防火墙规则

点击页面右上角的Apply Changes 按钮。

配置Windows客户端或浏览器

按照以下步骤设置 Windows 客户端中的代理,让客户端通过代理服务器访问网络:右键单击 Windows 10 PC 任务栏上的网络图标,打开网络和 Internet 设置。或打开chrome浏览器,找到Settings> Advanced> System> Open your computer’s proxy settings选项。

在 Windows 10 客户端中访问代理服务器设置

点击代理。在使用代理服务器选项,手动输入代理地址和端口。在地址字段中输入代理服务器 IP 地址,如10.10.10.1.在端口字段中输入在上一节中设置的代理服务器端口号,如3128。
单击Save激活设置。

测试代理配置

按照以下步骤测试代理配置:在客户的 PC 上打开浏览器。如果在代理设置中启用了身份验证,这将弹出一个类似于图 27 的用户身份验证对话框。尝试通过浏览器连接打开http://wizhumpgyros.com/。由于该 URL 存在于远程 ACL 添加到代理服务器的StevenBlack 列表中,因此会被阻止。导航到Service>Web Proxy >Access Log,将会看到访问被阻止的信息。

在 OPNsense 代理中查看访问日志

启用Web过滤

OPNsense 通过利用内置代理和免费或商业黑名单之一执行基于类别的 Web 过滤。在本节中,我们将使用 Shalla 的黑名单,它是按类别组织的 URL 列表的集合,旨在与 SquidGuard 或 Dansguardian 等 URL 过滤器一起使用。它们可以免费用于个人和商业目的。

提示:也可以使用图卢兹大学的 Fabrice Prigent 的 UT1“网络分类列表”。在知识共享许可下可以免费使用。其他流行的网络过滤列表可以在 https://github.com/maravento/blackweb找到。

可以通过以下两个主要步骤在OPNsense 代理服务中启用 Web 过滤:

  • 配置远程访问控制列表
  • 配置 Web 类别

配置远程访问控制列表

要在代理服务器中定义远程访问控制列表,可以按照以下步骤操作:导航到Services > Web Proxy > Administration。单击Remote Access Control Lists选项卡。点击右下角的 图标按钮添加远程黑名单。选中enabled选项。输入一个唯一的文件名来存储新的黑名单,例如ShallaBlackList。输入要从中检索黑名单的 URL,例如:http://www.shallalist.de/Downloads/shallalist.tar.gz。输入描述说明,如ShallaBlackList for category-based web filtering。其他选项保留为默认值。

在 OPNsense 代理服务中为基于类别的 Web 过滤添加 Shalla 的黑名单
单击Save存储设置。单击Download ACLs & Apply,获取并激活代理中新添加的远程黑名单。

配置网页分类

下载远程黑名单后,可以按照以下步骤选择要使用的网页类别:单击远程访问控制列表页面中新添加的黑名单旁边带有笔图标的编辑按钮。默认情况下,在类别字段中选择所有 Web 类别进行过滤。可以取消选中任何类别来允许用户根据需要访问它们。单击Save以存储新设置。

选择要在 OPNsense 代理中阻止的 Web 类别
再次单击Download ACLs,下载并重建仅包含所选类别的列表。

测试配置

我们假设在上一步中选择了要阻止的广告类别。现在可以按照以下步骤测试代理配置:

在客户的 PC 上打开浏览器。尝试通过浏览器打开trafficcenter.com,由于该 URL 在远程 ACL Stalla 的黑名单中,因此会被阻止。

在 OPNsense 代理中访问 Adv 类别被阻止
导航到Service>Web Proxy >Access Log,将会看到访问被阻止的信息。

启用透明SSL模式

可以将 OPNsense代理服务器配置为以透明模式运行。这样客户端浏览器就不需要为网络代理进行任何配置。所有网络流量都通过网络地址转换自动路由到代理。

注意:使用透明 HTTPS 代理可能很危险,并且可能会让你所使用的服务的限制,例如电子商务,因为透明 SSL/HTTPS 代理模式利用了一种称为中间人的方法。如果对自己的能力有信心,请仅配置和使用透明模式。如果配置错误,防火墙的安全防御可能会被严重削弱而不是加强。

通过以下 5 个主要步骤在OPNsense代理服务中启用透明 SSL 模式:

  • 为透明 SSL创建证书颁发机构
  • 禁用代理服务器的身份验证
  • 启用透明 HTTP和 SSL 模式
  • 配置非SSL 碰撞
  • 为 HTTP(S) 添加 NAT 防火墙规则
  • 配置代理客户端

面简要说明在OPNsense代理中启用透明 SSL 模式的每个主要步骤。

创建证书颁发机构

在代理服务器中启用透明 SSL 模式之前,如果没有内部证书颁发机构,则需要创建一个内部证书颁发机构。

禁用代理认证

在透明模式下操作时,无法使用代理身份验证。由于浏览器不知道正在使用代理,因此无法响应代理身份验证请求。要更改 OPNsense 中代理服务的身份验证方法,可以按照以下步骤操作:

导航到Services > Web Proxy > Administration。单击Forward Proxy查看下拉菜单。点击Authentication Settings。单击身份验证方法字段中的Clear All链接清除何身份验证方法。

启用透明HTTP和SSL模式

按照下面的后续步骤启用透明 HTTP 模式:导航到Services > Web Proxy > Administration。单击Forward Proxy选项卡,找到General Forward Settings。选中启用透明 HTTP 代理选项。选中启用 SSL 检查选项。单击Apply按钮应用设置。

在 OPNsense 代理中启用透明 HTTP 和 SSL 模式

配置非SSL碰撞

为确保已知站点不会被碰撞并保留其原始安全层,需要按照以下步骤将它们添加到 SSL 非碰撞站点字段,包括所有子域:

导航到Services > Web Proxy > Administration。单击Forward Proxy选项卡,找到General Forward Settings。将域输入SSL非碰撞站点,然后按 Enter。

提示:要包含所有子域,必须以.开头,例如:.paypal.com, .google.com, .amazon.com, .hsbc.com
注意:确保在此字段中包含提供个人或登录信息的所有银行网站和网站。

为 HTTP(S) 添加 NAT 防火墙规则

按照以下步骤为 HTTP(S) 添加 NAT 防火墙规则:

导航到Services > Web Proxy > Administration。单击Forward Proxy选项卡,找到General Forward Settings。单击启用透明 HTTP 代理选项左侧的 (i) 图标。单击添加新防火墙规则链接,会转到Firewall> NAT>Port Forward设置页面。单击Save按钮。

OPNsense proxy-1 中透明 HTTP 模式的 NAT 防火墙规则

OPNsense proxy-2 中透明 HTTP 模式的 NAT 防火墙规则

导航到Services > Web Proxy > Administration。单击Forward Proxy选项卡,找到General Forward Settings。单击启用 SSL 检查选项左侧的 (i) 图标。单击添加新防火墙规则链接,会转到Firewall> NAT>Port Forward设置页面。单击Save按钮。单击Apply Changes激活设置。

OPNsense proxy-1 中透明 SSL 模式的 NAT 防火墙规则

OPNsense proxy-2 中透明 SSL 模式的 NAT 防火墙规则

OPNsense 代理中透明 HTTP/SSL 模式的 NAT 防火墙规则

配置代理客户端

由于浏览器不信任防火墙的内部 CA,访问的每个 SSL 站点,都会收到一条警告消息,例如Your connection isn’t private. Attackers might be trying to steal your information NET::ERR_CERT_AUTHORITY_INVALID。

要解决此问题,必须在客户端操作系统中添加 CA 证书作为受信任的根 CA 证书。可以按以下步骤将其导入 Windows 10 PC 并将其设置为受信任的根 CA 证书:

OPNsense Web UI 中导航至System> Trust> Authorities。单击下载图标导出 CA 证书。

在 OPNsense UI 中导出 CA 证书

将 CA 证书复制到客户端 PC,本示例为 Windows 10 PC。可以使用 Windows 10 PC 中的 MMC 工具将 CA 证书导入为受信任的根 CA 证书。在搜索栏中键入mmc并按 Enter 键运行 Microsoft Management Control。单击File菜单链接并选择Add/Remove Snap-in。

现在在可用的管理单元下,单击证书,然后单击添加。证书管理单元允许为自己、服务或计算机浏览证书存储的内容。单击确定。在下一个对话框中,选择计算机帐户,然后单击下一步。选择本地计算机并单击完成。

现在,回到 MMC,在控制台树中,双击 Certificates,然后右键单击 Trusted Root Certification Authorities Store。在所有任务下,选择导入。这将打开证书导入向导。单击Next按钮。浏览并选择要导入的 CA 证书,然后单击Next按钮。点击下一步。单击Finish按钮完成证书导入。导入操作成功完成后,会出现一个对话框。单击确定。

在 Windows 10 客户端中作为受信任的根 CA 证书导入的内部 OPNsense CA 证书

  • 无标签
写评论...