强制门户是一种网络安全解决方案,可自动控制和管理用户对公共网络的访问。强制门户通常用于开放访问网络中的访客管理,这些网络可在酒店、医院、机场和公司网络中找到。启用强制门户后,除非用户提供电子邮件、姓名和手机号码等个人信息,或通过填写基于 Web 的注册表单通过凭证进行身份验证,否则对 Internet 的访问将受到限制。
OPNsense 是一个基于 FreeBSD 的防火墙和路由平台,它是开源的、易于使用且易于构建,可以轻松配置强制门户,以安全的方式为用户提供 Internet 访问。
本教程将分以下几个部分进行介绍:
- 配置强制门户的好处
- 强制门户如何工作
- 强制门户设置
- 配置强制门户
- 使用自定义模板
- 限制访客网络上的带宽
- 管理凭证系统
- 查看强制门户会话
配置强制门户的好处
1. 安全性
强制门户可以帮助企业保持业务符合监管标准和良好实践,通过热点向用户提供 Internet 访问。
强制门户可以向用户显示服务条款,他们必须在使用公司的 Wi‑Fi 热点之前接受这些条款。管理员这样做是为了确保用户对自己的行为负责,并且企业不承担法律责任。业主可以通过要求用户在通过强制门户访问网络之前同意服务条款来保护自己免于法律责任。强制门户通过将任何 Web 请求“重定向”到特定页面来运行,直到用户单击同意服务条款。因此,无论浏览器访问什么地址,当用户启动浏览器时,强制门户页面都会首先出现。
2. 带宽管理
一些用户总是滥用互联网服务,例如每天保持数小时在线、每天访问多次,甚至通过多个终端连接。
强制门户提供了许多措施来确保所有用户都能充分访问:可以控制连接时间、每个用户的终端数量和带宽使用。
可以使用强制门户管理带宽,并创建可配置的时间限制,以确保每个用户都可以保持连接并访问网络。
3. 市场营销
在商业方面,强制门户为无缝营销提供了理想的机会,使用户可以在关键时刻参与其互联网体验,并且是满足各种业务需求的强大媒介。填写调查、观看赞助广告或突出当前促销活动,都可以使用强制门户来实现。
强制门户如何工作
OPNsense 提供了一个强制门户,用于强制请求网络访问的客户端进行身份验证或将他们重定向到点击页面。该解决方案通常用于热点网络,但也广泛用于企业网络,为 Internet 或无线访问提供额外的安全层。
OPNsense 强制门户具有以下功能:
- 基于类别的 Web 过滤: 通过结合强制门户和缓存代理,可以使用基于 Web 类别的过滤并阻止用户访问特定的内容,以及通过启用缓存来减少 Internet 带宽使用并提高响应时间。
- 超时和随时回来: 连接可以在设定的时间后终止(空闲超时)和/或在设定的分钟数后强制断开连接,即使用户仍然处于活动状态(硬超时)。如果用户在空闲和/或硬超时内重新连接,则不需要登录,并且可以恢复用户的活动会话。
带宽管理: 防火墙具有流量整形功能。其内置的流量整形器可用于执行以下操作:
- 可以优先考虑协议端口号和/或 IP 地址。
- 均匀分配带宽。
- 绕过门户: 可以使用白名单选项来允许某些 IP 地址或 MAC 地址绕过门户。
模板管理: OPNsense 中独特的模板管理器可以轻松创建自己的登录页面。同时,它提供了额外的功能,例如:
- 创建自己的弹出窗口的选项
- URL 重定向:通过强制门户认证或点击后,可以将用户强制重定向到指定的 URL。
- 自定义起始页
- 区域管理: 可以在每个接口上配置不同的区域,也可以多个接口共享一个区域配置。每个区域都可以使用自己独特的强制门户模板或与另一个区域共享。
身份验证: OPNsense 强制门户提供 HTTPS 安全身份验证或带有 URL 重定向到特定页面的仅启动门户。要对区域中的用户进行身份验证,可以使用以下来源:
- 本地用户管理器
- 代金券/门票
- Radius
- LDAP [微软活动目录]
- 无身份验证(仅限启动页面)
- 多个(前面的组合)
- 优惠券管理器: OPNsense 的强制门户包括一个简单的优惠券创建系统,可以将优惠券导出为 CSV 文件,并与 LibreOffice 或 Microsoft Word 模板结合来打印凭证,生成包含您公司徽标和样式的专业外观的卡片。
- 平台集成: 强制门户应用程序可以使用集成的 REST API 与其他服务集成。
实时报告: OPNsense 强制门户具有基本的实时报告功能,例如:
- 活跃期
- 优惠券剩余时间
- 最高 IP 带宽使用情况(实时图表)
强制门户设置
为保持网络安全,一般应将访客网络与专用 LAN 隔离,然后在访客网络上部署一个强制门户,让访客访问 Internet。
在本教程中,我们将为 OPNsense 上的访客网络启用和配置强制门户,具有三个网络接口/区域:
- 局域网
- 广域网
- 访客网
按照下面的 4 个步骤在 OPNsense 防火墙上设置强制门户。
第 1 步 – 接口配置
- 导航到
Interfaces→Assignments。 - 在字段中输入接口的描述性名称,如 GUESTNET。
- 按下
+按钮添加新接口。

