另辟蹊径强化Radius安全性

2019-12-22 10:40
网络安全和信息化 2019年1期
关键词:路由器命令账户

配置简单实验环境

同Radius相比,Tacacs+就安全可靠的多。例如后者的认证、授权和审计功能是分离的,而前者是一体的,分别使用的是不同的UDP端口号。Tacacs+的所有数据包均处于加密状态,而Radius仅仅对密码进行加密。但Radius具有很好的通用性,诸 如 IPSEC VPN、802.1X 等技术均使用的是Raduis协议。这里面存在两台ISE设备,分别作为主从设备使用。

在某路由器上执行“radius server ISEMaster address ipv4 172.16.1.101 auth-port 1645 acct-port 1646 key passw0rd”命令,定义主ISE设备作为认证授权设备,连接密码为“passw0rd”,IP为172.16.1.101。执行“radius server ISE-slave address ipv4 172.16.1.1.102 authport 1645 acct-port 1646 key cisco”命令,定义从属ISE设备作为认证授权设备,其 IP为 172.16.1.102。

执行“aaa group server radius ISE1 server name ISEMaster”命令,将主ISE设备放置到名为“ISEGrp1”的 3A组 中。 执 行“aaa new-model”、“aaa group server radius ISEGrp2 server name ISEslave”命令,将从属ISE放置到名为“ISEGrp1”的3A组中。执行“aaa authentication login vty group ISEGrp1”、“aaa authorization exex vty group ISEGrp1”命令,使用名为“vty”的认证策略,并调用了“ISEGrp1”组。执行“line vty 0 4”、“Authorization exec vty”、“login authentication vty”、“line vty 5 15”、“Authorization exec vty”、“login authentication vty”命令,将该策略调用到VTY线路。

Radius认证和授权机制的不足

登录到主ISE设备管理界面,点击“Administration→Idebtity Management→Identities”项,在“Network Access Users”窗口中点击“Add”按钮,创建名为“gly”的用户,并设置密码,本例中使用该账户登录。点击菜单“Policy→Results”项,在左侧点击“Authorization→Authorization Profiles”项,在右侧点击“Add”按钮,创建名为“priv15”的授权策略项目,在“Attributes Details”栏中中输入“Access Type = ACCESS_ACCEPT”、“cisco-av-pair = privlvl=15”行,使用Raduis授权方式并授予使用者的操作级别。

在ISE管理界面中点击 菜 单“Policy→Policy Sets”项,显示已经默认的认证集信息。点击“+”按钮,创建新的策略集,修改合适的名称,在该策略“Conditions”列中点击“+”按钮,创建合适的条件,用来匹配所有源自于该网关设备的请求。在其最右侧点击“>”按钮,在详细信息窗口中会发现分别存在一个认证策略和授权策略。在“Authentication Policy”栏中修改默认的策略,将所有的认证者信息发送到“All_User_ID_Stores”对象中,使用ISE的本地账号数据库进行认证。

打 开“Authorization Policy”栏,在右侧点击“设置”按钮,在弹出菜单中点击“Insert new row above”项,设置新的授权策略名称。点击“+”按钮,在编辑窗口中创建合适的条件,这里设置的条件为“internalUser-Name EQUALS gly”,即登录者使用了上述内建的“gly”账户,那么就授予其上述“priv15”的权限。注意,本例中仅仅在上述路由器上进行了认证,虽然在ISE上进行了授权操作,但是却并没有生效。

即使用上述账户登录到该路由器时,并没有拥有指定的高权限。在发送给ISE的Radius请求数据包中,只会出现账户名和加密的密码信息,即只是检测该账户是否可以通过认证。虽然在路由器上并没有进行授权处理的请求,但是Radius的认证和授权是一体的,因此在ISE的回应包中却包含了认证和授权的结果信息。例如在路由器上执行“test aaa group ISEGrp1 gly xxx new-code”命令,使用特定的组和账户名进行简单认证的测试,“xxx”表示具体的密码。在返回信息中的“USER ATTRIBUTES”栏中会显示对应的授权信息。

在路由器上执行“config t”、“aaa auththorization exec vty group ISEGrp1”命令,创建名为“vty”的授权策略,并将其发送到ISE服务器上。执行“line vty 0 15”、“authorization exec vty”、“end”命令,对该授权进行调用到VTY线路上。如果使用的是Tacacs+的话,认证和授权必须分别进行请求。但是Radius的认证和授权是同时进行的,当重新登录上述路由器后,就会发现已经得到了授权,使用者拥有了高级别的操作权限。

实现RADUIS独立认证和授权

根据以上分析,可以看出Radius的不足之处,即其授权和认证请求并没有分离进行,在询问认证信息时,Raduis会自作主张的将认证和授权结果全部发送回来,即使创建空的3A组,也不会影响授权操作,这给实际的安全管理带来了不足。实际上,授权和认证应该独立运行,例如可以使用两台3A服务器分别对认证和授权进行管理,这可以明显提高操作的灵活性。例如,在某些场合会使用到IKEv2 Remote VPN连接技术,客户端远程连接到内网中的路由器上,之后经过ISE设备的认证和授权,就可以访问内部网络。

