来自共享工作区计算机的 SSH

信息安全 SSH
2021-09-04 21:43:30

主要问题:如何从工作场所的计算机安全地连接到家中的个人计算机?

背景:我的大部分工作都是在大学计算机上完成的,但计算机本身并不出色,所以我通过 SSH 连接到我的家用计算机上运行计算。该系统运行良好,但我面临着如何正确保护我的家用电脑的两难境地。一方面,我想禁用密码 SSH 登录,只使用 SSH 密钥。但是,这需要在我的大学计算机上生成一个 SSH 密钥,以便其他人可以相对容易地看到/复制/使用。我也不想将我的用户名/IP 地址保存在其他人容易查看的配置文件中。

我使用的大学计算机是“我的”,因为它在我的办公桌上,但是任何有帐户的人都可以通过 SSH 进入它,并且可以读取存储 SSH 密钥的我的主目录,而且我没有 sudo 权限来保护反对。

为了能够安全地从工作场所计算机连接到个人服务器,您有什么建议?

4个回答

鉴于您有一台稳定的计算机,我会继续使用 ssh 密钥而不是密码来进行 ssh 访问(即使您每次使用不同的实验室计算机,便携式 USB 中的 ssh 密钥可能仍然更可取) .

ssh 密钥可能被盗,但在其上使用密码应该提供与 ssh 密码类似的安全性,只是您也需要密钥文件。是的,ssh 客户端可以被攻破以窃取密钥密码,但难度相当于攻破客户端以窃取 ssh 密码。请记住,您可以将 ssh 身份加载到代理中,以使它们在使用前需要确认(以及卸载/根本不使用 ssh-agent,尽管我建议这样做)。

硬件令牌(由 Luis 推荐)最适合保护 ssh 密钥,但它可能不是一个选项。

至于不显示您连接的 IP 地址,如果您使用的是 openssh 客户端,您需要HashKnownHosts yesssh_config 选项(对于某些发行版,这甚至是默认设置)。不过,可能并不值得隐藏,它不应该是“秘密的东西”,而且很容易从网络日志中提取出来。

在服务器上,作为进一步保护登录免受未经授权的随机主机的一种方式,您可以:

  • 禁用密码验证(你想做的)
  • 限制能够登录的用户(仅限于允许的用户)
  • 使用非标准端口
  • 限制允许连接的 IP 地址。作为一所大学,“你的”计算机将有一个静态的出站 IP 地址,甚至可能是一个专为你准备的公共 IP 地址。最坏的情况,仅限于大学范围。

这些主要是“附加措施”,因为它们无法阻止坚定的攻击者滥用他在您的计算机上的超级用户权限,¹但我觉得至少为未来的读者列出它们是件好事。

但是,解决您的问题的重要方法是您不授予对家用计算机的一般访问权限由于您想通过 ssh 进行连接,我假设您的家用机器是 Linux/BSD/MacOS 机器。

您可能会在那里拥有一个用户帐户,您可以通过该帐户执行日常任务,例如浏览互联网、编写(个人)电子邮件或观看 youtube 视频。但是,您不需要访问其中的任何内容,因为您只关心计算。因此,您为运行计算设置了一个单独的、有限的访问权限。您可以连接到虚拟机或容器,但只需一个单独的帐户即可满足您的需求。您只需要硬件速度快(呃),一个空间很小的帐户和机器上安装的所需程序就可以了。一些不允许其他用户访问您的“主文件”的基本 Unix 权限就足够了。² 显然,保持您的家用计算机针对本地升级漏洞进行修补。

第二个潜在问题是访问该低权限帐户的攻击者会破坏您本地网络中的其他设备。除了充分保护其他设备外,您还可以取消对该低权限用户的所有网络访问,或者将其限制为仅外部地址。

¹ 例如,ssh 密钥在其他机器上不起作用,但它们可以通过您的代理访问

² 有各种各样的处理器侧通道,但大多不相关,您可以在本地访问时禁用 sshd,并且不应该让敏感的东西继续运行(不,你不应该让 CA 在那里运行😉)。

如果您被允许在该计算机上安装和运行自己的软件,则有一些解决方案允许您将密钥身份验证与智能手机或安全令牌等外部硬件上的密钥一起使用:

我已经尝试过前者并经常使用它。

如果您想使用公共计算机确保安全,最好的办法是使用多因素身份验证;例如,受信任的 SSH 私钥(仅允许访问具有多因素身份验证设置的服务器)以及将您的移动设备用作第二个因素(通过您设备上的应用程序中的批准或通过输入密码) (例如,通过google 身份验证器)。

请记住,该公共计算机上的所有活动都可能不安全。有人可能安装了硬件/软件键盘记录器,管理员可能正在查看您的私人主目录等。如果您在磁盘上加密 SSH 密钥,管理员可以在您解密后转储内存以供使用并重建解密版本,等等。

首先应该修复一些事情......在*nix系统上,即使/home/username具有世界读取权限(即,755ls -ld ~/看起来像rwxr-xr-x~/.ssh目录及其内容应该是600(对于文件)和700(对于目录)。事实上,如果这些文件可由其他用户读取,ssh 应该拒绝连接。如果您~/出于某种原因需要全球可读(即让 Apache 读取 ~/public_html 并在 uni.edu/~username 上提供它),您仍然可以更改 perms ~/.ssh- 只是chmod 700 ~/.ssh并且chmod 600 ~/.ssh/*会解决这个问题。

至于安全地连接到您的家用机器,您可以在其他一些受信任的机器(例如您的家用机器)上生成私钥,使用支持 Linux 权限的文件系统将其复制到 USB 驱动器或其他适当的便携式媒体(I' d 只是ext4为了简单起见将其格式化)并将密钥放在上面。然后,当您在 uni 时,您可以插入并安装 USB 驱动器并执行ssh -i /path/to/private/keyfile -p <port number> username@ip.or.domain.name

如果您对有人从您的机器上的 ram 复制密钥等感到偏执,那么您根本不应该连接到与工作无关的任何地方。