用智能卡构建身份验证的马其诺防线
在前面的博文中我们已经介绍了如何用
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
服务器,注意,这个实验必须要求有企业类型的
CA
。
2
所有的实验计算机都信任
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
上已经可以顺利地访问到内网的资源了,实验成功!
总结:从上述实验可以看出,用智能卡代替传统的用户名 / 口令进行身份验证,确实在安全性方面提高了一大截。而且智能卡的部署费用不高,一般的公司都承受得起,因此如果公司有经常出差的员 工,可以考虑给他们发一个智能卡,让他们可以安全地连接到公司内网。
作者:Angelo Lee
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.