OPNsense用户手册-强制门户

一个强制网络门户允许您通过网页强制认证,或重定向到指定网页。这通常用于热点网络,但也广泛用于企业网络,以便在无线或Internet访问上获得额外的安全层。

典型应用

  • 访客网络
  • 酒店和公共区域无线上网
  • 其他需要的场景

模板管理

OPNsense独特的模板管理器使您可以轻松设置自己的登录页面。同时它还提供其他功能,例如:

  • URL重定向
  • 自定义弹出窗口的选项
  • 自定义启动页面

区域管理

可以在每个接口上设置不同的区域,或者多个接口可以共享一个区域设置。每个区域可以使用不同的强制门户模板或与其他区域共享。

认证

通过HTTPS或仅限splash的门户网站进行安全身份验证,并将URL重定向到指定页面,可以使用不同的源来验证区域中的用户:

  • LDAP [Microsoft Active Directory]
  • Radius
  • 本地用户管理
  • 优惠券/门票
  • 不认证(仅限启动画面)
  • 多个(以上组合)

凭证管理

OPNsense的Captive Portal有一个简单的凭证创建系统,可以将凭证导出到csv文件,以便与您喜欢的应用程序一起使用。

超时和重连接

用户空闲一段时间后(空闲超时),可以终止连接和/或即使用户仍然处于活动状态(硬超时),也会在几分钟后断开连接。如果用户在空闲超时和/或硬超时内重新连接,则不需要登录,用户可以恢复其活动会话。

带宽管理

内置流量整形器可用于:

  • 均匀分享带宽
  • 优先考虑协议端口号和/或IP地址

门户旁路

可以将指定MAC和IP地址列为白名单,以绕过门户网站。

实时报告

集成了实时报告系统,提供:

  • 带宽使用IP地址排名(流量图)
  • 活跃的会话
  • 优惠券剩余时间

基于类别的Web过滤

通过将强制门户与高速缓存代理相结合,可以利用类别Web过滤并为用户阻止某些内容,并通过启用高速缓存来减少带宽并缩短响应时间。另请参见:高速缓存代理

平台集成

通过集成的REST API,强制门户应用程序可以与其他服务集成。请参阅:使用API

设置访客网络

访客网络广泛用于允许客人在酒店,房车公园或企业中控制互联网访问。

注意:对于本示例,我们希望GUESTNET接口与您的实际访客网络交换机或接入点连接。本教程未说明如何设置无线网络。

高级

强制门户也可以与代理的基于类别的Web过滤相结合。本教程将介绍如何组合这两个功能。

先决条件

我们将使用全新的OPNsense安装开始配置,更新到最新的补丁版本(在我们的示例中为16.1.5_1)。本示例的防火墙需要3个网络端口(LAN / WAN / GUESTNET)。

第1步 – 配置接口

对于访客网络,我们将添加一个新接口。转到接口-> 分配并使用 添加新接口。点击保存。新接口将被称为OPT1,单击左侧菜单中的[OPT1]来更改设置。

选择启用接口,并填写以下数据:

描述 GUESTNET 接口的描述性名称
阻止专用网络 不选
阻止bogon网络 不选
IPv4配置类型 静态IPv4
IPv6配置类型 没有
MAC地址 (留空)
MTU (留空)
MSS (留空)
速度和双工 默认
静态IPv4地址 192.168.200.1/24
IPv4上游网关 没有

点击保存,然后点击应用更改

第2步 – 配置DHCP服务器

转到服务-> DHCPv4->,然后单击GUESTNET选项卡。

填写以下内容为(其他选项保留默认设置):
启用 选中 在GUESTNET上启用DCHP服务器
范围 192.168.200.100-192.168.200.200
DNS服务器 192.168.200.1 提供带租约的DNS
网关 192.168.200.1 提供租约的网关

单击保存

第3步 – 添加防火墙规则

转到防火墙 – >规则,添加新规则。

现在添加以下规则(按执行顺序排列):

1.允许DNS

允许访客访问DNS转发器。规则内容(保留所有其他选项默认):

操作 放行 允许此流量
接口 GUESTNET GuestNet接口
协议 TCP / UDP
GUESTNET 网络
目标 GUESTNET 地址
目标端口范围 DNS / DNS 从DNS到DNS
类别 GuestNet Basic Rules 用于分组规则的类别
描述 Allow DNS

单击保存

2.允许强制门户登录

操作 放行 允许此流量
接口 GUESTNET GuestNet接口
协议 TCP
GUESTNET网络
目标 GUESTNET地址
目标端口范围 8000/10000
类别  GuestNet Basic Rules 用于分组规则的类别
描述 Allow Captive Portal Login

单击保存

3.阻止本地网络

操作 阻止 阻止此流量
接口 GUESTNET GuestNet接口
协议 任何
GUESTNET网络
目标 LAN
类别 GuestNet Basic Rules 用于分组规则的类别
描述 Block Local Networks

