pfSense book之入网门户(一)

本文摘要入网门户(一)入网门户区域常见的入网门户方案区域配置选项pfSense 的入网门户功能在允许访问 Internet 之前将用户重定向到防火墙上托管的网页。用户可以被强制进行身份验证,或执行简单的点击操作。入网门户最常见的用途是无线热点,或在允许无线客户端访问内部网络之前进行额外验证,也可用于有线客户端。配置位于 系统服务 > 入网门户 菜单下。限制pfSense 入网门户目前有以下限制:不支...

入网门户(一)

  • 入网门户区域
  • 常见的入网门户方案
  • 区域配置选项

pfSense 的入网门户功能在允许访问 Internet 之前将用户重定向到防火墙上托管的网页。用户可以被强制进行身份验证,或执行简单的点击操作。入网门户最常见的用途是无线热点,或在允许无线客户端访问内部网络之前进行额外验证,也可用于有线客户端。配置位于 系统服务 > 入网门户 菜单下。

限制

pfSense 入网门户目前有以下限制:

  • 不支持 IPv6。
  • 无法实现逆向入口(要求对从互联网进入本地网络的流量进行认证)。

入网门户区域

入网门户区域为不同接口集定义不同的门户。例如,局域网和无线可使用一个门户,会议室则获得单独的门户页面。每个区域都有独立的 HTML 页面设置、身份验证、允许地址等。必须先创建区域,才能修改其设置。

注意
一个区域可以有多个接口,但一个接口只能属于一个区域。将同一接口添加到多个区域会导致严重错误。

管理入网门户区域

区域在 系统服务 > 入网门户 菜单下管理,在此可添加、编辑或删除区域。

创建新的入网门户区域

  1. 导航至 系统服务 > 入网门户
  2. 单击 添加按钮 添加
  3. 输入区域名称,只能包含字母、数字和下划线,不能使用空格和其他特殊字符
  4. 如有需要,输入描述
  5. 单击保存并继续,然后转到该区域的门户设置

编辑现有区域:单击行末的 编辑图标
删除现有区域:单击行末的 删除图标

常见的入网门户方案

无需认证的门户配置

  1. 创建一个新区域
  2. 选中“启用入网门户”
  3. 选择一个接口
  4. 按门户页面设置上传不含验证的 HTML 页面
  5. 点击保存

其他选项可按区域配置选项说明添加。

使用本地身份验证或凭证的门户配置

  1. 创建一个区域
  2. 选中“启用入网门户”
  3. 选择一个接口
  4. 将认证方法设置为“本地用户管理/凭证”
  5. 上传 HTML 认证页面

其他配置选项可按区域配置选项说明添加,然后在 用户管理 中配置本地用户。凭证请前往 凭证 标签创建,详见凭证相关文档。

使用 RADIUS 认证的门户配置

  • 配置 RADIUS 服务器以允许来自防火墙的请求
  • 创建一个区域
  • 选中“启用入网门户”
  • 选择一个接口
  • 将认证方法设置为“RADIUS 认证”
  • 在主认证源下填写主 RADIUS 服务器的设置

区域配置选项

以下选项在创建区域后可用,每个区域独立配置:

  • 接口:选择激活入网门户的接口(不能是 WAN 接口),支持已分配 IP 的网桥接口。
  • 并发连接:每个 IP 地址对门户服务器的最大并发连接数,默认 4,防止单个主机耗尽资源。
  • 空闲超时(分钟):闲置用户将被断开连接,用户可立即重新登录。
  • 强制超时(分钟):指定时间后强制注销用户。建议设置强制超时和/或空闲超时以确保及时清除会话。

    超时值必须小于 DHCP 租用时间,否则 IP 切换后原门户会话可能仍保持活动。
  • 直通信用:为设备提供宽限期,在必须认证前允许临时访问。需配合强制超时使用。
  • 每个 MAC 地址允许的直通信用:特定 MAC 地址可通过门户连接的次数,用尽后需等待期过后才能恢复。
  • 恢复直通信用等待期(小时):直通信用恢复到原始计数所需的小时数,启用直通信用时须大于 0。
  • 尝试访问时重置等待时间:若所有直通信用已用尽且尝试接入,等待时间将重置,防止反复尝试快速获得开放访问。
  • 注销弹出窗口:向用户显示注销窗口,但易被弹出阻止程序拦截。
  • 预认证重定向 URL:认证前将用户重定向到指定 URL,可用于显示自定义登录页面。登录页面必须包含链接,将用户重定向回门户页面,例如:
    http://x.x.x.x:8002/index.php?zone=somezone&redirurl=http%3A%2F%2Fsomesite.example.com
    自定义门户页面顶部需添加代码以正确处理重定向。
  • 认证后重定向 URL:验证或点击门户后用户将被重定向到此 URL;留空则重定向到用户原请求的地址。
  • 用户并发登录:每个用户帐户只允许一次登录,最近登录会断开其他会话。
  • MAC 过滤:禁用 MAC 地址过滤,适用于 MAC 地址无法可靠确定的场景(如路由器后多个用户)。注意,启用后无法使用 RADIUS MAC 身份验证。
  • 直通 MAC 自动条目:用户成功认证后自动添加 MAC 直通条目,该 MAC 地址后续无需再次认证。需手动在直通 MAC 选项卡中删除。
  • 通过 MAC 自动添加:与上一条类似,自动添加直通 MAC,且不能使用 RADIUS MAC 身份验证,注销窗口不会显示。
  • 通过 MAC 自动添加用户名:认证时使用的用户名将与直通 MAC 条目一同保存。
  • 每用户带宽限制:可选地对用户进行限速,默认下载/上传带宽以千比特/秒为单位指定。可由 RADIUS 属性覆盖,0 或留空表示无限。