- 单击
Save。新接口将被调用。

- 在接口列表中单击
GUESTNET更改其设置。 - 选择
Enable Interface。 - 选择
Block bogon networks选项。 IPv4 Configuration Type选择为Static IPv4。

- 设置静态 IPv4 地址,例如
172.16.10.1,掩码为24。 IPv4 Upstream Gateway选择Auto detect。

- 单击
Save,然后单击Apply changes。

第 2 步 – DHCP 服务器配置
- 导航到
Services→DHCPv4→[GUESTNET]。 - 在 GUESTNET 接口上 启用 DHCP 服务器。
- 设置 DHCP 池范围,例如从
172.16.10.100到172.16.10.200。 - 可以指定
DNS server,不指定则默认为接口地址。 - 设置
Gateway IP address,如172.16.10.1(OPNsense GuestNet 接口 IP)。 - 其他选项保留为
default。 - 点击
Save。

第 3 步 – 定义防火墙规则
按给定顺序定义以下防火墙规则:
3.1. 允许访问 DNS 服务
按照下图定义规则以允许内部 DNS 服务器访问。


3.2. 允许强制门户登录
按照下图定义规则来允许访客访问强制门户:


3.3. 阻止对局域网访问
按照下图定义规则来阻止访客访问公司 LAN:


3.4. 阻止对防火墙的访问
按照下图定义规则来阻止来宾访问防火墙:


3.5. 允许访客访问
按照下面的定义配置允许访客访问 Internet 的规则:


为 GUESTNET 接口重新排序新创建的防火墙规则,类似于下图,然后单击 Apply changes 来激活规则。

第 4 步 – 强制门户创建
按照以下说明为访客网络创建强制门户。
- 导航到
Services→Captive Portal→Administration。

- 单击表格右下角的
+添加新区域。

- 启用区域。
- 设置
Interfaces为GUESTNET(取消选择局域网)。 - 可以设置
Authenticate using为空白不需要身份验证(删除任何默认设置)。 - 设置
Idle timeout为 0。 - 设置
Hard timeout为 0。 - 取消选中
Concurrent user logins,以便用户只能登录一次。 - 可以为 HTTPS 选择 Web GUI TLS 证书,或者将 SSL 证书保留为
none使用纯 HTTP。 - 保留
Custom template为none,以使用默认模板。 - 在描述字段中输入区域描述,例如访客网络。
- 将其他选项保留为默认值。
- 单击
Save。 - 单击
Apply。

现在 OPNsense 上的强制门户已安装完成并可以使用了。

测试从访客网络访问 Internet 是否正常
当将设备连接到访客网络并打开您喜欢的浏览器时,您将被重定向到类似于下图的强制门户启动页面。由于我们在上面的示例中没有配置任何身份验证方法,因此您可以通过单击 Sign in 按钮开始冲浪而无需任何身份验证。