在ISE管理界面中选择“Administration→Network Resources→Network Devices”项,点击“Add”按钮,在添加设备窗口中输入作为认证服务器名称,这里的认证服务器为路由器。设置管理端口IP地址(如 172.16.1.1),选择“RADIUS Authentication Settings”项,激活Radisu认 证 功 能。 在“*Shared Secret”栏中输入共享密钥(如“passw0rd”)。 为便于设置账户密码,可选择“Administration→Identity Management→Settings”项,在左侧选择“User Authentication Settings”项,在 右 侧 的“Password Policy”栏中取消所有的选择项目,这样就可以任意设置密码了。

在路由器上执行“aaa group server radius ISEGrp1 server-private 172.16.10.101 key passw0rd”命令,创建3A组,并指向主ISE设 备。 执 行“aaa authentication login EAPAuthen group ISEGrp1”命令,将认证请求发送到主ISE设备上。执行“aaa authorization network EAPAuthen group ISEGrp2”命令,将授权请求发送给从属ISE设备。按上述方法,在ISE管理界面中创建名为“user1”的账户,密码为“pass123”。 创 建 名 为“group1”的组,并让该账户输入该组。

选择“Policy→Policy Elements→Results”项,在左侧选择“Authorization Profile”项,在右侧添加新的授权策略,输入其名称(如“Profile1”),在“Advanced Attributes Settings”栏中按照合适的格式,设置所需的属性信息,例如地址池,路由表等内容。选择“Policy→ Authorization”项,创建新的授权规则,在其“Conditions”列中设置诸如“group1”之类的条件,在“Permissions”列中选择上述“Profile1”项目文件。

注意,在主要和从属ISE设备上执行相同的配置操作。在路由器上执行“crypto ikev2 profile VPNProfile”、“match identity remote address 0.0.0.0 ”、“authentication local rsa-sig”、“authentication r e m o t e e a p q u e r yidentity”、“pki trustpoint CA”、“aaa authentication eap EAPAuthen”、“aaa authorization user eap cached”、“virtual-template x”等命令,创建所需的IKEv2 Profile配置文件。

之后创建所需的IPSec Profile和Virtual-Temlpate等对象,其作用是在客户端使用Windows自带的VPN连接工具连接时,输入“user1”账户名和密码“pass123”,将其发送给ISE设备,ISE就会根据该账户名进行认证。因为该账户属于“group1”组,所以按照上述授权策略,可以针对该账户进行授权操作。因为用户的授权优先于组的授权。也可以将其中 的“aaa authorization user eap cached”替换为“aaa authorization group eap list EAPAuthor user1 password xxx”,这样就可以指定授权账户“user1”的密码。

利用名称分隔,分离认证和授权

在ISE管理界面中创建名为“VPNGrp”的账户,密 码 为“mima123”。 创 建名 为“VPNUser@VPNGrp”的账 户,密 码 为“pass123”。在ISE中依然使用上述名为“Author1”的授权策略。创建新的授权规则,在“Conditions”列中设置诸如“Radius:User-Name EQUALS VPNGrp”之 类 的 条 件,在“Permissions”列中选择上述“Profile1”项目文件。

在路由器上执行“crypto ikev2 name-mangler Mangler1”、“eap suffix delimiter @”命令,创建名称分隔策略,这里使用了“@”进行名称分隔符,用来分隔账户名和组名。执行“crypto ikev2 profile VPNProfile”命令创建和上述相同IKEv2 Profile配置文件。所不同的是将 “aaa authorization user eap cached”修改为“aaa authorization group eap1 list EAPAuthor namemangler Mangler1 password pass123”之类的语句。其作用是在客户端进行VPN连接时,将账户名发送给ISE设备进行认证,同时将组名作为用户名进行授权。

例 如 对 于“VPNUser@VPNGrp”的账户来说,就会使用该策略进行分隔,将“VPNUser”作为用户名,将“VPNGrp”作为组名处理。这样,ISE就会使用前者进行认证,后者进行授权,因为前面已 针 对“Radius:User-Name EQUALS VPNGrp”之类的条件执行对应的授权策略。远程客户端运行VPN连接工具,输入“VPNUser@VPNGrp”账户名,输入“VPNUser”账户密码,这些信息就会发送到ISE设备上,ISE会针对“VPNUser”账户进行认证,针对“VPNGrp”账户进行授权,这样就实现了认证和授权独立操作。

为网络设备配置证书

前面说过,传统的Radius只能对数据包中的密码进行加密。对于现在新款的思科交换机路由器等产品(例如CSR1000V等),都可以利用DTLS技术对Radius数据包进行全面加密。以域管理员身份登录证书服务器,在证书颁发机构窗口左侧选择“证书模版”项,在右侧窗口中右击“新建→要颁发的证书模版”项,在启用证书模版窗口中选择“路由器(联机请求)”模版,将其放置到上述证书模版列表。