认证

提供三种认证方式:

  • 无认证:用户点击门户页面即可访问。
  • 本地用户管理/凭证:使用 pfSense 本地用户数据库或凭证进行认证。可限制只有具备“入网门户登录”权限的用户/组才能访问。
  • RADIUS 认证:使用外部 RADIUS 服务器验证用户。

RADIUS 身份验证选项

RADIUS 用于根据中央服务器验证用户。可启用 RADIUS 计费记录使用信息。

RADIUS 协议

  • PAP:明文传输密码,兼容性最好但最不安全。
  • CHAP_MD5:使用 MD5 加密传输,比 PAP 更安全。
  • MSCHAPv1:旧版 Windows 使用,安全性较弱。
  • MSCHAPv2:在 CHAP/MS-CHAP v1 基础上增强安全性。

从 RADIUS 服务器传回配置
RADIUS 回复属性可覆盖某些默认设置,如带宽限制、会话超时、空闲超时、计费间隔、认证后重定向 URL 等。

主认证源
主/从 RADIUS 服务器使用登录表单字段 auth_userauth_pass。若主服务器宕机,则尝试从服务器。配置项:IP 地址、端口(通常 1812)、共享密钥。

辅助认证源
定义完全独立的 RADIUS 认证设置,例如主认证用传统用户名密码,辅助用预付卡号。使用表单字段 auth_user2auth_pass2

计费
将用户会话信息发送回 RADIUS 服务器。计费端口通常为 1813。计费更新方式包括:

  • 不更新:无计费更新。
  • 开始/结束:仅发送会话开始和结束记录。
  • 开始/结束(FreeRADIUS):与 FreeRADIUS 兼容的开始/结束记录。
  • 临时:发送开始、结束及定期更新记录,避免防火墙重启导致数据丢失,但会增加服务器数据库用量。

RADIUS 选项

  • 重新验证:每分钟向 RADIUS 发送访问请求,若收到拒绝则断开用户。
  • RADIUS MAC 认证:使用 MAC 地址作为用户名、预配置密码进行认证,需启用 MAC 过滤。
  • RADIUS NAS IP 属性:控制 Calling-Station 属性发送的接口/IP。
  • 会话超时:使用 RADIUS 会话超时属性控制断开时间。
  • 类型:设置 RADIUS 供应商类型,影响 Calling-Station-Id/Called-Station-Id 的行为。
  • 计费风格:可反转 Acct-Input-Octets 和 Acct-Output-Octets 的含义。
  • NAS 标识符:覆盖默认的主机名。
  • MAC 地址格式:更改 RADIUS 中的 MAC 地址格式,支持默认、单破折号、IETF、Cisco、无格式等样式。

HTTPS 登录

启用后可为门户页面使用 HTTPS,需选择 SSL 证书。

  • HTTPS 服务器名称:必须与证书通用名称匹配。
  • SSL 证书:在证书管理中配置。
  • 禁用 HTTPS 转发:阻止到 443 端口的 HTTPS 站点重定向,避免证书错误。

HTML 页面内容

可上传自定义 HTML 页面改变门户外观。任何页面留空将使用内部默认值。页面可包含 PHP 代码和图像、CSS 等资源,注意代码安全。

页面管理操作

  • 上传:点击浏览选择文件,保存门户选项时文件将被复制。
  • 查看:点击 查看图标 查看现有页面。
  • 下载:点击 下载图标 下载副本。
  • 恢复默认:点击 恢复图标 清除自定义页面。

门户页面内容

主要呈现给用户的页面,根据认证方式提供基础模板。

无认证的门户页面示例

<html>
<head>
    <title>Welcome to our portal</title></head>
<body>
    <p>Welcome to our portal</p>
    <p>Click Continue to access the Internet</p>
    <form method="post" action="$PORTAL_ACTION$">
        <input name="redirurl" type="hidden" value="$PORTAL_REDIRURL$">
        <input name="zone" type="hidden" value="$PORTAL_ZONE$">
        <input name="accept" type="submit" value="Continue">
    </form>
</body>
</html>

带认证的门户页面示例

<html><head>
    <title>Welcome to our portal</title>
</head>
<body>
    <p>Welcome to our portal</p>
    <p>Enter your username and password and click Login to access the Internet</p>
    <form method="post" action="$PORTAL_ACTION$">
        <input name="auth_user" type="text">
        <input name="auth_pass" type="password">
        <input name="redirurl" type="hidden" value="$PORTAL_REDIRURL$">
        <input name="zone" type="hidden" value="$PORTAL_ZONE$">
        <input name="accept" type="submit" value="Login">
    </form>
</body>
</html>

带凭证的门户页面示例

<html><head>
    <title>Welcome to our portal</title>
</head>
<body>
    <p>Welcome to our portal</p>
    <p>Enter your voucher code and click Login to access the Internet</p>
    <form method="post" action="$PORTAL_ACTION$">
        <input name="auth_voucher" type="text">
        <input name="redirurl" type="hidden" value="$PORTAL_REDIRURL$">
        <input name="zone" type="hidden" value="$PORTAL_ZONE$">
        <input name="accept" type="submit" value="Login">
    </form>
</body>
</html>

认证错误页面内容

自定义认证失败时显示的 HTML 页面,默认为登录页面。

注销页面内容

登录后呈现给用户,可触发弹出窗口。默认使用 JavaScript 创建新窗口,但易被弹出阻止程序拦截,建议研究其他实现方式。

示例代码(已省略原始 JavaScript 部分,可根据需要调整):

<html>
<head><title>Redirecting...</title></head>
<body>
...
</body>
</html>

觉得内容不错?我要

评论 暂无评论
暂无评论,快来抢沙发吧~