提示:OPNsense 强制门户支持多种身份验证方法,例如本地、LDAP、Radius、优惠券或其中的多个。应该在强制门户上至少使用一种身份验证方法。
测试强制门户防火墙规则是否生效
如果可以从访客网络访问 Internet,则表示允许 GUESTNET 访问 Internet 和 DNS 服务器的相关防火墙规则正在工作。可以测试拒绝从 GUESTNET 访问防火墙和 LAN 的阻止规则。要验证这些强制门户防火墙规则,可以从连接到访客网络的设备运行以下命令。如果 ping 请求对于防火墙和 LAN 访问都超时,则防火墙规则正常工作。
- ping 防火墙 GuestNet 地址
ping 172.16.10.1
Pinging 172.16.10.1 with 32 bytes of data:
Request timed out.
Request timed out.
Request timed out.
Request timed out.- ping 到 LAN 上的设备或防火墙 LAN 地址
ping 10.10.10.1
Pinging 10.10.10.1 with 32 bytes of data:
Request timed out.
Request timed out.
Request timed out.
Request timed out.配置强制门户
可以按照以下说明配置强制门户。
1. 为强制门户使用自定义模板
要制作自定义登录页面,可以按照以下步骤操作。
- 导航到
Services→Captive Portal→Templates选项卡。 - 点击右下角的下载图标下载默认模板。

- 解压下载的模板文件。

- 用编辑器打开文件
index.html。 - 将默认徽标(
default-logo.png)更改为您的徽标文件名,例如company-logo.png。 - 去掉顶部的导航栏。
- 从
<img>标签中删除高度和宽度。 - 包括欢迎信息。
- 包括指向您公司网站的链接。
- 找到以下代码段:
<header class="page-head">
<nav class="navbar navbar-default">
<div class="container-fluid">
<div class="navbar-header">
<a class="navbar-brand" href="#">
<img class="brand-logo" src="images/default-logo.png" height="30" width="150">
</a>
</div>
</div>
</nav>
</header>- 将上面的代码段更改为下面给出的类似代码段。不要忘记用您自己的替换相关字段:
<header class="page-head">
<div align="center">
<a href="#">
<img class="brand-logo" src="images/company-logo.png">
</a>
<h1>Welcome to My Company Guest Network.</h1>
<h2>Feel free to use the guest network for professional usage</h2>
<h3>See our website for more details: <a href="https://www.opnsense.org">My Company</a></h3>
</div>
</header>- 将公司徽标 (
company-logo.png) 复制到images目录。 - 压缩模板目录。
- 单击模板选项卡上
+按钮,上传新创建的模板 zip 文件。 - 输入一个模板名称,例如
MyCompany。 - 单击
Upload图标。

- 要在 GUESTNET 接口上启用新的强制门户模板,单击
Apply。

要启用新上传的模板,可以按照下面给出的步骤进行操作:
- 导航到
Services→Captive Portal→Zones选项卡。 - 单击
Guest Network旁边的铅笔图标。
- 导航到

- 将
Custom template字段从none更改为MyCompany。

- 单击
Save,然后Apply应用新设置。
现在打开浏览器来测试新的强制门户模板。启动页面应该类似于下面给出的页面。

2. 限制访客网络
强制门户可以与流量整形器结合使用,以充分利用其整形功能。
可以按照以下步骤限制来宾网络上的 Internet 带宽。在本示例中,将每个来宾访问的最大下载带宽设置为 10 Mbps,上传设置为 1 Mbps。
2.1. 设置下载和上传带宽
- 导航到
Firewall→Shaper→Pipes。

单击表单右下角的
+为下载创建管道。- 单击复选框启用。
- 带宽设置为
10。 - 带宽单位设置为
Mbit/s。 - 掩码设置为
Destination,为让每个客户端使用 10 Mbps 的下载带宽。 - 输入描述,例如
10Mbps_download。 - 单击
Save。

单击
+为上传流量添加另一个管道。- 单击复选框启用。
- 带宽设置为
1。 - 带宽单位设置为
Mbit/s。 - 掩码设置为
Destination。 - 输入描述,例如
1Mbps_upload。 - 单击
Save。

