../_images/forward_proxy.png

OPNsense配备了功能齐全的正向缓存(透明)代理。缓存代理通过缓存对频繁请求的网页减少带宽使用并缩短响应时间。访问控制列表可用于用户身份验证和/或(基于类别)Web过滤器。

功能包括:

  • 多接口支持

  • 透明模式(包括SSL / HTTPS)

  • ICAP支持反病毒/恶意软件引擎

  • HTTP代理

  • FTP代理

  • 用户认证

  • 访问控制列表(对http(s) 和ftp都有效)

  • 黑名单

  • 基于类别的Web过滤

  • 可以与流量×××器结合使用

认证

用户身份验证可以使用OPNsense标准和内置身份验证器完成。包括:

  • LDAP(包括Microsoft Active Directory)

  • Radius

  • 本地用户管理

  • 不进行认证

访问控制

OPNsense支持全面访问控制,包括基于:

  • 子网

  • 端口

  • MIME类型

  • 禁止IP

  • 白名单

  • 黑名单

  • 浏览器/用户代理

流量控制

代理可以与流量×××器结合使用,并充分利用其×××功能。此外,它还包括自己的选项:

  • 最大下载量

  • 最大上传量

  • 整体带宽限制

  • 每个主机带宽限制

基于类别的Web过滤器

不需要额外的插件,例如squidGuard, 因为OPNsense有基于内置类别的Web过滤器支持。主要功能包括:

  • 从远程URL获取

  • 支持平面文件列表和基于类别的压缩列表

  • 自动将基于类别的黑名单转换为squid ACL

  • 随时了解内置调度程序

  • 与最受欢迎的黑名单兼容

透明模式

透明模式意味着所有请求都将转移到代理,而无需在客户端进行任何配置。透明模式适用于不安全的http请求,但是通过安全(SSL)https连接,代理将成为中间人,因为客户端将“与”代理“对话”,代理将使用客户端需要信任的主密钥对流量进行加密。

虽然我们不鼓励在透明模式下使用https,但此功能在16.7以后的版本中发布。

警告:使用透明HTTPS代理可能是一种危险的做法,您使用的某些服务可能不允许这种做法,例如网上银行。

WPAD和PAC

如果无法使用透明代理,OPNsense仍支持通过WPAD / PAC进行自动代理配置。

警告:通过DNS的WPAD要求Web界面在默认HTTP端口(TCP / 80)上运行,这也是一种安全风险(MITM***)。在这种情况下,您应该通过代理连接或避免从不受信任的网络配置应用程序。

设置高速缓存代理

../../_images/proxy_basics.png

启用/禁用

要启用代理,只需转到“ 服务” – >“Web代理” – >“管理”,然后选中“ 启用代理”,单击“ 应用”。默认设置将使用基于本地用户数据库的用户身份验证启用代理,并在LAN接口的端口3128上运行。

更改代理接口

如果要更改代理将绑定的接口(子网),请单击“ 正向代理 ”选项卡。现在在代理接口字段中添加/删除接口。添加时确保已应用并且标签可见(输入或从列表中选择)。

更改代理侦听端口

默认情况下,代理将在端口3128处侦听,您可以通过单击“ 正向代理 ”选项卡来更改此设置,并填写代理端口数据库中的端口。不要忘记应用您的更改。

启用缓存

要启用缓存,请单击“ 代理设置”旁边的箭头以查看下拉菜单,然后单击“ 本地缓存设置”

../../_images/proxy_cache.png

选中启用本地缓存,然后单击应用

注意:由于默认情况下不创建缓存,您需要在系统->诊断-> 服务下停止并启动服务,这将确保正确创建缓存。

高级

在高级设置下(请参阅表单左上角的模式切换),您可以更改缓存大小,目录结构和保留在缓存中最大对象尺寸。同样,默认设置适用于普通浏览,将创建一个100MB缓存,最大对象尺寸为4MB。

变更认证方法

单击正向代理选项卡旁边的箭头来显示下拉菜单。现在选择认证设置并在认证方法字段中选择所需的认证源 。如果您不想使用任何身份验证,请单击“ 清除所有”