单击保存

4.阻止访问防火墙

操作 阻止 阻止此流量
接口 GUESTNET GuestNet接口
协议 any
GUESTNET网络
目标 GUESTNET地址
类别 GuestNet Basic Rules 用于分组规则的类别
描述 Block Firewall Access

单击保存

注意:这些规则用于阻止访问我们的本地LAN网络和访客访问防火墙。如果您有多个本地网络,则需要使用多个规则阻止它们中的每一个,或者使用更大的子网来覆盖它们。

1.允许访客网络

操作 放行 允许此流量
接口 GUESTNET GuestNet接口
协议 any
GUESTNET网络
目的地 any
目标端口范围 any
类别 GuestNet Basic Rules 用于分组规则的类别
描述 Allow Guest Network

单击保存,然后单击应用更改

完成后的规则列表应如下图所示:

../../_images/guestnet_fwrules.png

第4步 – 创建强制门户

转到服务 – >强制门户 – >管理

要添加新区域,请按表单右下角的 。

注意:当使用多个接口与强制网络门户时,每个接口可以有自己的区域,或者多个接口可以共享区域。

本示例的设置如下:

启用 选中
接口 GUESTNET 删除默认值并添加GUESTNET
使用认证 (留空) 删除任何默认设置
空闲超时 0 禁用空闲超时
强制超时 0 没有硬超时
并发用户登录 不选 用户只能登录一次
SSL证书 none 使用普通的http
主机名 (留空) 用于重定向登录页面
允许的地址 (留空)
自定义模板 none 使用默认模板
描述 Guest Network 选择区域的说明

保存应用

第5步 – 创建模板

模板功能是OPNsense强制门户解决方案最强大的功能之一,它非常容易使用。让我们创建一个自定义登录页面,单击选项卡模板,然后单击右下角的下载图标(

下载
)。

../../_images/template_download.png

现在下载默认模板,我们将使用它来创建自己的模板。解压缩模板zip文件,文件如下所示:

../../_images/template_filelisting.png

可以修改模板的大多数文件,有些是默认文件不能修改。上传后,将忽略对exclude.list中列出的文件所做的任何更改。目前这些包括bootstrap java脚本和一些字体。

启用强制门户后,默认屏幕如下所示:

../../_images/default_login_no_authenticator.png
让我们使用新的徽标和欢迎文本来更改这个默认设置,例如:

../../_images/mycompany_login.png
使用编辑器打开index.html文件进行修改。

让我们对模板进行以下修改:

  1. 将徽标更改为company-logo.png
  2. 删除顶部的导航栏
  3. 标记中删除高度和宽度
  4. 添加欢迎文本
  5. 建立公司网站的链接

找到以下部分:

并改为:

将公司徽标复制到图像目录。现在压缩模板目录并单击模板选项卡上的 上传新模板。

Download the example Template (full)

输入模板名称,在这里我们使用Company。点击上传

上载

要在GUESTNET接口上启用强制网络门户,只需单击“ 应用”

第6步 – 限制访客带宽

在本示例中,我们将为访客网络的Internet访问保留10Mbps的下载和1Mbps的上传带宽。这个带宽将在连接的客户端之间平均分配。

注意:通过均匀分享,我们的意思是如果10个用户同时尝试使用尽可能多的带宽,那么每个人都会得到1/10。因此,在本例子中,每个客户端设置为1Mbps下载带宽。

转至:Firewall->Traffic Shaper->Settings(防火墙 – >流控 – >设置)

单击表单右下角的 ,为下载创建管道,并输入以下详细信息:

启用 选中
带宽 10
单位 Mbit / s
掩码 目标
描述 pipe_10Mbps_down

单击保存更改。并为上传流量添加另一个管道。

启用 选中
带宽 1
单位 Mbit / s
掩码 目标
描述 pipe_1Mbps_up

单击保存更改

创建流量整形器规则。单击规则选项卡,然后按   执行操作。

首先切换高级模式(表单的左上角),然后填写以下详细信息(其他设置保留默认值):

序列 (保留默认值)
接口 WAN
接口2 GUESTNET
方向
目标 pipe_10Mbps_down
描述 Limit Guests download to 10Mbps

单击保存更改

序列 (保留默认值)
接口 WAN
接口2 GUESTNET
方向
目标 pipe_1Mbps_up
描述 Limit Guests upload to 1Mbps

单击保存更改

现在单击“ 应用”来应用更改。

第7步-测试GuestNet

将您的PC或笔记本电脑连接到访客网络并启动您喜欢的浏览器。输入要浏览的地址,您将看到我们在上一步中使用模板创建的登录表单。单击登录并开始浏览。

要测试您的流量带宽,请访问速度测试站点,例如http://www.speedtest.net/ 。测试的结果应如下图所示:

../../_images/cp-traffic-shaping.png

注意:请记住,在此测试中我们只有一个连接的客户端,因此所有预留带宽都可供我们的客户使用。

