使用privacyIDEA的SSH密钥管理


由weinstock @ pixabay

在本教程中,我将介绍如何管理所有服务器和不同用户帐户的SSH密钥。 这很重要,如果您有多个SSH密钥,更重要的是,如果您对使用不同SSH密钥的许多不同用户负责。 你还知道谁的密钥位于哪些服务器上? 你会做什么,如果你必须撤销用户的密钥?

我们将使用privacyIDEA作为系统来管理SSH密钥。 最初privacyIDEA是一个管理一次性密码令牌的系统。 不久之前,它被增强了一个新的概念,以便它可以用于管理许多不同种类的身份验证项目 - 在这种情况下,SSH密钥。 (我在德国的OpenRheinRuhr 会议上就德国了一个这个话题 )。

先决条件

我假设您已经安装了privacyIDEA系统并连接了您的用户数据库。 您可以按照本教程轻松实现, 该教程将为您提供基于Ubuntu LTS的系统设备。

我们现在要做的就是

  1. 上传用户的SSH密钥,
  2. configure,哪个SSH密钥可以在哪个SSH服务器上使用
  3. 最后在SSH服务器上调整SSH配置,使用privacyIDEA管理的SSH密钥在SSH服务器上进行身份验证。

上传SSH密钥

首先我们需要上传用户的SSH密钥。

请注意:我们只需要上传SSH公钥。 不要上传私钥!

上传SSH密钥时,会创建一个类型为SSH密钥的新的令牌对象。 目前只有管理员可以上传用户的SSH密钥。 管理员必须登录并选择相应的用户。

然后单击按钮注册并选择SSH令牌类型并复制并粘贴SSH公钥。

令牌的描述将自动填写SSH密钥的注释。

现在,您可以更改到令牌视图,您可以看到类型为sshkey的新创建的令牌

将SSH密钥分配给SSH服务器

在某些机器上使用令牌的想法最初在github在线文档中描述

您需要定义哪个令牌被允许在哪个机器上的哪个应用程序进行身份验证。 (这样也可以使用LUKS进行离线认证)这可以在机器视图中完成。

在privacyIDEA 1.5中,您还需要使用IP地址定义机器(SSH服务器)。 这将在privacyIDEA 2.x中更改。

这样我们创建一个机器定义,说ssh令牌SSHK00018FD9可能用于通过SSH在服务器172.16.200.1上登录。 如果选项键留空,则此SSH令牌可用于以root用户身份登录。 您也可以输入一个选项“用户”,其用户名作为可以作为另一个用户登录的值。

安装SSH服务器

现在SSH服务器需要知道这个事实,在privacyIDEA中集中定义的密钥可以用于通过SSH登录。 有两种方法可以实现这一点。

我们可以使用saltstack将SSH密钥分发给所有的SSH服务器。 为此,我们需要设置和运行saltstack,这给我们带来了一些开销。 这就是为什么我们选择本教程中的第二个选择。

第二种方法使用SSH配置密钥AuthorizedKeysCommand 。 这可以在/ etc / ssh / sshd_config中使用来定义一个命令,每次有人尝试通过SSH登录时都会运行这个命令。 这样的命令需要将用户名作为参数,并需要返回允许的SSH密钥列表。

为了实现这一点,我们使用privacyidea admin客户端附带的privacyidea授权密钥。 因此,您需要在每个SSH服务器上安装privacyidea admin客户端。 您可以使用来自启动板现成ubuntu软件包Python软件包索引的 python软件包来完成此操作

要将privacyidea admin客户端安装到主系统中,您运行:

pip install privacyideaadm

隐私权授权密钥不允许使用除用户名之外的任何其他参数。 这就是为什么你需要创建一个配置文件/ etc / privacyidea / authorizedkeyscommand ,如下所示:

[Default]
url = https://your.privacyidea.server
admin = low_rights_admin
adminrealm = admin_realm
password = secret

请确保限制此文件的访问权限。 在生产环境中,您还应确保此配置文件中提及的令牌管理员不允许执行任何其他任务,如删除或创建令牌。

如果一切安装正确,您应该能够运行

privacyidea-authorizedkeys root

...您应该会看到您上传到privacyIDEA的ssh公钥。

最后,您需要重新配置SSH daemin并重新启动它。 您的/ etc / ssh / sshd_config应该有一个如下所示的部分:

AuthorizedKeysCommand /usr/bin/privacyidea-authorizedkeys
# You also should run the command with lower privileges.
# The low_priv_user needs to have read access to /etc/privacyidea/authorizedkeyscommand.
# AuthorizedKeysCommandUser low_priv_user

认证!

重新启动SSH守护进程后,您应该可以使用上传的SSH密钥通过SSH登录。 一旦您删除SSH令牌,甚至在privacyIDEA中禁用SSH令牌,用户就无法使用此SSH密钥登录。

这样,您可以完全控制所有用户的所有密钥。 您可以在一个中心点禁用一个SSH密钥,用户将无法再登录任何SSH服务器。

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

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

支付宝扫一扫打赏

微信扫一扫打赏