定义
portal认证通常也称为web认证,一般将portal认证网站称为门户网站。用户上网时,必须在门户网站进行认证,如果未认证成功,仅可以访问特定的网络资源,认证成功后,才可以访问其他网络资源。
免安装:portal认证不需要安装专门软件
便于运营:可以在portal页面上进行业务拓展,如广告推送、企业宣传等
应用广泛:运营商、连锁快餐、酒店、学校
部署位置灵活:可以在接入层或关键数据的入口作访问控制
用户管理灵活:可基于用户名与vlan/ip/mac地址的组合对用户进行认证
架构
包括客户端、接入设备、portal服务器和认证服务器。

客户端:安装有运行http/https协议的浏览器的主机
接入设备:交换机、路由器等接入设备的统称,主要有三个方面的作用。
认证前:将认证网段内用户的所有http/https请求都重定向到portal服务器
认证中:与portal服务器、认证服务器交互,完成对用户身份认证、授权与计费的功能
认证后:允许用户访问被管理员授权的网络资源。
portal服务器:接收客户端认证请求的服务器系统,提供免费门户服务和认证界面,与接入设备交互客户端的认证信息。
外置Portal服务器:支持外置独立服务器的扩展功能,例如支持MAC优先的Portal认证。
内置Portal服务器:内嵌于接入设备内,实现简单的Portal服务器功能,不能完全替代独立的Portal服务器。
优点:不需要部署额外的Portal服务器,故增强了Portal认证的通用性。
缺点:受限于接入设备存储空间、功能和性能,仅能给用户提供通过Web方式上线、下线的基本功能,不支持外置独立服务器的任何扩展功能,例如不支持MAC优先的Portal认证。
场景:适用于功能简单、接入人数少的场景,例如小型餐馆提供的连接Internet服务。
认证服务器:与接入设备进行交互,完成对用户的认证、授权与计费。
portal协议
portal协议分为portal接入协议和portal认证协议
portal接入协议
基于http/https协议,描述了客户端和portal服务器之间的协议交互。
客户端通过HTTP/HTTPS协议依次向portal服务器发起连接请求和portal认证请求。
portal认证协议
支持如下两种认证协议
portal协议:描述了portal服务器和接入设备之间的协议交互,可以用来传递用户名和密码等参数。其兼容中国移动portal 2.0协议,支持该协议的基本功能。
收到客户端的portal认证请求后,portal服务器通过portal协议向接入设备发起portal认证请求(携带用户名和密码)。
http/https协议:描述了客户端和接入设备之间的协议交互,可以用来传递用户名和密码等参数。收到客户端的portal认证请求后,portal服务器通过HTTP/HTTPS协议通知客户端向接入设备发起portal认证请求,然后客户端通过HTTP/HTTPS协议向接入设备发起portal认证请求(携带用户名和密码)
portal认证方式
按照网络中实施portal认证的网络层次来分,portal认证方式分为两种:二层认证方式和三层认证方式。
二层认证
当客户端与接入设备之间为二层网络时,即客户端与接入设备直连(或之间只有二层设备存在),接入设备可以学习到客户端的mac地址,则接入设备可以利用IP地址和mac地址来识别用户,此时可以配置portal认证为二层认证方式。
二层认证流程简单,安全性高,但是由于限制了用户只能与接入设备处于同一网段,所以组网灵活性不高
三层认证
当客户端与接入设备之间包含三层网络时,即客户端与接入设备之间存在三层转发设备,接入设备不能获取到认证客户端的MAC地址,只能以IP地址作为用户的唯一标识,此时需要将Portal认证配置为三层认证方式。
三层认证组网灵活,容易实现远程控制,但由于只能以IP地址作为用户的唯一标识,所以安全性不高。
portal认证流程
认证的第一件事情就是发起认证,有两种认证触发方式:
主动认证
用户通过浏览器主动访问Portal认证网站时,即在浏览器中直接输入Portal服务器的网络地址,然后在显示的网页中输入用户名和密码进行认证,这种开始Portal认证过程的方式即为主动认证,即由用户自己主动访问Portal服务器发起的身份认证。
重定向认证
用户输入的访问地址不是Portal认证网站地址时,将被强制访问Portal认证网站(通常称为重定向),从而开始Portal认证过程,这种方式称作重定向认证。
基于portal协议的portal认证流程
在二层认证方式下,用户上线时的报文交互流程。在三层方式没有建立预连接过程。
1、在认证之前客户端与接入设备之间建立起预连接,即客户端用户在认证成功之前在接入设备上已建立用户在线表项,并且只有部分网络访问权限。
2、客户端发起HTTP连接请求。
3、接入设备收到HTTP连接请求报文时,如果是访问portal服务器或免认证网络资源的http报文,则接入设备允许其通过;如果是访问其他地址的http报文,则接入设备将其url地址重定向到portal认证页面。
4、客户端根据获得的url地址向portal服务器发起http连接请求。
5、portal服务器向客户端返回portal认证页面
6、用户在portal认证页面输入用户名和密码后,客户端向portal服务器发起portal认证请求
7、portal服务器收到portal认证请求后,如果portal服务器与接入设备之间采用chap认证,则portal服务器向接入设备发起portal挑战字请求报文(req-challenge);如果portal服务器与接入设备之间采用pap认证,则接入设备直接进行第9步。
8、接入设备向portal服务器回应portal挑战字应答报文(ack-challenge)
9、portal服务器将用户输入的用户名和密码封装在portal认证请求报文(req-auth)中,并发送给接入设备
10、接入设备根据获取到的用户名和密码,向radius服务器发送radius认证请求(access-request)
11、radius服务器对用户名和密码进行认证。如果认证成功,则radius服务器向接入设备发送认证接受报文(access-accept),如果认证失败,则radius服务器返回认证拒绝报文(access-reject),由于radius协议合并了认证和授权的过程,因此认证接受报文中也包含了用户的授权信息。
12、接入设备根据接收到的认证结果接入/拒绝用户,如果允许用户接入,则接入设备向radius服务器发送计费开始请求报文(accounting-request)
13、radius服务器返回计费开始相应报文(accounting-resquest),并开始计费,将用户加入自身在线用户列表。
14、接入设备向portal服务器返回portal认证结果(ack-auth),并将用户加入自身在线用户列表
15、portal服务器向客户端发送认证结果报文,通知客户端认证成功,并将用户加入自身在线用户列表
16、portal服务器向接入设备发送认证应答确认(aff-ack-auth)
基于HTTP/HTTPS协议的portal认证流程
二层认证方式如下,三层没有预连接过程。
在认证之前客户端与接入设备之间建立起预连接,即客户端用户在认证成功之前在接入设备上已建立用户在线表项,并且只有部分网络访问权限。
- 客户端发起HTTP连接请求。
- 接入设备收到HTTP连接请求时,如果是访问Portal服务器或免认证网络资源的HTTP报文,则接入设备允许其通过;如果是访问其它地址的HTTP报文,则接入设备将其URL地址重定向到Portal认证页面。
- 客户端根据获得的URL地址向Portal服务器发起HTTP连接请求。
- Portal服务器向客户端返回Portal认证页面。
- 用户在Portal认证页面输入用户名和密码后,客户端向Portal服务器发起Portal认证请求。
- Portal服务器通知客户端向接入设备发起Portal认证请求。
- 客户端向接入设备发起Portal认证请求(HTTP POST/GET)。
- 接入设备根据获取到的用户名和密码,向RADIUS服务器发送RADIUS认证请求(ACCESS-REQUEST)。
- RADIUS服务器对用户名和密码进行认证。如果认证成功,则RADIUS服务器向接入设备发送认证接受报文(ACCESS-ACCEPT);如果认证失败,则RADIUS服务器返回认证拒绝报文(ACCESS-REJECT)。由于RADIUS协议合并了认证和授权的过程,因此认证接受报文中也包含了用户的授权信息。
- 接入设备根据接收到的认证结果接入/拒绝用户。如果允许用户接入,则接入设备向RADIUS服务器发送计费开始请求报文(ACCOUNTING-REQUEST)。
- RADIUS服务器返回计费开始响应报文(ACCOUNTING-RESPONSE),并开始计费,将用户加入自身在线用户列表。
- 接入设备向客户端返回Portal认证结果,并将用户加入自身在线用户列表。
portal认证授权
认证:用于确认尝试接入网络的用户身份是否合法
授权:用于指定身份合法的用户所能拥有的网络访问权限,即用户在认证后能够干嘛
授权最常用的是acl和ucl。
acl
用户认证成功后,认证服务器将指定acl授权给用户,则设备会根据该acl对用户报文进行控制
如果用户报文匹配到该acl中动作为permit的规则,则允许其通过
如果用户报文匹配到该acl中动作为deny的规则,则将其丢弃
radius服务器授权acl有两种方法:
授权静态acl:radius服务器通过radius标准属性filter-id将acl id授权给用户。为使授权的acl生效,需要
UCL
用户控制列表UCL组(User Control List)是网络成员的集合。UCL组里面的成员,可以是PC、手机等网络终端设备。借助UCL组,管理员可以将具有相同网络访问策略的一类用户划分为同一个组,然后为其部署一组网络访问策略,满足该类别所有用户的网络访问需求。相对于为每个用户部署网络访问策略,基于UCL组的网络控制方案能够极大的减少管理员的工作量。RADIUS服务器授权UCL组有两种方式:
- 授权UCL组名称:RADIUS服务器通过RADIUS标准属性Filter-Id将UCL组名称授权给指定用户。
- 授权UCL组ID:RADIUS服务器通过华为RADIUS扩展属性HW-UCL-Group将UCL组ID授权给指定用户。无论是哪一种授权UCL组方式,都必须提前在设备上配置相应的UCL组及UCL组的网络访问策略。
用户组
用户组指具有相同角色、相同权限等属性的一组用户(终端)的集合。每个用户组可以关联不同的ACL、CAR、报文优先级,因而通过用户组授权,可以实现对每类用户进行基于ACL的访问控制、基于VLAN的访问控制、流量控制以及优先级控制,管理更灵活。
比如,由于ACL资源有限,当每用户需要的授权ACL较多时,上线授权的用户数无法达到规格,但实际用户数很大,用户权限的分类比较少的,此时可以使用用户组,每一组用户复用ACL,以利用有限的ACL支持较大规格的用户进行ACL授权。 用户组可以在RADIUS服务器上配置,也可以在设备端配置(需在AAA域下应用)。如果用户希望使用RADIUS服务器下发的用户组授权,需要保证RADIUS服务器上下发的用户组在设备上已经配置(不需在AAA域下应用)。
RADIUS服务器下发用户组授权的方式和下发ACL ID的方式一样,都是用11号标准属性Filter-Id来携带,属性值填充用户组名称。11号属性将优先被当成ACL编号处理。当设备上不存在该ACL编号的时候,则当成用户组处理,如果设备上也不存在该用户组时,则授权失败。
RADIUS服务器下发的用户组授权优先级高于设备端配置的用户组授权,当服务器下发的用户组授权失败后,用户会采用设备端配置的用户组授权。
free-rule
用户认证成功之前,为满足用户基本的网络访问需求,需要用户认证成功前就能获取部分网络访问权限。可在free-rule模板中配置free-rule规则,满足用户的认证成功前的网络访问需求。
用户的free-rule可以通过普通的free-rule定义,也可以通过ACL定义。普通的free-rule由IP地址、MAC地址、接口、VLAN等参数确定;通过ACL定义的free-rule由ACL规则确定。两种方式定义的free-rule都能够指定用户无需认证就可以访问的目的IP地址。除此之外,ACL定义的free-rule还能够指定用户认证成功前就可以访问的目的域名。
基于域名定义用户的free-rule有时要比基于IP地址简单方便。例如,某些认证用户由于没有认证账号,必须首先在运营商提供的官方网站上注册申请会员账号;或者通过微博、微信等第三方账号进行登录。这就要求用户认证通过前,能够访问特定的网站。由于用户记忆网站的域名要比记忆其IP地址容易的多,所以,此时可以通过ACL定义的free-rule,指定用户认证成功前即可访问以上网站域名。
Portal认证逻辑流程
在用户进行Portal认证的过程中,接入设备的处理逻辑如图所示,此处以RADIUS认证方式为例进行说明。
- 用户访问网络时,如果配置了预连接授权,则用户获取相应权限,用户访问权限之外的资源时,触发用户重定向到Portal认证网站;如果未配置预连接授权,则触发用户重定向到Portal认证网站。
- 用户访问Portal认证网站,如果Portal服务器正常,则接入设备与RADIUS服务器进行Portal认证。如果Portal服务器Down,则检查Portal服务器Down时的网络访问权限,按是否配置相应权限处理,当配置了Portal服务器状由Down转变为Up时对用户进行重认证,按照重认证的触发机制对相应状态用户进行重认证。
- Portal认证时,如果RADIUS服务器状态正常,则用户认证成功授与完整权限,如果用户认证失败,则依次检查认证失败授权和预连接授权,并获取相应权限。如果RADIUS服务器Down,则依次检查认证服务器Down时的网络访问权限、用户在认证失败时的网络访问权限、用户在预连接阶段的网络访问权限,按是否配置相应权限处理。
portal准入控制配置案例
实验拓扑
配置思路
1、底层配置
2、交换机portal认证配置
3、ac配置
3.1、增加设备
3.2、创建portal账号
3.3、增加认证规则
3.4、增加授权结果
3.5、增加授权规则
4、验证结果
具体配置
1、防火墙基础配置
#接口配置
sys fw1
int g0/0/0
ip add 192.168.0.10 24
int g0/0/1
ip add 10.1.1.10 24
int g0/0/3
ip add 192.168.1.10 24
int g0/0/2
ip add 202.100.1.10 24
#配置安全区域
fire zone trust
add int g0/0/1
fire zone dmz
add int g0/0/3
fire zone untrust
add int g0/0/2
quit
ip route-static 0.0.0.0 0 202.100.1.254
ip route-static 10.1.2.0 24 10.1.1.254
user-interface con 0
id 0
2、路由器配置
sys ISP
undo int vlanif1
acl 2000
rule permit
int g0/0/0
undo portswitch
nat outbound 2000
ip add dhcp-alloc
int g0/0/1
undo portswitch
ip add 202.100.1.254 24
quit
ip route-static 10.1.0.0 16 202.100.1.10
user-interface con 0
id 0
3、接入交换机配置MAC认证
3.1、创建并配置radius服务器模板
#配置radius
radius-server template RADIUS-POLICY
radius-server shared-key cipher Huawei@123
radius-server authentication 192.168.1.100 1812
radius-server accounting 192.168.1.100 1813
quit
radius-server auththorization 192.168.1.100 shared-key cipher Huawei@123
3.2、创建并配置AAA认证、计费方案
aaa
authentication-scheme AUTH
authentication-mode radius
accounting-scheme ACCOUNT
accounting-mode radius
accounting realtime 3
3.3、配置认证域,并在其上绑定aaa认证、计费方案、radius服务器模板
aaa
domain default
authentication-scheme AUTH
accounting-scheme ACCOUNT
radius-server RADIUS-POLICY
3.4、配置联动portal服务器
web-auth-server PORTAL #配置网页认证服务器
server-ip 192.168.1.100
port 50200 #注:默认使用的是50100,也可以使用50200
shared-key simple Huawei@123
url http://192.168.1.100:8080/portal #推送重定向认证界面
server-source ip-address 10.1.1.254 #注:V200R020及以上版本必须配置
web-auth-server server-source all-interface #注:可以使用全局
web-auth-server listening-port 2000 #默认监听2000
#统一模式
portal-access-profile name PORTAL-ACC-PROFILE#配置portal接入模板
web-auth-server PORTAL direct#调用网页认证服务器
authentication-profile name AUTH-PROFILE#配置认证模板
portal-access-profile PORTAL-ACC-PROFILE#调用portal接入模板
#调用接口
interface GigabitEthernet0/0/9
authentication-profile AUTH-PROFILE
4、ac配置
4.1、增加接入设备
资源---设备--设备管理---所有设备----添加
在启用radius的基础上启用portal
4.2、增加终端用户
新增设备组--接入设备,并将刚刚增加的设备接入设备移动到接入设备组
资源---用户管理--增加用户组
在创建的用户组下面增加用户
4.3、配置认证规则
创建认证规则
选择接入业务
关联用户组
关联接入设备组
关联认证协议
注意和dot1x的区别是需要关联用户组
4.4、配置动态acl
4.5、配置授权结果
新增授权结果
选择接入业务,配图出错
关联动态acl
4.6、配置授权规则
新增授权规则
关联接入设备组
关联用户组
关联授权结果
5、验证结果
0、在终端pc上访问公网www.baidu.com自动跳转到portal认证页面
登录前无法访问其他网络。连自己的网关都无法访问,但是可以访问ac服务器。
1、在sw上检查在线用户
[sw1]dis access-user
------------------------------------------------------------------------------------------------------
UserID Username IP address MAC Status
------------------------------------------------------------------------------------------------------
20 portaluser1 10.1.2.1 0050-569e-ce30 Success
------------------------------------------------------------------------------------------------------
Total: 1, printed: 1
2、检查在线用户详细信息
[sw1]dis access-user user-id 20
Basic:
User ID : 20
User name : portaluser1
Domain-name : default
User MAC : 0050-569e-ce30
User IP address : 10.1.2.1
User vpn-instance : -
User IPv6 address : -
User access Interface : GigabitEthernet0/0/9
User vlan event : Success
QinQVlan/UserVlan : 0/11
User vlan source : user request
User access time : 2021/02/10 12:26:41
User accounting session ID : sw100009000000011b0****0000014
Option82 information : -
User access type : WEB
Terminal Device Type : Data Terminal
Web-server IP address : 192.168.1.100
Dynamic ACL desc(Effective) :
No. 0: acl 10000 dest-ip 202.100.1.0 dest-ipmask 24 permit
Service Scheme Priority : 0
AAA:
User authentication type : WEB authentication
Current authentication method : RADIUS
Current authorization method : -
Current accounting method : RADIUS
3、ac检查日志
6、访客管理特性配置
6.1、配置访客账号策略
策略--访客管理---访客账号策略
6.2、配置认证规则
注意用户组配置为guest组
6.3、配置授权规则
注意用户组配置为guest组
6.4、测试注册
[sw1]dis web-auth-server configuration
Listening port : 2000
Portal : version 1, version 2
Include reply message : enabled
Server-Source : all-interface
------------------------------------------------------------------------------------------------
Web-auth-server Name : RADIUS-POLICY
IP-address : 192.168.1.100
Shared-key : ******
Source-IP : -
Port / PortFlag : 50200 / NO
Server-Source : -
URL : http://192.168.1.100:8080/portal
URL Template :
URL Template ParaName:
URL Template IVName :
URL Template Key :
Redirection : Enable
Sync : Disable
Sync Seconds : 0
Sync Max-times : 0
Detect : Disable
Detect Seconds : 60
Detect Max-times : 3
Detect Critical-num : 0
Detect Action :
Detect Type : portal
VPN Instance :
Bound Portal profile :
Protocol : portal
Http Get-method : disable
Password Encrypt : none
Cmd ParseKey : cmd
Username ParseKey : username
Password ParseKey : password
MAC Address ParseKey : macaddress
IP Address ParseKey : ipaddress
Initial URL ParseKey : initurl
Login Cmd : login
Logout Cmd : logout
Login Success
Reply Type : redirect initial URL
Redirect URL :
Message :
Login Fail
Reply Type : redirect login URL
Redirect URL :
Message :
Logout Success
Reply Type : message
Redirect URL :
Message : LogoutSuccess!
Logout Fail
Reply Type : message
Redirect URL :
Message : LogoutFail!