六小龄童真名叫起来:用智能卡构建身份验证的马其诺防线:ISA2006系列之二十三

来源:百度文库 编辑:中财网 时间:2024/05/01 18:11:16
用智能卡构建身份验证的马其诺防线在前面的博文中我们已经介绍了如何用ISA2006构建VPN服务器,以及如何利用Radius服务器负责处理VPN的身份验证,今天我们要更进一步,用智能卡实现更安全的用户身份验证。我们知道,传统的用户名/口令的身份验证方法不够安全,存在被人窃听的危险,尤其是公司的VPN用户从外网进行访问,安全环境更不容易得到保证。如果我们在VPN客户机上使用智能卡进行身份验证,就可以很好地解决这个安全问题。 智能卡(SmartCard)是一个带有微处理器和存储器等微型集成电路芯片、具有标准规格的卡片。智能卡遵循的ISO7816标准规定了智能卡的外形、厚度、触点位置、电信号、协议等。 一般应用于PKI的智能卡,都带有硬件真随机数发生器、RSA协处理器,可以硬件实现RSA的运算。另外,还具有DES和SHA-1等密码算法,保证在硬件内部产生密钥对,并在硬件内部完成加、解密运算。因此,从上面的介绍来看,智能卡不仅是个存储设备,智能卡更接近于一台计算机。智能卡对加密解密可以进行很好的硬件支持,而且本身的抗攻击能力也很强,例如可通过总线分层、芯片平坦化、平衡能耗、随机指令冗余等技术抗拒时钟抖动,物理篡改等攻击方法。这样我们就有了一种新的身份验证思路,用户验证时不再使用用户名和口令,而是利用用户证书来进行验证。为了保证证书的安全,我们再把证书集成到智能卡中!这样用户在进行身份验证时只要插入自己的智能卡然后输入智能卡的PIN码就可以了,由于不需要输入用户名和口令,大大减少了泄密的可能性。即使智能卡丢了也问题不大,因为智能卡有PIN码保护,一旦输错规定次数的PIN码,智能卡就将被锁定,而且丢失了智能卡后还可以及时通知管理员作废智能卡上的证书,这样就可以更好地防止有人利用非授权的智能卡闯过身份验证这一关。下面我们构思一个实验来完成这个设想,如下图所示,Denver是contoso.com的域控制器,DNS服务器,CA服务器和Radius服务器,Beijing是ISA2006服务器,而且处在工作组环境,Istanbul是外网的一台客户机。我们在实验中使用的智能卡是飞天诚信公司出品的Epass1000,USB接口。这种智能卡由于使用了标准的USB接口,因此可以在驱动程序的支持下,把计算机的USB接口当成是智能卡的读卡器,直接把智能卡插入计算机的USB口就可以了。而传统的智能卡是由一个读卡器加上一张智能卡组成的,显然不如这样产品方便。 目前的环境中,我们已经可以具备了下列条件:1 Denver上安装了企业根CA服务器,注意,这个实验必须要求有企业类型的CA2 所有的实验计算机都信任Denver上的CA服务器。3 Beijing上已经配置成了VPN服务器,支持用户用PPTP或L2TP拨入。4 Beijing可以利用Denver上的Radius服务器对域用户进行身份验证。 我们接下来要做的就是利用CA服务器为一个测试用户颁发证书,再把证书集成到智能卡上,然后利用智能卡在外网的客户机上进行VPN身份验证,具体步骤如下。  添加证书模板首先我们要对CA服务器进行配置,让CA服务器可以对智能卡所需要的证书进行支持。我们要做的是在证书模板中添加智能卡验证所需要的模板,如下图所示,在Denver的管理工具中打开证书颁发机构,选择新建“要颁发的证书模板”。 如下图所示,我们添加了四个证书模板,分别是“智能卡用户”,“智能卡登录”,“注册代理”,“注册代理(计算机)”,点击“确定”结束证书模板的添加。  申请注册代理证书在Win2003的CA服务器中,如果要为智能卡用户申请证书,那么智能卡管理员必须先拥有一个注册代理证书。有了这个注册代理证书后,才有资格为其他用户申请智能卡证书,显然这是为了防止随意颁发智能卡证书而导致安全隐患。要申请注册代理证书,确保在Denver上是以域管理员身份登录,然后运行MMC,如下图所示,添加一个证书管理单元。 选择使用定制的证书管理单元管理用户账号中的证书。 如下图所示,在用户证书管理工具中切换到个人-证书,选择“申请新证书”。 出现证书申请向导,选择“下一步”。 申请的证书类型选择“注册代理”。 如下图所示,为申请的注册代理证书取个名字以及进行简单描述。 点击“完成”结束申请。 如下图所示,administrator已经获得了CA颁发的注册代理证书,接下来administrator就有资格为智能卡用户颁发证书了。  安装智能卡驱动在为智能卡用户申请证书之前,我们先要在Denver上安装智能卡驱动。当然,外网的Istanbul使用智能卡登录,也需要有智能卡驱动的支持。智能卡驱动的安装方法是一样的,我们在Denver上举例如何进行智能卡的安装。如下图所示,我们双击执行智能卡驱动的安装程序epslk_full.exe。 出现智能卡驱动的安装向导,点击下一步继续。 勾选“支持智能卡登录操作系统或者VPN”,点击“安装”。 开始驱动程序的安装。 如下图所示,智能卡驱动安装完成后要求重新启动计算机,点击“完成”结束安装。 Denver重启后,桌面的右下角出现了智能卡证书监控器的图标,这就是安装驱动后形成的软件读卡器。  为智能卡用户申请证书Denver上安装了智能卡驱动之后,我们就可以为智能卡用户申请证书了。我们创建了一个智能卡测试用户vpnuser,下面就来看看如何为这个用户申请智能卡证书。在Denver的浏览器中输入[url]http://denver/certsrv[/url],如下图所示,选择“申请一个证书”。 选择提交一个高级证书申请。 选择“通过使用智能卡注册站来为另一用户申请一个智能卡证书”。 如下图所示,我们在证书模板中选择“智能卡登录”。注意,模板中的“智能卡用户”一般用于配合Outlook2003实现邮件加密。加密程序选择使用Epass1000智能卡上集成的加密芯片完成,显然是要利用智能卡中的硬件芯片生成配对的公钥私钥。点击“选择用户”,选择vpnuser作为智能卡证书的颁发对象。完成了所有申请参数后,插入智能卡,点击“申请”。 如下图所示,申请证书时智能卡需要输入PIN码验证,输入正确的PIN码后点击“登录”。 如下图所示,为用户vpnuser所申请的智能卡登录证书已经成功地存储在智能卡上了。  配置ISA服务器ISA服务器需要配置身份验证协议,ISA服务器默认使用的身份验证协议是MS-CHAPV2,但使用智能卡登录需要使用可扩展的身份验证协议(EAP)。如下图所示,我们在ISA管理器中展开到虚拟专用网络,在右侧的任务面板中点击“选择身份验证方法”。 如下图所示,我们选择使用EAP协议对VPN用户进行身份验证,点击“确定”后完成了对VPN服务器的身份验证配置。  配置Radius服务器ISA服务器收到VPN用户发来的身份验证请求后,会把验证请求转到Radius服务器,因此我们接下来需要在Radius服务器上进行配置。一方面要配置Radius服务器支持EAP协议,另一方面要在Radius服务器上申请服务器证书,以便VPN客户机对Radius服务器进行身份验证。1)    申请服务器证书我们在Radius服务器上申请一个服务器证书,这样VPN客户机使用智能卡登录时可以利用这个证书验证Radius服务器的身份,避免登录到了错误的服务器上,提高整体安全性。我们在Denver的浏览器中输入[url]http://denver/certsrv[/url],如下图所示,选择“申请一个证书”。 选择提交一个高级证书申请。 选择“创建并向此CA提交一个申请”。 选择申请一个Web服务器证书,证书姓名输入denver.contoso.com,选择把证书保存在计算机存储中。参数填写完毕后,点击“申请”。 如下图所示,申请的证书已经颁发,选择安装此证书。 2)    配置Radius远程访问策略我们在Radius服务器中创建一个新的远程访问策略,在这个策略中配置使用EAP协议验证用户请求。在Denver的管理工具中打开Internet验证服务,如下图所示,选择“新建远程访问策略”。 如下图所示,出现远程访问策略创建向导,选择下一步。 选择使用向导完成远程访问策略的设置,为策略命名为VPN。 
远程访问的类型是VPN。 授予contoso.com域中的Domain users组远程访问权限。 勾选使用EAP协议,类型选择“智能卡或其他证书”,点击“配置”按钮。 点击“配置”按钮后,选择使用刚才申请的denver.contoso.com证书来证明自己的身份。 接下来选择远程访问策略支持的加密级别,我们使用默认设置选择支持所有加密级别即可。 点击完成结束新建远程访问策略的创建。  配置VPN拨号连接配置完ISA服务器和Radius服务器后,最后我们来配置VPN客户机Istanbul,让Istanbul在进行VPN访问时使用智能卡验证自己的身份。如下图所示,在Istanbul上双击事先创建好的VPN连接,点击“属性”。 在VPN连接的属性中切换到“安全”标签,如下图所示,选择“高级(自定义设置)”,点击“设置”。 如下图所示,在高级安全设置中选择使用EAP协议,点击“智能卡或其他证书(启用加密)”的属性。 如下图所示,在智能卡或其他证书的属性中选择使用智能卡进行身份验证,勾选“验证服务器证书”,勾选“连接到这些服务器”并输入Denver的IP地址10.1.1..5。在被信任的证书颁发机构中选择Denver创建的CA服务器“ITETCA”。  好了,至此终于完成了所有的前期工作,我们赶快在Istanbul上测试一下吧,如下图所示,双击VPN连接后,Istanbul提示我们插入智能卡。 插入智能卡后,我们可以看到Istanbul已经识别出智能卡上的证书是颁发给vpnuser的,我们需要输入智能卡的PIN码,然后点击“确定”。 接下来我们看到Istanbul已经连接到了Radius服务器Denver,Denver出示了一个服务器证书denver.contoso.com来证明自己的身份,如果我们认可这个证书,就点击“确定”。 我们在Istanbul上终于使用智能卡成功地通过了VPN服务器和Radius服务器的身份验证,如下图所示,我们在Istanbul上已经可以顺利地访问到内网的资源了,实验成功! 总结:从上述实验可以看出,用智能卡代替传统的用户名/口令进行身份验证,确实在安全性方面提高了一大截。而且智能卡的部署费用不高,一般的公司都承受得起,因此如果公司有经常出差的员工,可以考虑给他们发一个智能卡,让他们可以安全地连接到公司内网。