NXT*_*NXT 22 freebsd ssh embedded internet-of-things
我正在研究运行 FreeBSD 和 SSH 的嵌入式设备。
如您所知,sshd 喜欢在首次启动时随机生成一组服务器密钥。问题是我们将运送带有只读 SD 卡文件系统(不可协商)的产品。
我看到的两个选项是:
在所有设备上发送相同的服务器密钥是否是一个主要的安全问题?这些项目不会直接在互联网上。有时,同一个人在同一网络上拥有多台设备。
大多数情况下,设备不会连接到互联网。
使用 SSH 登录不是正常操作的一部分。它主要是为了方便程序员和技术人员。客户将不会使用 SSH 登录设备。
在多个硬件设备上使用相同的服务器密钥有什么后果?
PS有人可以创建一个物联网标签吗?
编辑:我说的是在所有服务器(设备)上安装相同的主机私钥。至于用户公钥/私钥,目前没有计划使用基于密钥的登录 - 它将是密码登录。同样,所有服务器(设备)上的密码相同。
我知道这可能是个坏主意。我想知道为什么这是一个坏主意,所以我可以理解权衡。
Mic*_*ton 27
您可以将其存储在 NVRAM 中,而不是将主机特定的数据(例如 ssh 主机密钥)存储在 SD 卡或其他只读介质上,这正是嵌入式系统的用途。您需要编写一些自定义脚本来在启动时存储和检索密钥,但每个设备的脚本都完全相同。
daw*_*wud 12
为所有设备传送相同的密钥对的影响与连接到它们的客户端的安全性直接相关,因为这意味着无法(从 SSH 客户端)唯一标识它可能连接到的设备。如果您的密钥对被泄露,它可能被用于 MITM 攻击。
另一方面,在每次启动时重新生成密钥,也会在客户端上触发警报。
供参考,来自man ssh(1):
ssh自动维护和检查一个数据库,其中包含曾经使用过的所有主机的标识。主机密钥存储在~/.ssh/known_hosts用户的主目录中。此外,该文件/etc/ssh/ssh_known_hosts会自动检查已知主机。任何新主机都会自动添加到用户的文件中。如果主机的标识发生变化,ssh则会发出警告并禁用密码身份验证以防止服务器欺骗或中间人攻击,否则这些攻击可用于规避加密。该StrictHostKeyChecking选项可用于控制对主机密钥未知或已更改的计算机的登录。
小智 5
听起来像在第一个选项中,SSH 密钥将在 SD 卡上可用。所以任何用户都可以拿起卡片并读出它们。所以基本上你的私钥已经成为(大部分)公开的。
这将允许中间人攻击,如下所示:
但是,您不应该首先使用 root 密码,而是使用 ssh 密钥进行身份验证。如果您仅从 LAN 登录,则共享服务器密钥的影响非常小。
SSH 还提供前向保密,因此攻击者必须能够设置虚假服务器才能从密钥中受益;被动嗅探流量将不允许对其进行解密。