控制面板的安全设计,让一个网站无法触及另一个
在一台繁忙的服务器上,总会有某个网站运行着过期的插件。好的控制面板安全设计,决定了接下来会发生什么。Dashmox 的构建方式让这个答案是:几乎什么都不会发生。
它是如何组装起来的
您登录的那个面板没有 root 权限。
Dashmox 由两个程序组成。响应您浏览器的面板以普通的非特权账户身份运行。任何需要 root 的操作都交由一个独立的代理程序完成。
- 代理程序仅监听一个受限的本地套接字,绝不在网络上监听。
- 它只接受一组固定的、有类型的操作,绝不执行传递给它的 shell 命令。
- 它自行推导每一个路径和 Linux 账户,依据的是内部标识符,因此请求无法把它指向别处。
- 面板上的每个请求都会针对其访问的资源进行授权检查。
- 您的浏览器通过面板自己的端口访问它,绝不会用您客户网站所响应的那个端口。
每个网站
在您想到要开启之前就已开启的防护。
它自己的账户
每个网站以自己的 Linux 用户身份运行,拥有独立的 PHP 进程池和套接字,无法读取其他网站的文件。
邮件分开存放
邮件存放在网站之外的专用账户下,因此被入侵的网站无法读取其客户的邮箱。
上传的内容不会被当作脚本执行
应用程序可写入的文件夹不会执行任何内容,因此上传的文件无法变成程序。
PHP 无法执行命令
Web 后门所需的那些函数已被关闭,而那正是大多数被入侵的网站被用来做的事。
扫描器被拒之门外
漏洞扫描器常请求的那些路径,以及那些绝不会是网页内容的文件,都会被直接拒绝。
密码猜测被减速
针对网站登录页面的反复登录尝试会按网站分别施加速率限制。
未知域名会被拒绝
若某个域名在本服务器上没有对应的证书,则在建立安全连接时即被拒绝,而不是由恰好排在最前面的那个网站来响应。
您与您的客户
登录,并保持掌控。
两步验证登录
来自任意验证器应用的验证码。扫描二维码即可设置,也可手动输入密钥。一次性恢复码,仅以哈希形式存储。
强健的密码存储
密码使用 Argon2id 哈希。没有默认密码:第一个账户通过一个一次性令牌创建。
整台服务器的规则
为登录您服务器的所有人设定密码和登录要求。
不会把您锁在门外的防火墙
会切断您当前连接来源地址的规则会被指名拒绝,而服务器必须响应的端口将保持开放。
带签名的更新
除非由 Dashmox 签名,更新一律被拒绝。它在您按下按钮时安装,安装前先为面板创建快照,并在失败时尝试把一切还原。
您的主机业务比您的许可存续更久
许可到期会使服务器转为免费套餐。它绝不会让任何网站、邮箱或区域下线。
这是做什么用的
这套设计所针对的攻击。
不是有人入侵了您的服务器,而是有人入侵了其上的某个网站。
主机服务器是一台运行着他人编写的代码的机器,而这些代码按他人的节奏更新。某个插件一年没有更新。某个主题有一处无人测试过的文件上传功能。某个密码被重复使用。这些都不罕见,也都不是您的过错;而在一台繁忙的服务器上,这是时间问题,而不是是否会发生的问题。
因此有用的问题不是如何阻止它,而是一旦发生,攻击者掌握了什么。他们以该网站的身份运行代码:读取它的文件、写入它的目录、建立连接。此后的一切,都取决于机器允许那个账户触及什么。
有三个答案是关键,而 Dashmox 的构建方式让这三个答案都是“否”。
- 它能读取其他客户的网站、邮件或备份吗?每个网站都是独立的 Linux 账户,拥有自己的 PHP 服务和套接字。它无法读取其他客户的文件,也读不到他们的邮箱、数据库凭据或 TLS 私钥。
- 它能接触到以 root 身份运行的程序吗?您登录的面板完全不具备 root 权限。唯一具备的那个程序监听在一个本地套接字上,而网站账户无法打开该套接字。
- 它能取得 root 权限吗?那些会导致权限失守的目录,也就是存放 Web 服务器配置和系统服务的目录,它都无权写入。
以上并不是论证。2026 年 9 月 29 日,在一台运行 0.97.128 版本、托管三十五个网站的服务器上,我们以一个网站自己的 Linux 账户身份,对另一个网站发起了十五项探测:映射每个账户的注册表、特权套接字、DNS 控制密钥、备份凭据、另一位客户的备份、容器环境文件、另一位客户的 TLS 私钥和邮件、面板自身的配置、系统密码文件、另一位客户的家目录,以及两次向 Web 服务器目录和服务管理器目录写入的尝试。十五项全部被拒绝。该测试会先确认该账户能够读取自己的文档根目录,因为以错误的账户运行探测会被拒绝一切,那样什么也证明不了。
具备特权的那一半
那个 root 程序实际会做什么。
它只响应一份具名任务清单。清单上没有“执行命令”这一项。
把面板一分为二,只有在特权那一半足够窄的时候才有帮助。一个接受“执行这个”的 root 程序,就是一个带 root 权限的面板,只是多了一道手续。
Dashmox 的代理程序只接受 136 个具名操作,别无其他。每一个都是形态明确的任务:创建这个网站、为它签发证书、写入这条 DNS 记录、恢复这份备份。凡请求指向清单之外的内容,在被读取之前即被拒绝。
- 它接受标识符,而不是路径。请求通过内部标识符指明网站,代理程序自行推导出目录和 Linux 账户。没有任何字段可以传入路径,因此也无从指向别处。
- 它从不接收命令行。凡需运行程序之处,它都用自己已校验过的值自行构造参数。
- 它仅监听一个本地套接字,归 root 所有,位于网站账户无法进入的目录中。它不在网络的任何地址上。
- 面板先行授权。每个请求都会先针对发起者本人及其访问的对象进行检查,之后才会去请求代理程序。
这个数字值得明说,因为它是对这条边界最诚实的度量。更短的清单意味着更小的面板。真正重要的是这份清单存在、其中每一项都是一个任务而不是一条指令,以及向其中增加内容必须由人有意为之。
更新
更新必须证明它来自我们。
更新是面板所做的最危险的事,因为那是机器唯一一次自愿替换自己代码的时刻。一个来者不拒的面板,就是一个带进度条的后门。
- 签名是针对归档文件本身校验的,而不是针对它的某种描述。对一份校验和清单的签名,其可靠性取决于清单与实际字节之间的关联,因此 Dashmox 直接对字节签名。
- 以您当前运行的发布版本中内置的密钥进行校验。该密钥不会从网络获取,因此即使某个服务被接管,它也只能停止响应,而无法签出您的服务器会接受的内容。
- 没有任何东西会自行安装。面板提示有可用更新,由管理员按下按钮。全部流程仅此而已,所有套餐均如此,包括免费套餐。
- 它会先创建快照,若新版本未能健康启动,便将上一个版本、其配置和数据库一并还原。失败的更新不会占用版本号:修正后的构建仍以同一版本号安装。
- 损坏的发布版本会被拒绝,而不是绕过修补。如果已安装发布版本中的某个文件与该版本所声明的内容不符,面板会明确指出、点明文件名,并告知应提供哪个归档文件。
安全修复不是付费功能。每一个安装都会收到每一个发布版本,无论它用的是哪个套餐。
坦诚相告
这不能保护您免受什么。
只罗列优点的安全页面就是一则广告。以下是它的局限,用的是我们内部使用的同样措辞。
- 已被入侵的网站依然是被入侵的。这里的任何措施都救不了那个运行着过期插件的站点。它的文件、数据库和访客会话都归入侵者所有。能被限制的只是影响范围。
- root 就是 root。任何以 root 身份登录您服务器的人,或持有相应密钥的人,都已越过上述一切。持有带第二因素的所有者账户的人同样如此。
- 您的主机商在您之下。运行硬件或虚拟化层的一方可以访问磁盘。这对任何主机上的任何面板都成立。
- 我们不为您安装的应用打补丁。Dashmox 会在某个应用有更新时告知您,并在您同意后安装。保持它们更新是您的责任。
- 电子邮件是一贯的例外。邮件与网站分开存储并通过 TLS 发送,而在其他两台服务器之间传输的消息不在我们的保护范围内。
值得作出的对比不是与某个具体产品,而是与形态本身:一个 Web 界面以 root 身份运行的面板,根本没有边界可以描述,因为它任何一处的缺陷都是带 root 权限的缺陷。这正是 Dashmox 存在以避免的那种安排,也是“被入侵的网站能触及什么”这个问题的答案是一串拒绝、而不是一句安慰的原因。