确保运行 Ubuntu 的迷你电脑上的服务安全

确保运行 Ubuntu 的迷你电脑上的服务安全

我正在为一家初创公司工作,正在开发一款将配备所需硬件的产品。

硬件是一台运行 Ubuntu 20.04 的迷你电脑。该应用程序由 Docker 容器内的 Python 服务、数据库和一些深度学习模型组成 - 因此,迷你电脑本质上是用作服务器替代品。用户通过连接热点来访问该应用程序。在某些客户那里,硬件将被隔离。

我无法讲太多细节,但是这种配置在它们的特殊用例中是有意义的。

我现在的任务是确保硬件安全,以防止应用程序被篡改/修改。我做了一些研究(见下文),但不知道是否可以采取什么措施以令人满意的方式解决这个问题。

我的研究:

  • 我发现的第一个想法是使用 LUKS 加密根分区,然后将密钥存储在 TPM 中 - 当前硬件不支持 TPM(希望这可以在未来的硬件购买中改变)
  • 第二个想法是加密根分区并提供分区密钥。尽管现在需要两个部分,但我认为这不会使篡改变得更加困难。
  • 除了操作系统的可能性之外,另一个想法是至少使用类似 pyarmor 的东西来混淆应用程序代码 - 但这又感觉像是一个非常低的门槛。

我已经尝试过寻找其他可能性 - 也许我的搜索查询很糟糕 - 但我找不到任何令人满意的方法来解决这个问题。我希望这里有人能给我指明正确的方向。

答案1

加密与保护不同。加密只能防止他人在数据被盗时访问您的数据。篡改是在正在运行的系统上进行的,此时系统已解锁。

为了确保 Ubuntu(/您的系统)的安全:

  • 尽快更新您的系统并始终应用安全更新。加入安全邮件组,以便您立即获得有关漏洞的更新。我收到了有关 CVE 的报告,99% 都没什么意思,但有一次它确实很有趣(OpenSSL 漏洞)。
  • 为管理员设置合适的密码,并强制其他用户使用合适的密码。并更改管理员密码。
  • 不要安装第三方软件,除非你能接受其创建者/维护者。尽可能坚持基本原则。
  • 删除所有不使用的软件。如果是服务器:没有桌面;使用命令行。
  • 做好备份,制定应急计划并加以练习

混淆应用程序代码

这根本行不通。你应该考虑到任何不应该访问但可以访问你系统的人都足够聪明,能够看透这一点。

我们目前正在迁移的一件事是拆分服务器:我们的软件、数据库和 jasperserver 各自位于自己的实例上。最后两个没有连接到互联网,只能与拥有软件的服务器通信。

答案2

你似乎正在重新发明器具

  • 一个器具是捆绑的操作系统 + 软件包,有时也包含硬件。安装后,用户无需登录或访问操作系统;配置和活动仅发生在面向用户的软件界面、GUI 或 API 上。
  • 示例https://ubuntu.com/appliance

在 Ubuntu 中,最容易创建的是使用 Ubuntu Core 并在其上添加您自己的自定义 Snap。Ubuntu Core 和 Snaps 专为此类用途而设计。

Ubuntu Server 不是为您描述的用例而设计的。

相关内容