我昨天被黑了,所以我整天都在思考如何才能保证我的系统安全。
我正在考虑设置一个运行几个虚拟机的虚拟机管理程序。
我想到的架构是这样的:
MySQL VM - 无互联网。仅运行 MySQL 服务器和 HTTP 服务器,该服务器具有用于 API 调用的公开端点。无法访问互联网。HTTP 服务器用于站点 Web 服务器和 MySQL Web 服务器之间的内部调用,因此无需公开数据库凭据。
站点 Web 服务器 VM - 带互联网。在 Linux 上仅运行 Web 服务器,具有互联网访问权限(显然)并限制,因此操作系统仅允许执行 1 个进程,即 Web 服务器进程(以 NodeJS 编写)。此 Web 服务器与 MySQL Web 服务器通信,以便从数据库中插入、更新和获取数据。
文件虚拟机 - 无互联网。通过 SMB 托管相关服务器脚本。一个文件夹只允许读取,不允许写入。另一个文件夹将托管用户上传的文件,此文件夹可读写。还有一个文件夹将托管由处理虚拟机(见下文)生成的文件,该文件是只读的。
处理虚拟机 - 无互联网。此虚拟机将处理用户上传的内容,完成后将文件移动到文件虚拟机中的文件夹中。
这是保护我的服务器的合理方法吗?