Skip to content

平台安全性说明

会众云平台采用Docker容器的部署方式,相比于传统的主机直接部署方式有以下好处:

  • 资源隔离:Docker容器提供了隔离环境,程序只运行在这个隔离环境中
  • 部署方便:所有程序都已打包完成,只需要一行命令就可以部署系统
  • 升级方便:升级新的版本时,只需要替换掉旧的容器即可
  • 删除方便:删除程序只需要删除容器即可,不会残留任何文件
  • 多端兼容:Docker本身支持多平台部署(Linux、Windows、Mac等)

本章将深度讲解:如何保证服务及数据安全

1. 平台选型

以下为主流服务器操作系统所占份额,其中绝大部分操作系统为Linux,其次为Windows

注意

推荐通过 Linux 部署服务,Linux具备更好的稳定安全特性

1.1 Linux(推荐)

Linux 是一种免费的开源操作系统,基于 Linux 内核。它通常与 GNU 操作系统软件包一起使用,以形成一个完整的操作系统


Linux 的特点:

  • 开源: 任何人都可以查看和修改 Linux 的源代码
  • 免费: Linux 是免费的,可以自由使用和分发
  • 稳定: Linux 以其稳定性和可靠性而闻名
  • 安全: Linux 被认为是比其他操作系统更安全的

Linux 的发行版:

Linux 有许多不同的发行版,一些流行的 Linux 发行版包括:

  • CentOS
  • Rocky
  • Almalinux
  • Ubuntu
  • Debian
  • Fedora
  • Red Hat Enterprise Linux

1.2 Windows Server

Windows Server 是由微软公司开发的服务器操作系统,基于 Windows NT 内核。它专为企业和组织设计,提供各种功能和工具来支持关键业务应用程序和服务


Windows Server 的特点:

  • 闭源: 由微软公司开发的商业操作系统
  • 付费: 需要购买商业许可证
  • 稳定: 可以提供 99.99% 的正常运行时间(稳定性比不上 Linux)
  • 安全: 包括许多安全功能,例如:BitLocker、Windows Defender(但相对于 Linux 更容易受到安全漏洞的影响)

2. Linux 安全配置

Linux服务器创建后,默认采用root + 密码的登录方式,这种方式有以下风险:

  • root是超管权限,一旦泄露会导致整个主机资产面临侵入风险
  • 密码的安全性较低,甚至有的密码还是弱密码,比较容易被破解
  • 登录端口是默认22端口,公网上的恶意程序会对22端口进行暴力破解

下面将从多个维度对Linux进行安全加固

2.1 使用 ssh 密钥

使用ssh 密钥比使用密码登录更加安全,因为密码更容易被破解

提示

ssh 密钥是一种用于安全登录远程服务器的加密方法。它使用一对密钥:一个公钥和一个私钥。公钥存储在服务器上,而私钥存储在您的本地计算机上

当您尝试使用 SSH 连接到服务器时,服务器会向您的计算机发送一个随机字符串。您的计算机使用私钥对字符串进行加密,并将加密后的字符串发送回服务器。服务器使用公钥解密字符串,并验证您的身份


创建 ssh 秘钥

在个人电脑(mac 或 windows)打开命令行终端,输入命令:ssh-keygen

提示

下方图片为创建示例,以下为必要步骤:

  • 步骤1:输入文件名字(这里使用默认名字,直接回车)
  • 步骤2:输入密码(注意:这里一定要输入密码,这样秘钥泄露后没有密码也无法登录)
  • 步骤3:确认密码(输入步骤2一样的密码即可)

秘钥创建完成后,秘钥保存的位置查看提示:

Your identification has been saved in /root/.ssh/id_rsa
Your public key has been saved in /root/.ssh/id_rsa.pub

/root/.ssh/id_rsa      私钥
/root/.ssh/id_rsa.pub  公钥

配置 ssh 秘钥

秘钥创建完成后,需要将ssh 公钥配置到服务器中,配置以后就可以通过ssh 私钥进行访问了

  • 第一步:登录服务器

直接通过密码登录即可

  • 第二步:进入.ssh目录
bash
cd .ssh
  • 第三步:添加ssh 公钥

复制创建好的/root/.ssh/id_rsa.pub中的内容,并粘贴到服务器文件authorized_keys

bash
vim authorized_keys
# 输入大写的I,然后粘贴 id_rsa.pub 的内容
# 按 esc 键,退出编辑状态
# 同时按下 shift 和 :  进入命令模式
# 输入 wq 命令,保存文件
  • 第四步:重启 ssh 服务