之后在浏览器中访问“http://casrv.xxx.com/certsrv/”之类的地址,打开证书申请页面,下载所需的根证书(例如“root.cer”)。使用记事本打开该根证书,复制其全部内容。在某路由 器 上 执 行“config t”、“crypt pki trustpoint D T L S”、“ e n r o l l m e n t terminal”、“subject-name cn=xx.yyy.com,ou=dpart”、“revovation-check none”、“rsakeypair xxx”、“exit”等命令,其中“xx.yyy.com”表示具体的域名,“dpart”表示具体的部门,“xxx”表示对应的密钥对。执行“crypt pki authenticate DTLS”命令,之后粘贴上述根证书的内容。在“%Do you accept this certificate?”栏中输入“y”,导入该证书。

执行“crypt pki enroll DTLS”命令,申请个人证书。在“% Include the router serial number in the subject name?”栏中输入“n”,表示不使用序列号。在“% Include an IP address in the subject name?”栏中输入“y”,表示允许放入该机的IP地址,输入具体的IP地 址。 在“Display Certificate Request to terminal?”栏中输入“y”,显示证书申请文件内容。将其复制下来,之后连续输入“n”,退出该命令。

访问CA证书服务器,点击“申请证书”链接,之后打开高级证书申请页面,在“保存的申请”栏中粘贴复制的内容,在“证书模版”列表中选择“路由器(脱机请求)”项,点击“提交”按钮,之后选择“Base 64编码”项,点击“下载证书”证书链接,保存所需的证书文件(例如“gr.cer”)。打开该证书文件复制其内容。

为ISE设备配置证书

在ISE设备上配置证书很简单,在浏览器中访问CA证书服务器,在证书申请页面中下载根证书(如rootzs.pem)。在主ISE管理界面点击“System→Certificates”项,在 左 侧 点 击“Trust Certificates”项,在 右 侧点击“Import”按钮,点击“浏览”按钮,选择并加载上述根证书,并设置合适的名称(如 RootCA)。 在“Trustd For”栏中选择所有的项目。在左侧点击“Certificate Signing Requests”项,在右侧点 击“Generate Certificate Signing Requests(CSR)”按钮,选择ISE设备节点名,输入个人信息(必须在“Organitication Unit”栏中填写组织单位名称)。

点击“Generate”按钮,产生证书的签名请求文件,将内容复制出来,在上述证书申请界面中下载个人证书文件(如grzs.crt)。在上述ISE管理界面左侧点击“Certificate Signing Requests” 项,在右侧选择请求证书项,点击“Bind Certificate”按钮,点击“浏览”按钮,选择上述个人证书,输入名称,在“Usage”栏 中 选 择“Admin”、“EAP Authentication”、“RADIUS DTLS”、“Protal” 项,点 击“Submit”按钮提交操作。在从属ISE设备上执行同样的操作来配置所需证书,其操作均在主从ISE设备上进行。

利用证书实现Radius全程加密

在路由器上执行“crypto pki import DTLS certificate”命令,在提示符下粘贴上述证书内容。执行“end”命令,返回操作界面。执行“show crypto pki certificates DTLS”命令,显示对应的证书信息。

执 行“config t”、“r a d i u s s e r v e r ISEMaster”、“no key”、“dls trustpoint server DTLS”、“dls trustpoint client DTLS”命令,让路由器和主ISE设备之间互相使用指定的证书认证。 执 行“radius server ISEslave”、“no key”、“dls trustpoint server DTLS”、“dls trustpoint client DTLS”命令,对从ISE设备进行同样的配置。

在ISE管理界面工具栏上点击“Administration→Network Devices” 项,点击“Add”按钮,将上述路由器设备添加进来。依次输入其名称(如“Route1”),设置IP地 址,选 择“RADIUS Authentication Settings”项,激活Radius认证功能。选择“DTLS Required”项,激活DTLS加密功能。在“Issuer CA of ISE Certificates for CoA”列表中选择根证书,在“DNS Name”l栏中输入该路由器所配置证书中的域名信息,例如“xx.yyy.com”。点击“Save”按钮保存。

在工具栏上点击“A d m i n i s t r a t i o n→Settings”项,在左侧选择“Protocols→ RADIUS”项,在右侧的“DTLS”标签中选择“Enable RADIUS Client identity verfication”项,这样ISE设备不仅要检测证书是否有效,而且要检测上述路由器的名称和上述预设的域名是否一致。

经过以上设置,在路由器上执行“test aaa group ISEGrp1 VPNUser@VPNGrp mima123 new-code”命 令,使用对应的账户执行连接测试,可以看到测试没有问题。执行“test aaa group ISEGrp2 VPNGrp pass123 new-code”命令,使用对应的组进行连接测试,可以看到认证顺利通过。在客户端使用VPN拨号连接,也可以顺利访问。

这样,不仅实现了证书的双向认证,而且对RADIUS数据包进行了全面加密。

猜你喜欢
路由器命令账户
买千兆路由器看接口参数
管理Windows10的PowerShell命令行使用记录
路由器每天都要关
路由器每天都要关
如何切换Windows 10本地账户与微软账户
探索自由贸易账户体系创新应用
Windows10账户的删除、禁用与启用
外汇账户相关业务
移防命令下达后
解析Windows10的内部命令