根据您在系统-> 访问->服务器下设置的认证服务器, 您可以选择以下一项或多项:

  • 无身份验证(保留字段为空)

  • 本地用户数据库

  • LDAP

  • Radius

FTP代理

启用FTP代理单击“正向代理”选项卡旁边的箭头,显示下拉菜单。现在选择FTP代理设置并在FTP代理接口字段中选择一个或多个接口并应用

注意:FTP代理仅在启用代理服务器本身时才起作用。代理仅适用于非加密的ftp流量。

访问控制列表

您可以通过单击“ 正向代理”旁边的箭头来设置ACL,然后 选择“ 访问控制列表”。在这里你可以:

  • 设置允许的子网(默认情况下,将允许代理接口)

  • 添加不受限制的IP地址(不受限制意味着这一点,没有身份验证,也没有针对这些IP的黑名单)

  • 添加禁止主机IP地址(禁止将阻止此客户端使用代理)

  • 白名单(点击(i)查看示例,白名单优先于黑名单)

  • 黑名单(如果白名单不允许,这将根据正则表达式阻止流量)

警告:填写标记字段后,请不要忘记按Enter或逗号,否则将不会应用该值。它看起来应该类似于:

../../_images/proxy_tag.png

远程黑名单/广告拦截

使用简单的平面文件来屏蔽广告。对于此示例,我们将使用此处的广告列表:

http://pgl.yoyo.org/adservers/serverlist.php?hostformat=nohtml

此列表是一个简单的平面列表,如下所示:

101com.com
101order.com
123found.com
180hits.de
180searchassistant.com
1x1rank.com
207.net
247media.com

转到“ 服务” – >“Web代理” – >“管理”,然后单击“ 远程访问控制列表 ”选项卡

现在单击表单右下角的+以添加新列表。

填写:

启用 选中 启用/禁用
文件名 yoyoads 选择唯一的文件名
网址 (复制/粘贴网址) 黑名单的URL
类别 (留空) 用于基于类别的Web过滤
描述 YoyoAds Blacklist 描述说明

(注:以下是16.1.4版本的屏幕截图,与现在最新版本有所不同):

../../_images/proxy_blacklist.png

保存更改

现在点击下载ACLS并应用以启用黑名单/广告拦截器。

防火墙规则无代理绕过

要确保没有人可以绕过代理,您需要添加防火墙规则。转到防火墙 – >规则,并将以下内容添加到LAN接口上的列表规则顶部(如果LAN是您的客户端和代理所在的位置)。

操作 阻止
接口 LAN
协议 TCP / UDP
lan
目标端口范围 HTTP
类别 Block Proxy Bypass
描述 Block http bypass

保存

还有一个阻止HTTPS访问的规则:

操作 阻止
接口 LAN
协议 TCP / UDP
LAN
目标端口范围 HTTPS
类别 Block Proxy Bypass
描述 Block http bypass

保存应用更改

../../_images/proxy_firewall.png

配置浏览器/Firefox

在本例子中,以Firefox为例,其他浏览器也可以参考。要配置代理,只需转到网络设置并按如下设置进行配置:

../../_images/proxy_firefox.png

设置Web过滤

OPNsense中基于类别的Web过滤是通过使用内置代理和一个免费或商业黑名单来完成的。

为此,我们将使用Fabrice Prigent管理的UniversitéToulouse 的UT1“网络分类列表”。此列表根据知识共享许可免费提供。

预计与OPNsense合作的其他热门列表包括:

在本教程中,我们假设:

  • 代理服务器的默认设置/未配置

  • 我们只想要网页过滤而不需要任何其他内容(没有缓存,不进行身份验证)

第1步 – 禁用身份验证

要开始,请转到“ 服务” – >“Web代理” – >“管理”

单击正向代理选项卡旁边的箭头以显示下拉菜单。现在选择认证设置并单击清除所有以禁用用户身份验证。然后单击“ 应用”以保存更改。

第2步 – 配置黑名单

单击“ 远程访问控制列表 ”选项卡。现在单击页面右下角的+以添加新列表。