bash
systemctl restart sshd

提示

现在就可以使用ssh 私钥访问服务器了(会自动使用.ssh/id_rsa进行访问)

bash
ssh [用户名]@[服务器IP地址]

2.2 禁止密码登录

配置了ssh秘钥登录后,就可以禁用密码登录,这样就只能通过ssh秘钥登录系统了

下面为禁用步骤

bash
# 编辑ssh配置文件
vim /etc/ssh/sshd_config

# 找到配置项:#PasswordAuthentication yes
# 输入大写的I
# 将其修改为:PasswordAuthentication no
# 按 esc 键,退出编辑状态
# 同时按下 shift 和 :  进入命令模式
# 输入 wq 命令,保存文件 

# 重启 ssh 服务
systemctl restart sshd

2.3 修改 ssh 端口

Linux登录使用的服务是ssh,默认端口为22,所以很多的恶意程序会攻击22端口
所以修改默认端口号以后,可以大幅降低被攻击的概率

提示

建议端口号修改为:10000 ~ 65535,例如:10022

下面为修改步骤

bash
# 编辑ssh配置文件
vim /etc/ssh/sshd_config

# 找到配置项:#Port 22
# 输入大写的I
# 将其修改为:Port 10022
# 按 esc 键,退出编辑状态
# 同时按下 shift 和 :  进入命令模式
# 输入 wq 命令,保存文件 

# 重启 ssh 服务
systemctl restart sshd

指定端口登录

由于修改了端口号,所以登录的时候必须要指定登录的端口号

bash
ssh -p 10022 [用户名]@[服务器IP地址]

2.4 磁盘备份

磁盘备份可以防止极端情况下数据损坏、丢失时,可以通过备份文件快速还原数据

提示

会众云平台所有文件所在目录为:/var/hzy/

常用备份方式

  • 快照备份:如果使用的是云服务,那么可以使用云服务的快照服务,定时对云盘进行备份
  • 本地备份:如果使用的本地服务器,那么可以使用数据备份软件定时对磁盘进行备份

示例:阿里云快照备份

1、创建快照策略

2、关联云盘

3、恢复备份

2.5 数据备份

磁盘备份 不同的是,此备份方式仅针对于平台的数据文件,备份内容更小,备份速度更快。

提示

会众云平台所有文件所在目录为:/var/hzy/


Linux 服务器数据备份

特别说明

强烈推荐使用备份插件进行数据备份,仅需要简单配置即可;

备份插件可以将服务器数据进行异地备份,同磁盘备份相同,可以在出现硬盘损坏等硬件问题时有效保护数据,降低单独硬盘情况下的数据丢失风险。

注意

以下为手动备份流程(较复杂,不推荐)
以下为手动备份流程(较复杂,不推荐)
以下为手动备份流程(较复杂,不推荐)

Linux环境下,可使用 Shell 命令 rsync 来执行备份

提示

rsync 一般为 Linux 预装软件,若您得系统提示没有命令 rsync ,可执行如下 shell 来安装。

注意: 若您的 Linux 未使用以下两种包管理器,则请自行使用搜索引擎获取安装指令。

shell
# Centos / Redhat / Deepin 等使用 yum 的发行版用如下 shell 安装
yum install rsync -y
shell
# Ubuntu / Debian 等使用 apt 的发行版用如下 shell 安装
apt-get install rsync -y

使用模板如下:

注意

以下的 用户名、远端服务器ip/地址、远程目标目录、本地备份目录 请替换为真实的参数。

shell
# 将远程服务器的目录同步到本地目录
rsync -rv --delete [用户名]@[远端服务器ip/地址]:[远程目标目录] [本地备份目录]

举例说明

将远程服务器192.168.1.1的会众云数据同步到本地目录/temp/

bash
rsync -rv --delete root@192.168.1.1:/var/hzy/ /temp/

结合 Linux 的 Crontab 服务,可以实现定时备份,下面提供一个定时备份脚本的参考范例:

提示

使用命令 crontab -e 进入 Crontab 的配置界面,然后在文档尾部输入以下 Crontab配置 的内容,保存后退出即可。

shell
#!/bin/bash
# 会众云平台数据文件夹
sourceDir='/var/hzy/'

targetHome='/root/hzy-data-backup'
# 备份文件夹路径
targetDir="${targetHome}/all-data-backup/"
# 备份时的过程日志
logfile="${targetHome}/log-rsync.txt"

