强制门户是一种网络安全解决方案,可自动控制和管理用户对公共网络的访问。强制门户通常用于开放访问网络中的访客管理,这些网络可在酒店、医院、机场和公司网络中找到。启用强制门户后,除非用户提供电子邮件、姓名和手机号码等个人信息,或通过填写基于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 步 - 接口配置
1.1. 导航到Interfaces
→Assignments
。
1.2. 在字段中输入接口的描述性名称,如GUESTNET。
1.3. 按下+
按钮添加新接口。
图 1. GuestNetwork 的接口分配
1.4. 单击Save
。新接口将被调用。
图 2. 保存新创建的接口
1.5. 在接口列表中单击GUESTNET
更改其设置。
1.6. 选择Enable Interface
。
1.7. 选择Block bogon networks
选项。
1.8. IPv4 Configuration Type
选择为Static IPv4
图 3. 启用 GuestNet 接口
1.9. 设置静态 IPv4 地址,例如172.16.10.1
, 掩码为 24
。
1.10. IPv4 Upstream Gateway
选择Auto detect
。
图 4. GuestNet 接口上设置 IP 地址
1.11. 单击Save
,然后单击Apply changes
。
图 5. 应用更改
第 2 步 - DHCP 服务器配置
2.1. 导航到Services
→ DHCPv4
→ [GUESTNET]
。
2.2. 在 GUESTNET 接口上启用DHCP 服务器。
2.3. 设置 DHCP 池范围,例如从172.16.10.100
到172.16.10.200
。
2.4. 可以指定DNS server
,不指定则默认为接口地址。
2.5. 设置Gateway IP address
,如172.16.10.1
(OPNsense GuestNet i接口 IP)
2.6. 其他选项保留为default
。
2.7. 点击Save
图 6. DHCP 配置
第 3 步 - 定义防火墙规则
按给定顺序定义以下防火墙规则:
3.1. 允许访问 DNS服务
按照下图定义规则以允许内部 DNS 服务器访问。
图 7. 允许 DNS Rule-1
图 8. 允许 DNS 规则 2
3.2. 允许强制门户登录
按照下图定义规则来允许访客访问强制门户:
图 9. 允许访问强制门户的防火墙规则1
图 10. 允许访问强制门户的防火墙规则2
3.3. 阻止对局域网访问
按照下图定义规则来阻止访客访问公司 LAN:
图 11. 阻止GuestNet对 LAN的访问1
图 12. 阻止GuestNet对 LAN的访问2
3.4. 阻止对防火墙的访问
按照下图定义规则来阻止来宾访问防火墙:
图 13. 阻止GuestNet对防火墙的访问1
图 14. 阻止GuestNet对防火墙的访问2
3.5. 允许访客访问
按照下面的定义配置允许访客访问 Internet 的规则:
图 15. 允许访客网络访问 Internet1
图 16. 允许访客网络访问 Internet2
为GUESTNET 接口重新排序新创建的防火墙规则。类似于下图。然后单击Apply changes
来激活规则。
图 17. GuestNet接口防火墙规则
第 4 步 - 强制门户创建
按照以下说明为访客网络创建强制门户。
4.1. 导航到Services
→ Captive Portal
→ Administration
。
图 18. 创建强制门户
4.2. 单击表格右下角的+
添加新区域。
图 19. 为强制门户设置区域1
4.3. 启用区域。
4.4. 设置Interfaces
为GUESTNET
。(取消选择局域网)
4.5. 可以设置Authenticate using
为空白不需要身份验证..(删除任何默认设置)
4.5. 设置Idle timeout
为 0。
4.6. 设置Hard timeout
为 0。
4.7. 取消选中Concurrent user logins
,以便用户只能登录一次。
4.8. 可以为HTTPS 选择Web GUI TLS 证书,或者将 SSL 证书保留为none
使用纯 HTTP。
4.9. 保留Custom template
为none
,以使用默认模板。
4.10. 在描述字段中输入区域描述,例如访客网络。
4.11. 将其他选项保留为默认值。
4.12. 单击Save
。
4.13. 单击Apply
。
图 20. 为强制门户设置区域2
现在OPNsense 上的强制门户已安装完成并可以使用了。
图 21. 在 OPNsense 防火墙上创建访客网络强制门户
测试从访客网络访问internet是否正常
当将设备连接到访客网络并打开您喜欢的浏览器时,您将被重定向到类似于下图的强制门户启动页面。由于我们在上面的示例中没有配置任何身份验证方法,因此您可以通过单击Sign in
按钮开始冲浪而无需任何身份验证。
图 22. 没有任何身份验证的 OPNsense强制门户默认启动页面
提示:OPNsense强制门户支持多种身份验证方法,例如本地、LDAP、Radius、优惠券或其中的多个。应该在强制门户上至少使用一种身份验证方法。
测试强制门户防火墙规则是否生效
如果可以从访客网络访问 Internet,则表示允许 GUESTNET 访问 Internet 和 DNS 服务器的相关防火墙规则正在工作。可以测试拒绝从 GUESTNET 访问防火墙和 LAN 的阻止规则。要验证这些强制门户防火墙规则,可以从连接到访客网络的设备运行以下命令。如果 ping 请求对于防火墙和 LAN 访问都超时,则防火墙规则正常工作。
- ping 防火墙 GuestNet 地址
- ping 到LAN 上的设备或防火墙 LAN 地址
配置强制门户
可以按照以下说明配置强制门户。
1. 为强制门户使用自定义模板
要制作自定义登录页面,您可以按照以下步骤操作。
1.1. 导航到Services
→ Captive Portal
→Templates
选项卡。
1.2. 点击右下角的下载图标下载默认模板。
图 23. 下载强制门户默认模板
1.3. 解压下载的模板文件。
图 24. 解压缩默认模板文件
1.4. 用编辑器打开文件index.html
。
1.5. 将默认徽标(default-logo.png)更改为您的徽标文件名,例如 company-logo.png
1.6. 去掉顶部的导航栏
1.7. 从< img >
标签中删除高度和宽度
1.8. 包括欢迎信息。
1.9. 包括指向您公司网站的链接。
1.10. 找到以下代码段
1.11. 将上面的代码段更改为下面给出的类似代码段。不要忘记用您自己的替换相关字段
1.13. 压缩模板目录。
1.14. 单击模板选项卡上+
按钮,上传新创建的模板 zip 文件。
1.15. 输入一个模板名称,例如 MyCompany。
1.16. 单击Upload
图标。
图 25. 上传新的强制门户模板
1.17. 要在 GUESTNET接口上启用新的强制门户模板,单击Apply
。
图 26. 在强制门户上应用新模板
1.18. 要启用新上传的模板,可以按照下面给出的步骤进行操作。
1.19. 导航到Services
→ Captive Portal
→Zones
选项卡。
1.20. 单击Guest Network
旁边的铅笔图标。
图 27. 编辑Guest Network强制门户
1.21. 将Custom template
字段从none
更改为MyCompany
。
图 28. 设置强制门户模板
1.22。单击Save
,然后Apply
应用新设置。
现在打开浏览器来测试新的强制门户模板。启动页面应该类似于下面给出的页面。
图 29. 自定义强制门户登录页面
2. 限制访客网络
强制门户可以与流量整形器结合使用,以充分利用其整形功能。
可以按照以下步骤限制来宾网络上的 Internet 带宽。在本示例中,将每个来宾访问的最大下载带宽设置为10 Mbps,上传设置为1Mbps。
2.1. 设置下载和上传带宽
2.1.1. 导航到Firewall
→ Shaper
→ Pipes
。
图 30. 在 OPNsense 上创建流量整形器管道
2.1.2. 单击表单右下角的+
为下载创建管道
2.1.3. 单击复选框启用。
2.1.4. 带宽设置为10
。
2.1.5. 将带宽单位设置为Mbit/s
2.1.6. 将掩码设置Destination
,为让每个客户端使用 10 Mbps 的下载带宽。
2.1.7. 输入描述,例如10Mbps_download
2.1.8. 单击Save
。
图 31.创建10 Mbps下载带宽管道
2.1.9 . 单击表单右下角的 + 为上传流量添加另一个管道。
2.1.10. 单击复选框启用。
2.1.11. 将带宽设置为1
。
2.1.12. 将带宽单位设置为Mbit/s
2.1.13. 将掩码设置为Destination
2.1.14. 输入描述,例如1Mbps_upload
2.1.15 .单击Save
。
图 32. 创建1Mbps 上传带宽管道
2.1.16. 单击Apply
应用更改。
2.2.添加下载和上传限制规则
按照以下说明为访客网络上的下载和上传流量限制创建整形规则。
2.2.1. 单击“Rules”选项卡。
图 33. 创建流量整形规则
图 34. 创建下载流量整形规则1
2.2.2. 单击+
图标。
2.2.3. 切换表单左上角的高级模式。
2.2.4. 设置接口为WAN
2.2.5. 接口 2 设置为GUESTNET
2.2.6. 方向设置为in
2.2.7. 目标设置为10Mbps_download
2.2.8. 描述设置为Limit Guests download to 10 Mbps
。
2.2.9. 其他设置保留为默认值。
2.2.10. 单击Save
。
图 35. 为 下载创建流量整形规则2
图 36. 为 上传创建流量整形规则1
2.2.11. 单击+
图标。
2.2.12. 切换表单左上角的高级模式。
2.2.13. 设置接口为WAN
2.2.14. 接口 2 设置为GUESTNET
2.2.15. 方向设置为out
2.2.16 .目标设置为1Mbps_upload
2.2.17. 描述设置为Limit Guests upload to 1 Mbps
2.2.18. 其他设置保留为默认值。
2.2.19. 单击Save
。
图 37. 为上传创建流量整形规则2
2.2.10. 单击Apply
应用更改。
图 38. 在 OPNsense 上应用流量整形规则
2.3. 验证访客网络
测试流量整形策略是否真正限制了访客网络上的带宽,可以按照以下说明进行操作。
2.3.1. 将设备连接到访客网络
2.3.2. 打开浏览器。
2.3.3. 输入要浏览的地址,将会看到登录表单。
2.3.4. 点击登录。
2.3.5. 转到速度测试站点,例如https://www.speedtest.net
进行测试。测试完成后,结果应该与下图类似:
图 39. 在访客网络上应用流量整形后的带宽限制测试结果
还可以在应用流量整形之前比较带宽速度测试结果。
图 40. 下载速度测试结果对比(流量整形前后)
图 41. 上传速度测试结果对比(流量整形前后)
3. 管理凭证系统
OPNsense的强制门户提供了一个对酒店网络特别有用的简单凭证创建系统。可以按照以下步骤在OPNsense 防火墙上管理凭证系统。
3.1. 添加凭证服务器
按照以下步骤添加凭证服务器:
3.1.1. 导航到System
→ Access
→Servers
图 42. 添加访问服务器
3.1.2. 单击屏幕右上角+
的按钮添加服务器。
3.1.3. 输入描述性名称,例如Vouchers
。
3.1.4. 将类型设置为Voucher
。
3.1.5. 其他选项保留为默认,或根据需要进行设置。
3.1.6. 点击Save
。
图 43. 在 OPNsense 上添加凭证服务器
3.2. 创建优惠券
为访客网络创建优惠券,可以按照以下步骤操作。
3.2.1. 导航到Services
→ Captive Portal
→ Vouchers
。
3.2.2. 点击表格右下角的Create Vouchers
。
图 44. 为强制门户创建凭证
3.2.3. 选择有效期,例如1 day
。
图 45. 设置优惠券有效期
3.2.4. 根据需要选择Expiration time(过期时间)
。
图 46. 设置凭证过期
3.2.5. 选择要生成的凭证数量,例如10
。
图 47. 设置生成的凭证数量
3.2.6. 设置组名,例如Wi-Fi daily pass
。
图 48. 设置生成的凭证组的名称
3.2.7. 点击Generate
。
图 49. 生成凭证CSV文件
将生成一个名为Wi-Fi daily pass.csv
的凭证文件
注意:出于安全原因,优惠券的密码不会保存在 OPNsense 防火墙上。
文件内容包含:
场地 |
描述 |
用户名 |
访客登录时必须使用的用户名 |
密码 |
访客登录时必须使用的密码 |
凭证组 |
团体名称 |
有效性 |
凭证有效时间,以秒为单位 |
3.3. 启用凭证身份验证
在OPNsense 防火墙上启用凭证身份验证,可以按照下面的步骤进行操作。
3.3.1.导航到Services
→ Captive Portal
→Zones
选项卡。
3.3.2. 单击Guest Network
旁边的铅笔图标。
图 50. 编辑访客网络强制门户
3.3.3. 将Authenticate using
空字段更改为Vouchers
。
图 51.使用Vouchers设置强制门户身份验证
3.3.4. 单击Save changes
和Apply
应用新设置。
3.4. 检查凭证状态
要检查凭证的有效性和活动状态,导航至Services
→ Captive Portal
→ Vouchers
。选择正确的数据库,例如Wi-Fi daily pass
。
图 52. 在 OPNsense 上查看凭证状态
4. 在OPNsense上查看强制门户会话
要检查活动会话,请导航至Services
→ Captive Portal
→ Sessions
,从右上角的选择框中选择适当的区域。
当前会话如下所示:
图 53. 检查 OPNsense 上的活动强制门户会话
提示:要删除活动会话,可以单击垃圾桶图标。
图 54. 删除强制门户上的活动会话
OPNsense 提供了一个非常强大的 CLI,可以使用 CLI 获取所有活动会话状态的列表。
在shell环境下,可以输入以下命令,查看区域 id 0 上的活动会话:
原文地址。