我曾与一位朋友讨论过“单一应用程序编译服务器”的想法,其中服务器仅与其依赖项一起编译为单个可执行文件。服务器上没有其他任何东西。没有 shell,也没有其他任何东西。
这个想法是,如果只有一个包含所需操作系统和驱动程序以及 Web 服务器和应用程序代码的集成可执行文件,那么它将比可以登录的服务器安全得多。
这有意义吗?可能吗?会更安全吗?
答案1
好吧,您无法将所有内容都放到一个可执行文件中,但是使用 Linux 您可以:
编译一个只包含您需要的内核,包括您想要的驱动程序。您可以直接在内核中只编译所需的驱动程序并禁用模块加载。如果您的硬件发生变化,则需要重新编译。如果您还没有一个带有正确构建工具和编译器的可运行系统,那么这很难,非常难。
创建自己的服务器
init
,它只会生成您的网络服务器,并在网络服务器死机时保持其运行。这很难。仅包含该 Web 服务器所需的可执行文件和依赖库以及它所依赖的任何内容。这很难。
准备创建一个安装它的程序,并在安全修复程序可用时自行更新所有这些。这非常困难。
实现上述目标虽然困难,但并非不可能。通过最小化 Debian 安装并仅安装所需的软件,您可以非常接近目标,并且如果您改变主意,还可以获得定期更新和简单的包管理系统的好处。您还可以按照上述方式编译自己的内核,Debian 将提供工具来执行此操作。