echo "rsync started at: $(date)" > ${logfile}
rsync -rv --delete --append ${sourceDir} ${targetDir} >> ${logfile}
shell
# 每天凌晨三点的整点时刻执行一次备份
0 3 * * * bash /root/hzy-data-backup/rsync-data.sh

2.6 其他配置

完成前面的设置步骤后,服务器的安全系数已经非常高了。以下为其他可选的安全配置:

  • 禁用root登录:root用户拥有系统最高权限,可以禁止使用root登录
  • 开启防火墙:如果系统没有开启防火墙,可以启动防火墙,防火墙可以设置网络进出规则
  • 增加堡垒机:服务器只能通过堡垒机才能登陆,堡垒机可以配置相关的安全规则

3. 备份机制说明

平台存在以下几种备份方式,后续将对每种方式进行详细说明

  • 应用数据备份:对单个应用的数据进行备份(应用级别的备份)
  • 数据库全量备份:对整个数据库进行备份,不包含文件数据(平台级别备份)
  • 备份插件全量备份:对整个系统所有数据进行备份(服务器级别备份)

3.1 应用数据备份

应用数据备份:在应用正式环境,点击应用备份,创建备份


作用说明

应用备份用于备份单个应用的所有数据,包括:应用配置、应用数据,可以使用恢复功能快速创建备份时间点的新应用

举例说明

CRM这个应用创建了一个2025/01/01 00:00:00的应用备份,在2025/01/02时发现有一个表单的数据被恶意删除了,这个时候可以恢复2025/01/01 00:00:00的应用备份,从而找到被恶意删除的数据记录


数据说明

应用备份的应用配置属于业务数据保存于数据库中,应用数据为实体备份文件保存于/var/hzy/backup目录下,结构如下:

bash
# [应用ID]_[备份ID].json
zj4ihMWe4Tg05K_zsBfB2Kj2PI0KA.json

注意

此文件仅恢复应用备份时使用,如需删除请使用应用备份提供的「删除」功能

3.2 数据库全量备份

数据库全量备份:在管理后台系统配置 → 基础配置 → 数据库备份数量配置,将自动在每天凌晨3点进行数据库的全量备份


作用说明

数据库全量备份用于备份整个数据库的业务数据(),可以使用数据库全量备份将数据库恢复到备份时间点,从而获得备份时间点的全量业务数据

示例1

由于不规范操作导致数据库链接泄露,从而导致数据库的文件全部丢失,这个时候可以使用数据库全量备份将数据恢复到上一个备份点

示例2

某个记录数据被异常删除,但是又没有创建应用备份,那么可以恢复数据库全量备份找回被删除的记录


数据说明

数据库全量备份为实体备份文件保存于/var/hzy/backup目录下,结构如下:

bash
# [年月日]__backup.archive
20250919_backup.archive

恢复备份数据

请勿在生产环境中操作,推荐在本地环境中进行恢复!
请勿在生产环境中操作,推荐在本地环境中进行恢复!
请勿在生产环境中操作,推荐在本地环境中进行恢复!

恢复备份数据需要使用以下命令,点击查看详细说明

bash
mongorestore <options> <connection-string> <directory or file to restore>

命令使用示例

bash
mongorestore --drop --uri=mongodb://localhost:17017/ --gzip --archive=./20250919_backup.archive

3.3 备份插件全量备份

备份插件全量备份:使用备份插件平台所有数据进行备份,备份文件为tar.gz格式的压缩包,解压以后即可直接使用

点击查看备份插件详细说明


作用说明

备份插件全量备份用于备份整个系统的数据(),解压备份文件并替换/var/hzy/目录,即可将所有数据恢复到备份时间点

举例说明

会众云服务所在服务器的磁盘发生损坏,因为备份插件备份的数据在另外的服务器上,这时可以将备份的数据拷贝到会众云服务所在服务器,解压并替换/var/hzy/目录后即可恢复全量数据


数据说明

备份插件全量备份的备份文件为实体文件,保存在备份插件所在服务器的/etc/hzy/backup/目录下,结构如下:

bash
# hzy_[年月日].tar.gz
hzy_20250822.tar.gz

特别说明

备份插件全量备份,主要目的是通过不同的服务器进行容灾备份,极端情况下主服务所在服务器出现磁盘损坏等情况时,可以使用其他服务器的备份文件进行全量数据恢复

所以:备份插件所在服务器、会众云主服务所在服务器,必须是两台独立的服务器