- 单击
Apply应用更改。
2.2. 添加下载和上传限制规则
按照以下说明为访客网络上的下载和上传流量限制创建整形规则。
- 单击 “Rules” 选项卡。

单击
+图标,切换表单左上角的高级模式。- 设置接口为
WAN。 - 接口 2 设置为
GUESTNET。 - 方向设置为
in。 - 目标设置为
10Mbps_download。 - 描述设置为
Limit Guests download to 10 Mbps。 - 其他设置保留为默认值。
- 单击
Save。
- 设置接口为


再次单击
+图标,以类似方式创建上传规则:- 设置接口为
WAN。 - 接口 2 设置为
GUESTNET。 - 方向设置为
out。 - 目标设置为
1Mbps_upload。 - 描述设置为
Limit Guests upload to 1 Mbps。 - 单击
Save。
- 设置接口为


- 单击
Apply应用更改。

2.3. 验证访客网络
测试流量整形策略是否真正限制了访客网络上的带宽,可以按照以下说明进行操作:
- 将设备连接到访客网络。
- 打开浏览器,输入地址后会看到登录表单,点击登录。
- 转到速度测试站点,例如
https://www.speedtest.net进行测试。测试完成后,结果应该与下图类似:

还可以在应用流量整形之前和之后比较带宽速度测试结果。


3. 管理凭证系统
OPNsense 的强制门户提供了一个对酒店网络特别有用的简单凭证创建系统。可以按照以下步骤在 OPNsense 防火墙上管理凭证系统。
3.1. 添加凭证服务器
- 导航到
System→Access→Servers。

单击屏幕右上角
+的按钮添加服务器。- 输入描述性名称,例如
Vouchers。 - 将类型设置为
Voucher。 - 其他选项保留为默认,或根据需要进行设置。
- 点击
Save。
- 输入描述性名称,例如

3.2. 创建优惠券
为访客网络创建优惠券,可以按照以下步骤操作。
- 导航到
Services→Captive Portal→Vouchers。 - 点击表格右下角的
Create Vouchers。

- 选择有效期,例如
1 day。

- 根据需要选择
Expiration time(过期时间)。

- 选择要生成的凭证数量,例如
10。

- 设置组名,例如
Wi-Fi daily pass。

- 点击
Generate。

将生成一个名为 Wi-Fi daily pass.csv 的凭证文件。
注意:出于安全原因,优惠券的密码不会保存在 OPNsense 防火墙上。
文件内容包含:
| 字段 | 描述 |
|---|---|
| 用户名 | 访客登录时必须使用的用户名 |
| 密码 | 访客登录时必须使用的密码 |
| 凭证组 | 团体名称 |
| 有效性 | 凭证有效时间,以秒为单位 |
3.3. 启用凭证身份验证
在 OPNsense 防火墙上启用凭证身份验证,可以按照下面的步骤进行操作。
- 导航到
Services→Captive Portal→Zones选项卡。 - 单击
Guest Network旁边的铅笔图标。

- 将
Authenticate using空字段更改为Vouchers。

- 单击
Save changes和Apply应用新设置。
3.4. 检查凭证状态
要检查凭证的有效性和活动状态,导航至 Services → Captive Portal → Vouchers。选择正确的数据库,例如 Wi-Fi daily pass。

4. 在 OPNsense 上查看强制门户会话
要检查活动会话,请导航至 Services → Captive Portal → Sessions,从右上角的选择框中选择适当的区域。当前会话如下所示:

提示:要删除活动会话,可以单击垃圾桶图标。

OPNsense 提供了一个非常强大的 CLI,可以使用 CLI 获取所有活动会话状态的列表。
在 shell 环境下,可以输入以下命令,查看区域 id 0 上的活动会话:
root@OPNsense:~ # configctl captiveportal list_clients 0
sessionid username ip_address mac_address total_bytes idletime totaltime acc_session_timeout
ivN8tfSozem614bkXzeZXQ== Q$)49ZHm 172.16.10.100 8c:16:45:6d:76:28 2086815 2 240 86400 觉得内容不错?我要