我目前正在提出有关物联网设备的想法。它将在广泛可用的开发板上运行Linux,我不太担心物理安全性或最终用户对其做的不好,但是我想从诸如mirai僵尸网络等僵尸网络中保护它。

对于root用户帐户,我应该如何保护它:我应该使用基于密钥的身份验证还是仅使用常规密码?我希望能够根据请求授予最终用户访问root用户帐户的权限,或者提供现成的权限。

我不希望有任何额外的用户帐户或在身份验证服务器上存储任何身份验证详细信息,以防万一遭到破坏。

#1 楼

好问题!您需要牢记的几件事。
1。默认密码
这真的很基本,您可能已经想到了,但让我重申一下:默认密码或简单密码是致命的。当我问这个问题时,我了解到Mirai蠕虫的工作方式仅仅是通过默认的用户名和密码进行攻击。无论做什么,都不要在IoT设备上设置默认密码。
2。使用无密码ssh(或其他基于密钥的设置)的安全风险
基本上,基于密钥设置的唯一风险是有人掌握了您的私钥。否则,无密码ssh实际上比输入密码更安全。从我的角度来看,其原因有以下几种:

密码很容易被暴力破解(僵尸网络,如您所建议的那样)
通常,键盘输入都不采用非常安全的加密方式,
无密码ssh通常使用DSA或RSA加密,但是您可以对其进行设置。 (有关详细信息,请参阅有关security.SE的文章)

3。密码输入带来的安全风险。
如上所述,密码相对容易被蛮力使用,并且在路径上也不太可能(尽管有可能)存在密码拦截的风险。

请注意,如果您确实使用无密码的ssh,则一定要使用密码来保护它。

评论


使用SSH,应该以加密方式发送击键,因此使用密码登录应该可以防止监听。 Telnet可能就是您所想的-它确实以明文形式发送了包括密码在内的所有信息。就像您说的那样,如果您正在大规模开发某些东西,那么没有理由不使用基于密钥的身份验证。

–Aurora0001♦
17年4月10日在15:26

@ Aurora0001,嗯,你有意思。而且我怀疑您对Telnet是正确的。

–anonymous2♦
17年4月10日在15:28

#2 楼

假设您需要处理固件更新(否则默认情况下不安全),那么您还需要签名更新(并以安全的方式管理更新)。否则,攻击者可以简单地向您的设备提供受损的更新程序包。显然,如果这样做,将使用户无法以相同的方式应用固件更新,但是不必完全将其锁定(因为它们具有物理访问权限)。

此外,您需要提供一种安全的方式,为每个设备提供最终用户可见的唯一ssh密钥(但是,如果您接受物理访问意味着所有权,则可以将它们包含在设备中)。 >