如何在Linux上最妥善地管理加密密钥?(3)

  安全方法

知道自己的基础设施和独特情况后,你就需要制定一项密钥管理方案,帮助你指导如何分发和存储密钥。比如说,正如前文所述,如果我的平板电脑被偷,但愿平板电脑被用来访问服务器之前,我可以从服务器上废除公钥。正因为如此,我在总体计划中需要考虑到下列情况:

1. 私钥存放在移动设备上没关系,但是它们必须包通行码。

2. 必须有一种方法可以从服务器迅速废除公钥。

在你的情况下,你可能决定根本不想要为频繁登录的系统使用通行码;比如说,系统可能是开发人员每天登录好多次的测试机器。那很好,但是那样的话你就需要稍微调整一下规则。你可能要添加一条规则,规定不得从移动设备登录进入到该机器。换句话说,你需要根据自己的情况来制定规程,而不是想当然地认为有一应俱全的做法。

  软件

再来说说软件。奇怪的是,没有许多优秀而可靠的软件解决方案用来存储和管理你的私钥。考虑这一点:如果有一款软件为你的所有服务器存储所有密钥,该软件又由一个快捷密码所保护,你的密钥果真安全吗?或者类似的是,如果你的私钥放在硬驱上以便SSH软件快速访问,密钥管理软件果真提供得了任何保护吗?

但是就整个基础设施和创建及管理公钥而言,还是有一些解决方案。我已经提到了Puppet。在Puppet界,你可以创建模块,以不同的方式来管理服务器。其想法在于,服务器是动态的,未必是彼此的精确副本。这里有一种巧妙的方法:http://manuel.kiessling.net/2014/03/26/building-manageable-server-infrastructures-with-puppet-part-4/,在不同服务器上使用同一密钥,但是为每个用户使用不同的Puppet模块。这种解决办法可能适合你,也可能不适合你。

或者,另一种办法就是完全改弦易辙。在Docker界,你可以采取一种不同的方法,关于SSH和Docker的这篇博文作了详细介绍:http://blog.docker.com/2014/06/why-you-dont-need-to-run-sshd-in-docker/。

但是管理私钥怎么样?如果你搜索一下,找不到许多软件方案,我在上面提到了原因;私钥放在你的硬驱上,管理软件可能无法提供太多的额外安全。但是我确实使用这种方法来管理密钥:

首先,我在.ssh/config文件中有多个Host项。我有一个项用于登录的主机,但是有时候我有多个项用于单个主机。如果我要多次登录,就会出现这种情况。我有两种不同的机制来登录托管git软件库的那台服务器;一种完全用于git,另一种用于一般用途的bash访问。用于git的那种登录大大限制了那台机器上的权限。还记得我前面说的放在远程开发机器上的git密钥吗?虽然那些密钥可以用来登录进入到我的其中一台服务器,但使用的帐户受到了严重限制。

其次,大多数这些私钥包括通行码。(如果遇到非要多次输入通行码,可以考虑使用ssh-agent。)

第三,我确实有一些服务器想更认真一点地得到保护,我在Host文件中没有对应的项。这更像是社会工程学层面,因为密钥文件仍在那里,但是需要入侵者花更长一点的时间来找到密钥文件,弄清楚对哪台机器下手。那种情况下,我只要手动输入长长的ssh命令(这其实不是那么差劲)。

你能看到,我并不使用任何特殊软件来管理这些私钥。

  没有一应俱全的做法

我们偶尔会接到读者抛出的问题,问有什么好的软件可用于管理密钥。但是不妨先冷静想一想。这个问题其实需要用不同的方式来表达,因为根本不存在一应俱全的解决方案。你应该根据自己的情况提出问题。你只是试图找个地方来存储密钥文件?还是在寻找一种办法来管理多个用户,每个用户有各自的公钥,这些公钥又需要插入到authorized_keys文件?

我在这篇文章中介绍了基本方面,但愿现在你能明白,只有你提出了正确的问题,才知道如何管理密钥,以及应该寻找什么样的软件(如果你果真需要额外软件的话)。

英文:How to Best Manage Encryption Keys on Linux

(责任编辑:安博涛)

分享到:

更多
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
  • 微笑/wx
  • 撇嘴/pz
  • 抓狂/zk
  • 流汗/lh
  • 大兵/db
  • 奋斗/fd
  • 疑问/yw
  • 晕/y
  • 偷笑/wx
  • 可爱/ka
  • 傲慢/am
  • 惊恐/jk
用户名: 验证码:点击我更换图片
资料下载专区
图文资讯

网络安全:互联网安全 如何防范木马及病毒

网络安全:互联网安全 如何防范木马及病毒的攻击

一、计算机中毒有哪些症状? 人生病了,会有各种各样的症状,同样,电脑中毒了也会有...[详细]

加强网站服务器安全维护的技巧

加强网站服务器安全维护的技巧

计算机系统服务器的维护工作十分重要,稍有不慎就会使整个网络陷入瘫痪。目前,网络经...[详细]

电脑离线就安全?这个软件一样能远程窃取数

电脑离线就安全?这个软件一样能远程窃取数据

以色列的一个研究团队已改良了窃取离线电脑数据的方法。人们一直认为这种离线电脑在面...[详细]

如何在Linux上最妥善地管理加密密钥?

如何在Linux上最妥善地管理加密密钥?

存储SSH加密密钥和牢记密码可能是一件让人很头痛的事儿。不过遗憾的是,在如今恶意黑...[详细]

如何在 Linux 上运行命令前临时清空 Bash

如何在 Linux 上运行命令前临时清空 Bash 环境变量

我是个 bash shell 用户。我想临时清空 bash shell 环境变量。但我不想删除或者 unset...[详细]

返回首页 返回顶部