如何使用开源软件为您的域的Google Apps添加双因素身份验证
每个人都喜欢GMail 使用适用于您的域的Google Apps,您可以将GMail与您自己的域一起使用,允许组织将其电子邮件外包 - 以及必要的反垃圾邮件过滤功能。 网络邮件非常方便,但对于频繁的旅客和使用公共WiFi的用户来说,这可能是相当危险的。 从信息亭或共享计算机登录是一种确保您的用户名和密码被击键记录器窃取的方式。 使用公共WiFi系统可能会导致中间人的袭击。 在本文档中,我们将利用两个开源项目,为Google Apps添加双因素身份验证。 第一个是Gheimdall ,一个用于Google Apps SSO服务的TurboGears项目。 Gheimdall本地支持PAM和LDAP身份验证。 它还包括添加新认证方法的示例代码,这使得从WiKID添加双因素身份验证变得非常简单。 WiKID是一种双源双因素身份验证解决方案,它使用公共密钥加密技术强力验证用户。
安装Gheimdall
我安装了Gheimdall,按照Centos的说明 ,让我使用yum:
wget http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-2.noarch.rpm
rpm -ivh epel-release-5-2.noarch.rpm
wget http://gheimdall.googlecode.com/files/gheimdall-repos-5-3.noarch.rpm
rpm -ivh gheimdall-repos-5-3.noarch.rpm
yum install gheimdall
为您的域配置单一登录的Google Apps
您需要使用Google Apps总理才能拥有SSO功能。 他们有一个30天的试用版,所以你可以先测试一下。 在高级工具下,选择设置单点登录(SSO),选中启用单点登录,并输入SAML的URL:
Sign-in page URL: http://your.domain.example.com/gheimdall/login Sign-out page URL: http://your.domain.example.com/gheimdall/logout Change password URL: http://your.domain.example.com/gheimdall/passwd
我们需要创建与Google通话的公私钥匙。 Gheimdall的文档为我们提供了一个快速的方法:
openssl genrsa -des3 -out privkey.pem 2048
openssl rsa -in privkey.pem -out privkey-nopass.pem
openssl rsa -in privkey-nopass.pem -pubout -outform DER -out publickey.der
上传publickey.der作为验证证书,就是Google Apps控制台。
配置WiKID Gheimdall插件
WiKID插件需要pyOpenSSL:
yum install pyOpenSSL
从网络客户端页面下载WiKID Gheimdall插件 。
您需要将WiKID组件wikid_gheimdall.py,pywClient.py,WiKID-ca.pem复制到Gheimdall目录中:
cp wikid_gheimdall.py pywClient.py WiKID-ca.pem /usr/lib/python2.4/site-packages/gheimdall/auth/
现在我们需要编辑wikid_gheimdall.py中的设置。 有一天,这些可能会外化。
domaincode = '010100000010' host = '10.100.0.10' port = 8388 caCert = '/usr/lib/python2.4/site-packages/gheimdall/auth/WiKID-ca.pem' pkey = '/usr/lib/python2.4/site-packages/gheimdall/auth/test67_wauth.p12' passPhrase = 'google'
域代码是WiKID服务器上的域; host是其IP地址。 端口是WiKID wAuth协议使用的端口,不应该更改。 caCert作为WiKID-ca.pem复制到上一步中的此目录中。 您将在WiKID服务器上创建网络客户端证书,并将其作为pkey与其passPhrase引用,以便可以在Gheimdall服务器和WiKID服务器之间创建SSL加密通道。
现在我们需要编辑config / app.cfg来告诉Gheimdall使用WiKID:
# auth_engine to use apps.auth_engine = 'wikid_gheimdall'
在WiKID强认证服务器上添加Gheimdall作为网络客户端
我们正在使用WiKID强认证服务器的开源社区版。
首先,我们将在Gheimdall的WiKID服务器上添加一个域,然后我们将创建一个网络客户端并将创建证书复制到Gheimdall服务器。
将域添加到WiKID服务器
从WiKID服务器Web管理界面,单击“ 域 ”选项卡和“ 创建新域” 。 输入域名和设备名称。 设备名称将显示在WiKID令牌上。 服务器代码将是WiKID服务器的可路由的零填充IP地址(例如10.1.1.1 = 010001001001 - 尽管该地址当然不可路由)。 设置您认为合适的其他参数。 虽然较长的PIN可能会以数学方式提高安全性,但是四位数的PIN可能更好:如果用户使用自己的ATM PIN,则更有可能保护它。
创建一个网络客户端
保存域信息后,单击网络客户端选项卡和创建新的网络客户端 。 输入此客户端的名称和网络上的Gheimdall服务器的IP地址。 选择wAuth作为协议,然后选择您上面创建的域。
单击添加以获取下一页,并输入目标服务器的p12证书信息。 Gheimdal服务器和WiKID服务器之间的通信将使用此p12文件通过SSL加密。 输入此p12文件的密码两次,以及在配置过程中用于服务器中间证书的密码。 当您返回网络客户端页面时,您将看到列出的新网络客户端和下载p12文件的链接。 下载p12文件 ,并将其放在Gheimdall服务器上,与我们配置中的Gheimdall WiKID代码 - /usr/lib/python2.4/site-packages/gheimdall/auth/相同。
应该是 我们现在可以通过登录Google Apps进行测试。 当您尝试登录时,您应该重定向到您的Gheimdall登录页面:
在您的WiKID令牌上,输入PIN码:
你应该得到你的一次性密码:
输入您的用户名和一次性密码,您应该进行身份验证:
恭喜你 您已经为您的域配置了Google Apps,以使用WiKID的开源双因素身份验证。 这应该让你感觉更安全。