如何保护您的Ubuntu 10.10桌面与LinOTP 2

如何使用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

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