SSH紧急访问

2020-07-04 19:45:00

在这篇文章中,我们将设计一个破玻璃程序,以便在紧急情况下使用可以离线存储的安全密钥联系SSH主机。这只是一种方法,但您可以根据您的情况进行调整。我们将在硬件安全密钥上存储脱机SSH证书颁发机构,并让我们的主机信任该CA。这几乎可以在任何OpenSSH设置上工作,包括我们的单点登录SSH。

你为什么想要这个?只是作为最后的选择。一个后门进入您的服务器,无论出于什么原因,其他东西都不起作用。

被动撤销。证书过期;公钥不过期。您可以创建有效期为1分钟甚至5秒的SSH证书。一旦过期,证书将无法用于新连接。这非常适合偶尔进行紧急访问。

您将能够为主机上的任何帐户创建证书,并根据需要将短期证书发送给同事。

支持驻留密钥的硬件安全密钥。驻留密钥是完全存储在安全密钥上的加密密钥-有时受字母数字PIN保护。驻留密钥的公共部分可以在需要时与私钥句柄一起从安全密钥导出。Yubikey 5系列密钥支持常驻密钥。最好将这些密钥专用于紧急主机访问。在这篇文章中,我将只使用一个密钥,但是您应该有一个备用密钥。

在本地计算机和要紧急访问的服务器上安装OpenSSH 8.2或更高版本。Ubuntu20.04附带OpenSSH8.2。

(可选)检查证书的步骤CLI-在MacOS上使用BREW安装步骤进行安装(此处有Linux安装说明)。

对于注释(-C),我提供了Yubikey-9-512-742@mall step.com来提醒我该CA引用的是哪个安全密钥(在Yubikey上,序列号打印在密钥本身上)。

除了将密钥添加到Yubikey之外,这还将在本地生成两个文件:

但别担心,Yubikey上存储着另一个无法提取的真正的私钥。

作为主机上的root用户,如果您还没有sshd配置(/etc/ssh/sshd_config),请将其添加到sshd配置中:

然后,将CA公钥(sk-user-ca.pub)的内容附加到主机上的/etc/ssh/ca.pub。

现在我们可以尝试访问主机了。但是我们首先需要一张证书!

人们很容易将SSH证书视为公钥/私钥对的替代品,但仅有证书并不足以对用户进行身份验证。每个SSH证书还具有与其关联的专用密钥。这就是我们在给自己颁发证书之前需要生成这个紧急密钥对的原因。重要的是向服务器提供了一个签名证书,该证书指向您拥有私钥的密钥对。我们实际上不需要Emergency.pub来运行这些命令中的任何一个,但是无论如何,我们都可以从ssh-keygen获得一个。

因此,即使有证书,公钥交换仍然有效。证书只是消除了服务器存储公钥的需要。

现在创建证书本身;它将允许用户ubuntu在5分钟前开始的10分钟窗口内登录(以解决时钟偏差问题)。您可以根据需要更改这些值。

紧急证书pub类型:[email protected]用户证书公钥:ecsa-cert SHA256:EJSfzfQv1UK44/LOKhBbuh5oRMqxXGBSr+UAzA7cork签名CA:sk-ecdsa SHA256:kLJ7xfTTPQN0G/IF2cq5TB3EitaV4k3XczcBZcLPQ0E密钥ID:";测试密钥";序列号:0有效期:2020-06-24T16:53:03至2020-06-24T16:03:03主体:ubuntu关键选项:(无)扩展:允许-x11-转发许可-代理-转发。

这里,公钥是您创建的紧急密钥,签名CA是sk-user-ca。

就是这样!🥳您现在可以为信任您的紧急证书颁发机构的主机上的任何用户创建ssh证书。

您现在可以删除紧急情况*。您可以保留sk-user-ca*,但不需要这样做,因为它也驻留在安全密钥上。您可能还希望从主机中删除原始的PEM公钥(例如,在ubuntu用户的~/.ssh/AuthorizedKEYS中),如果您一直在使用它进行紧急访问的话。

为任何用户创建有效期为一小时或更短时间的证书(如果需要):

$ssh-keygen-t ecdsa-f紧急$ssh-keygen-us sk-user-ca.pub-i test-key-n[用户名]-V-5M:+60M紧急$chmod 600紧急-cert.pub。

如果现有的.ssh/config文件在连接时导致任何问题,您可以运行ssh并使用-F NONE来绕过它。

如果您需要向同事发送证书,Magic Wormhole是一个简单而安全的选择。他们唯一需要的文件就是紧急情况和紧急情况-cert.pub。

我喜欢这种方法的原因是它的硬件是有后盾的。你可以把安全钥匙放在保险箱里,除非你需要它们,否则它们哪儿也不会去。