如何使用LinOTP保护您的Ubuntu 10.10桌面2
本手册将指导您在Linux机器上设置一个LinOTP独立的一次性密码身份验证后端。 这使您能够将双重身份验证与一次性密码添加到桌面登录。
LinOTP是一种模块化OTP(一次性密码)解决方案,支持许多不同的OTP令牌。 LinOTP是用python编写的,基于pylons和apache。 它是AGPLv3下的开源许可。 额外的功能,维护和支持可以在企业版中获得许可。
这个howto应该运行在Ubuntu 10.10和Debian Squeeze上。
先决条件
您可以从LinOTP网站下载所需的软件包,也可以将在线存储库添加到您的存储库,并使用apt-get进行安装。
这个Howto将使用第二种方式来安装软件。
配置在线存储库
首先,您需要添加GPG密钥,用于签署软件包:
wget http://linotp.org/apt/LSE\ LinOTP2\ Packaging\ linotp2@lsexperts.de\ \(0xF86258E5\)\ pub.as
sudo apt-key add http://linotp.org/apt/LSE\ LinOTP2\ Packaging\ linotp2@lsexperts.de\ \(0xF86258E5\)\ pub.asc
然后将存储库添加到系统中:
sudo add-apt-repository "deb http://linotp.org/apt/ubuntu lucid linotp2ce"
安装
现在可以安装LinOTP服务器,管理客户端和PAM模块:
sudo apt-get install linotp linotpuseridresolver libpam-linotp linotpadminclientce
在安装linotp软件包时,您会遇到几个问题:
你想通过Apache2运行LinOTP 2吗?
- >是的
输入新的LinOTP管理员帐户的管理员密码。
- 想到一个
你想创建一个自己签名的ceritficate吗?
- >是的
要用于令牌数据库的SQL数据库是什么?
- > Mysql
数据库主机名: - > localhost
令牌名称 - > LinOTP2
数据库用户 - > linotp2
数据库用户密码: - >想一个
输入MySQL root密码
要创建表: - >是
在安装过程中,将创建加密密钥/ etc / linotp2 / encKey
。 一定要输入MySQL的root密码,所以也会创建数据库。
现在您有两种管理LinOTP服务器和OTP令牌的可能性。 您可以使用命令行客户端linotpadmin.py或位于的Web界面
https://localhost/manage
请注意 :如果您有“内部服务器错误”,请查看/var/log/apache2/error.log
。 可能的是,目录/ var / log / linotp
的访问权限不正确。 还有整个目录/ etc / linotp2
需要由用户linotp拥有
。
UserIdResolver的配置
LinOTP通过所谓的UserIdResolvers读取用户。 APGLv3版本附带PasswdUserIdResolver,可用于从平面文件(如/ etc / passwd)
读取用户。 只要您坚持使用passwd格式,您也可以创建一个包含用户的新文件。
企业版还为位于LDAP和SQL数据库中的用户提供了解决方案。
您可以使用管理Web ui或命令行客户端来设置您的LinOTP服务器。 您需要配置UserIdResolver和默认领域。 您可以通过发出以下命令来执行此操作:
linotpadm.py --url=https://localhost --admin=admin --command=setresolver --resolver=defaultPW --rtype=FILE --rf_file=/etc/passwd
它从/ etc / passwd
文件读取用户。 你将得到一个这样的JSON反馈:
{ u'status': True,....}
现在您需要将此解析器添加到默认领域:
linotpadm.py --url=https://localhost --admin=admin --command=setrealm --realm=defrealm --resolver=useridresolver.PasswdIdResolver.IdResolver.defaultPW
linotpadm.py --url=https://localhost --admin=admin --command=setdefaultrealm --realm=defrealm
您可以在网站ui中查看或发出命令:
linotpadm.py --url=https://localhost --admin=admin --command=listuser
您应该看到您的用户列表。 现在,您可以为您的用户分配令牌。
注册OTP令牌
现在可能需要注册OTP令牌。 在这个例子中,我们在手机上注册了一个motp令牌(你也可以注册一个OATH令牌或一个Google认证器)。 从http://motp.sourceforge.net下载该应用程序, 并将其安装在您的手机上。 您可以通过在手机上输入0000
作为PIN来初始化令牌。 将显示一个初始密码。
linotpadm.py --url=https://localhost --admin=admin --command=inittoken --user=cornelius --type=motp --otpkey=860e2e9bf9d50665 --serial=1 --otppin=1234
这意味着,您生成一个被分配给用户“cornelius”的mOTP令牌。 otpkey是您手机上显示的初始密码。 您可以根据需要选择一个序列号(序列号)。 otppin是您将在手机上输入的PIN以生成otp值。
或者,您可以设置OTP PIN(这是一个固定的密码部分),您需要在OTP值的前面输入(取决于参数PrependPIN):
linotpadm.py --url=https://localhost --admin=admin --command=set --pin=Password --serial=1
或者,您可以使用管理Web界面注册令牌。
现在,您已准备好生成您的第一个OTP值! 去门户网站:
https://localhost/auth/index
并输入您设置的用户名和密码,以及您通过手机生成的otp值。 如果您无法进行身份验证,则可能会误将初始密钥错误,或者手机的时间可能会不同步。
通过PAM验证
现在我们将设置PAM,使您能够对桌面进行身份验证。 安全模块/lib/security/pam_linotp.so
已安装到系统中。 您现在可以设置otp身份验证。 我们选择做模块化:
cp /etc/pam.d/common-auth /etc/pam.d/common-linotp
在/etc/pam.d/common-linotp
更改行:
auth [success=1 default=ignore] pam_unix.so nullok_secure
至
auth [success=1 default=ignore] pam_linotp.so debug nosslhostnameverify nosslcertverify url=https://localhost/validate/simplecheck realm=defrealm resConf=defaultPW
请注意,当使用“调试”选项时,许多信息 - 也是密码! - 将写入auth.log
。
您现在可以在任何PAM配置中使用common-linotp,而不是在您喜欢的地方使用common-auth。 也可以更改/etc/pam.d/gdm中
的行:
@include common-auth
至
@include common-linotp
现在您将需要使用OTP进行身份验证到您的Gnome桌面! 请注意,如果您还想使用OTP解锁桌面,还需要更改/etc/pam.d/gnome-screensaver
。 您不会被要求输入“密码”,但不得不提供“您的OTP”。
如果您无法验证,您也可以查看/var/log/auth.log
。