将弹出一个页面,输入以下详细信息:

启用 选中 启用/禁用
文件名 UT1 选择唯一的文件名
网址 (复制/粘贴网址) 黑名单的URL
类别 (留空) 如果留空,则将获取完整列表
描述 UT1 web filter 描述说明

../../_images/proxy_ut1.png

保存更改

第3步 – 下载类别

现在按下载ACL,请注意这需要一段时间(可能是几分钟),因为完整列表(> 19MB)将转换为squid acl。

第4步 – 设置类别

现在,我们可以通过单击列表说明旁边的铅笔图标来选择我们要使用的类别。这将再次打开编辑窗口,但现在您将看到从列表中提取的所有可用类别。

../../_images/proxy_categories.png

对于我们的示例,我们将过滤广告和成人内容。最简单的方法是清除列表并从下拉列表中选择以下内容:

../../_images/proxy_catgegory.png

现在保存更改并再次按下载ACL以下载和重建仅包含所选类别的列表。这将花费与第一次获取大致相同的时间量,因为单独的成人部分是~15MB。

第5步 – 启用代理

要启用代理,只需转到“ 服务” – >“Web代理” – >“管理”,然后选中“ 启用代理”,单击“ 应用”。代理将绑定到LAN和端口3128。

代理启动可能需要一段时间,屏幕右上角的播放图标将变为红色。刷新页面以查看代理是否已完成加载(播放图标将变为绿色)。

第6步 – 禁用代理旁路

要确保没有人可以绕过代理,您需要添加防火墙规则。转到防火墙 – >规则,并将以下内容添加到LAN接口上的列表规则顶部(如果LAN是您的客户端和代理所在的位置)。

操作 阻止
接口 LAN
协议 TCP / UDP
LAN
目标端口范围 HTTP
类别 阻止代理绕过
描述 阻止http绕过

保存

还有一个阻止HTTPS访问的规则:

操作 阻止
接口 LAN
协议 TCP / UDP
LAN
目标端口和范围 HTTPS
类别 阻止代理绕过
描述 阻止https绕过

保存应用更改

../../_images/proxy_firewall.png

设置透明代理

OPNsense提供了一个功能强大的代理,可以与基于类别的Web过滤和任何支持ICAP的反病毒/恶意软件引擎结合使用。代理可以配置为以透明模式运行,这意味着不必为Web代理配置客户端浏览器,但是所有流量都通过利用网络地址转换自动转移到代理。

在本方法中,我们将解释基本的http以及https(ssl bump)透明代理模式。

警告:透明SSL / HTTPS代理模式使用一种也称为中间人的技术,只有在知道自己在做什么的情况下才配置并使用它。如果配置错误,您可能会减少安全防御能力。使用透明https代理可能是一种危险的做法,您使用的服务可能不允许这种做法,例如网上银行。

第1步 – 基本代理设置

要设置透明模式,需要完成基本的代理设置。参阅前面部分。

第2步 – 透明

转到服务 – > Web代理 – >管理

然后在正向代理选项卡下选择常规设置

选择启用透明HTTP代理, 然后单击应用

第3步 – NAT /防火墙规则

添加NAT /防火墙规则的一种简单方法是单击“ 启用透明HTTP代理”选项左侧的(i)图标,然后单击添加新的防火墙规则(红色部分)

../../_images/screenshot_enable_transparent_http.png

作为参考,这些是默认设置:

接口 LAN
协议 TCP
LAN
源端口范围 任意 – 任意
目标 任意
目标端口范围 HTTP – HTTP
重定向目标IP 127.0.0.1
重定向目标端口 other/ 3128
描述 将流量重定向到代理
NAT回流 启用
过滤规则关联 添加关联的过滤规则

默认值应该没问题,只需按“ 保存应用更改”即可

第4步 – 用于透明SSL的CA

在我们设置透明SSL / HTTPS代理之前,我们需要创建一个证书颁发机构。转到系统 – >证书 – >认证或使用搜索框快速到达目的地。

../../_images/search_ca.png

单击屏幕右上角的添加或导入ca以创建新CA。

