我面临着嵌入式平台安全的问题。所有 ssh 强化措施均已设置完毕,包括双因素身份验证和使用 ssh 密钥对登录。
现在,root 和用户密码很容易被破解,你只需要物理访问设备,其他措施和预防措施都变得多余。我的想法是使用与 ssh 相同的技术来强化 root 访问权限。(强化 sudo 命令和 root 访问权限)然而,虽然这是所有嵌入式平台的常见问题,但我找不到太多相关信息。
我该如何解决这个问题?
答案1
我不确定您到底在要求什么,所以我猜测并假设您想要强化您的 sudo 身份验证。
如果是这种情况,并且系统上的 sudo 支持 PAM,那么请查看 pam_ssh_agent_auth 进行 ssh 公钥认证或 pam_sss_gss(可能需要正确设置 FreeIPA IdM)。
答案2
物理访问无法完全防御。一个足够有动机的人会逆向工程系统以获取访问权限,甚至拆开系统并读取硬件。
尽可能用更强的身份验证替换密码,使攻击者的任务更加困难。
可以配置 SSH 以删除密码验证,OpenSSH 和 dropbear 实现都允许这样做。
检查哪些登录是本地登录,而不是通过网络登录。视频输出和 USB 输入可能启用 tty 登录。或者,硬件可能提供串行控制台。
在具有 PAM 库的 Linux 机器上,可以通过可以以各种方式组合的模块来定制身份验证。
允许使用 Yubikey(pam_u2f)等硬件验证器登录或 sudo U2F
允许来自设备的一次性密码(pam_google_authenticator 或 pam_oath)
基于 ssh-agent 进行身份验证(pam_ssh_agent_auth)
删除足以进行身份验证的密码
禁止root登录,只允许root访问难以物理访问的串行端口(pam_securetty)
如果必须使用密码,请强制使用较长的密码长度,例如 16 个字符 (pam_pwquality),并鼓励使用短语,例如 Diceware。不要使用“复杂性”要求,这些要求对用户不友好。
这是对操作系统身份验证的介绍,之前的情况如何?启动期间就是物理访问进入的示例。在 grub 中编辑内核命令可以让你获得没有凭据的 shell。虽然这对于从丢失的凭据中恢复很有用,但可能并不理想。考虑使用密码保护引导加载程序。