皇家酒店示例

这一节我们将实施皇家酒店访客网络解决方案。先按照上面1-7的步骤选择您想要为客人使用的模板。

第8步 – 添加凭证服务器

转到:System->Access->Servers(系统 – >访问- >服务器),然后单击页面右上角的添加服务器

填写:

描述性名称 Vouchers 凭证服务器的名称
类型 优惠券

单击“ 保存”

第9步 – 创建优惠券

返回强制门户并选择优惠券(服务 – >强制门户 – >凭证)。单击表单右下角的“ 创建凭证 ”。

让我们为客人创造1天的优惠券:

../../_images/create_vouchers.png
输入有效期(1天),凭证数量和组名称(Wifi day pass)。例如,我们创建了10张优惠券。单击Generate(生成)

将生成一个名为wifi day pass.csv的文件。该文件的内容如下所示:

username,password,vouchergroup,validity
"IgJw@Pqf","MLi Sb7Ak#","Wifi day pass","86400"
"  ?f[@i[","!m*)e(@;F,","Wifi day pass","86400"
"bbtK9mBk","f/jCDL3:)b","Wifi day pass","86400"
"iD%L[jLJ","I#FoZ#g!AY","Wifi day pass","86400"
" 4bA\E[I","CNavt@0ck ","Wifi day pass","86400"
" ,fg/\Sv","#22iIL-iQA","Wifi day pass","86400"
":;Pc\N#s","Y\HuG9vAN$","Wifi day pass","86400"
"00nLb=0Q","0*C_\_Nb_x","Wifi day pass","86400"
"PA$J0YHF","kp!q%9;m)g","Wifi day pass","86400"
"a,mCxbya","LcnCb#g/di","Wifi day pass","86400"

内容如下:

Username 访客需要登录的用户名
password 客人需要登录的密码
vouchergroup 您创建的组的名称
validity 优惠劵在几秒钟内有效的时间

注意:出于安全原因,优惠劵的纯文本密码不会存储在防火墙上。

通过将cvs数据与word、open office或任何其他dtp / text编辑器合并,此文件可填写在访客凭证(在纸上)。

例如:

../../_images/cp_royalhotel_voucher.png

注意:激活优惠券后,无论用户是否登录或注销,都将使用该时间。对于“使用时间”的解决方案,可以通过设置FreeRADIUS进行记帐来处理。

第10步 – 凭证认证

通过更改区域设置启用凭证身份验证。转到选项卡区域,然后单击旁边的铅笔图标选择访客网络。

将原来身份验证栏的留空字段改为Vouchers

完成后,单击“ 保存更改”,然后单击“ 应用”以应用新设置。

现在,用户将看到登录表单作为模板的一部分:

../../_images/cp_voucher_login.png

检查会话

要检查活动会话,请转到服务 – >强制门户 – >会话 ,我们当前的会话如下所示:

../../_images/cp_active_sessions.png
您可以通过单击垃圾箱来删除活动会话。

注意:注意右上角的选择框,您可以在配置多个区域时选择正确的区域。

检查凭证状态

您可以通过转到强制网络门户的凭证页面(服务 – >强制门户 – >凭证)来检查凭证的有效性和活动状态,并选择正确的数据库(在我们的示例中为Wifi day pass )。

../../_images/cp_active_vouchers.png

注意:状态有效意味着它已激活且仍然有效。

高级功能 – 会话弹出窗口

让我们创建一个会话弹出窗口,这样用户就可以看到有关会话和注销的一些细节。我们可以使用OPNsense的内置api来调用。

使用以下api调用(对于区域ID 0):

/api/captiveportal/access/status/0/

此api调用的响应如下所示(对于活动会话):

{"userName":"IgJw@Pqf",
"macAddress":"10:dd:b1:bc:75:46",
"acc_session_timeout":14095,
"authenticated_via":"Vouchers",
"packets_out":2834,
"bytes_in":512869,
"last_accessed":1457527526,
"zoneid":0,
"sessionId":"npd5bd6SIVQeMfIbWBdong==","
startTime":1457526930.1719,
"bytes_out":1322351,
"ipAddress":"192.168.200.100",
"packets_in":3181,
"clientState":"AUTHORIZED"}

你可以点击下面的链接下载完整的演示模板:

Download the example Template (with popup)

该演示包括一个名为session_popup.html的新文件,其中包含显示凭证上剩余时间和注销按钮的所有逻辑。以及对index.html页面的简单更新,以便在成功登录时调用弹出窗口。后者看起来像这样(用一点上下文显示):

../../_images/captiveportal_popup.png

高级功能 – CLI会话状态

OPNsense有一个非常强大的CLI,对于调试目的特别有用。在本示例中,我们将使用cli列出所有活动会话的状态。

在cli提示符下输入以下内容(对于区域ID 0):

configctl captiveportal list_clients 0

输出内容如下:

上一篇
下一篇