在本示例中,我们使用以下数据:

描述名称 OPNsense-SSL
方法 生成内部证书颁发机构
密钥长度(位) 2048
摘要算法 SHA256
有效期(天) 356
国家代码 NL (Netherlands)
州或省 Zuid Holland
城市 Middelharnis
组织 OPNsense
电子邮件地址 spam@opnsense.org
通用名称 opnsense-SSL-CA

保存

第5步 – 透明SSL

转至服务 – >Web代理 – >管理, 然后点击正向代理选项卡下的常规设置

选择“ 启用SSL检查”并将使用认证的CA设置为用于刚刚创建的CA,然后单击Apply

第6步 – 配置非SSL Bump

这一步非常重要,需要仔细考虑!为了确保已知站点正常访问(如网上银行)并保持其原始安全层完整,需要将包括所有子域的那些添加到SSL免检站点 字段。

要在字段中输入新项目类型,请以.(点)开始,添加所有子域,然后按Enter键接受。示例:要添加所有paypal.com,请键入.paypal.com并按Enter键。

注意:确保将您提供个人信息或登录信息的所有银行站点添加到此字段中。如果您不确定要添加什么,请重新考虑使用透明SSL,因为它显然不适合您!

第7步 – SSL NAT /防火墙规则

添加NAT /防火墙规则的一种简单方法是单击“ 启用SSL检查”选项左侧的(i)图标,然后单击添加新的防火墙规则

../../_images/screenshot_enable_transparent_http.png

作为参考,这些是默认设置:

接口 LAN
协议 TCP
lan
源端口范围 any – any
目标 any
目标端口范围 HTTPS – HTTPS
重定向目标IP 127.0.0.1
重定向目标端口 other/ 3129
描述 将流量重定向到代理
NAT回流 启用
过滤规则关联 添加关联的过滤规则

默认值应该没问题,只需按“ 保存应用更改”即可

步骤8 – 配置OS /浏览器

由于您的浏览器不信任CA,因此您将为您访问的每个页面收到有关此信息的消息。要解决此问题,您可以将密钥导入您的操作系统并设置为受信任。要导出密钥,请转到系统 – >证书 – >认证,然后单击右侧的导出图标来导出CA证书。

../../_images/export_CA_cert.png

在您的操作系统上导入和更改信任设置。在OSX上的示例如下:

../../_images/Trust_Settings_OSX.png

警告:因为您的系统将接受使用此CA证书签名的任何页面。只要没有人获得对没有问题的私钥的访问权限都是安全的。但是如果任何人都可以得到它,那么所有流量都可以被解密。

设置WPAD / PAC

OPNsense支持生成PAC文件来向客户端提供自动代理配置文件。例如,如果您的Web GUI在http://192.168.0.1/上运行,则您的PAC URL则是http://192.168.0.1/wpad.dat

在Firefox中,您可以手动通过以下步骤使用PAC配置代理:

  • 单击菜单图标并打开“设置”

  • 向下滚动到“网络代理”,然后单击“设置”

  • 检查“自动代理配置地址”

  • 在文本字段中输入上面段落中提到的PAC文件的URL,然后单击“确定”

警告:如果PAC文件不可用,您的浏览器可能无法连接到Internet。如果员工可以将设备用于家庭办公室,则不建议在笔记本电脑等移动设备上使用此类配置。对于此类设备,应使用WPAD。

配置

第一步:创建匹配

转到“服务” – >“Web代理” – >“配置”,然后打开“匹配”,在最新的18.7.6版本中菜单是“服务” – >“Web代理” – >”Proxy-Auto-Config”

../../_images/pac_menu_match.png

输入匹配名称和可选说明。然后选择要匹配的内容。

名称 匹配的唯一名称,用于从规则中调用它。
描述 简短描述。
反转 反转匹配
匹配类型 选择您想要匹配的内容

其余字段取决于使用的匹配类型。例如,如果我们匹配“普通主机名”,我们不需要任何其他参数。

匹配“Plain Hostname(普通主机名)”,则意味着域名没有点,所以如果我们想创建一个fqdn匹配,我们可以简单地反转这个:

../../_images/pac_match_fqdn.png

名称 is_fqdn
描述 可以留空
反转 选中
匹配类型 Plain Hostname

../../_images/pac_internal_domain.png

名称 not_internal
描述 可以留空
反转 选中
匹配类型 Hostname matches
主机模式 内部域的通配符

第二步:创建代理服务器

现在切换到“服务” – >“Web代理” – >”Proxy-Auto-Config – > Proxies”添加新的代理服务器。

名称 输入将在规则视图中显示的名称以供选择
描述 您可以为此代理添加可选说明
代理类型 如果不使用代理,则直接连接或请输入代理类型
网址 除非已选择直接连接(no proxy),否则请输入代理URL

在这种情况下,假设仅存在单个LAN和DMZ,并且内部连接不在代理上运行。要制定有意义的规则,我们需要两个可能的返回值:

  • LAN代理

  • 没有代理

没有代理配置非常简单:

../../_images/pac_proxy_direct.png

名称 direct
描述 可以留空
代理类型 Direct Connection
网址

对于传出连接,我们需要代理:

../../_images/pac_proxy_lan.png

名称 lan_proxy
描述 可以留空
代理类型 proxy
网址 代理IP +’:’+代理端口

第三步:创建规则

现在,当匹配和代理存在时,可以构建规则。为此,需要切换到“服务” – >“Web代理” – >”Proxy-Auto-Config – > 规则” 。

现在需要创建以下规则:

../../_images/pac_rule.png

启用 选中
描述 描述说明
匹配 两个先前创建的匹配
加入类型 and
匹配类型 if
代理 lan proxy

保存后,单击右侧的橙色重新加载按钮,配置就完成了。

WPAD

Web代理自动发现用于查找域名的PAC文件。

使用DNS(Unbound)

方式1:自动配置

警告:使用此选项时,将覆盖wpad主机和域名的TXT记录。这可能会破坏其他记录,例如此特定域名的SPF的TXT记录。

在Unbound  DNS常规设置中,您只需选中以下复选框:

../../_images/wpad_dns_unbound2.png

这将定义DHCP中配置的任意域名的主机记录,作为防火墙主机的CNAME。它还将覆盖TXT记录解析为PAC文件的URL。

方式2:手动配置

警告:使用DNS时,OPNsense必须通过端口80上的HTTP进行响应。

转到服务 – >Unbound DNS- >覆盖,为wpad主机添加新的主机覆盖:

../../_images/wpad_dns_unbound.png

主机 WPAD
域名 你的域名
类型 A或AAAA
IP 您的OPNsense的IP(可以访问Web界面的IP地址)
描述 可以留空

保存设置并应用更改。

使用

方式1:自动配置

在DHCP服务器设置中,您可以选中以下复选框:在这种情况下,将使用您在系统设置(防火墙域名)中选择的域和Web接口的端口。主机名是wpad。如果您使用HTTP在端口80上运行OPNsense Web界面。将创建以下URL:http://wpad.example.com:80/wpad.dat

方式2:手动配置

转到服务 – > DHCP – >服务器,选择正确的接口并向下滚动到“其他选项”。

添加此行并保存:

../../_images/wpad_dhcp_option.png

数目 252
类型 String
PAC文件的URL,用双引号括起来

Firefox配置

打开设置菜单

首先,必须打开设置菜单。有两种方法。你也可以

../../_images/pac_firefox_menu.png

首先单击编辑

../../_images/pac_firefox_edit.png

然后单击Preferences(首选项)或您也可以

../../_images/pac_firefox_menu2.png

单击菜单图标,然后单击“Preferences(首选项)”

配置代理

../../_images/pac_firefox_network_proxy_setting.png

然后向下滚动到页面底部,然后在点击Network Proxy(网络代理)界面点击Settings(设置)

../../_images/pac_firefox_proxy_settings.png

在新打开的窗口中,您可以设置代理设置。如果要强制Firefox使用WPAD / PAC,请选择“ 自动检测此网络的代理设置”。如上图所示,点击“OK”完成。