从零搭建 Linux 版 FortiClientEMS,含文件清单、ECS 规格、RDS PostgreSQL 18 配置、远程 DB 安装步骤、已知 Bug 修复
FortiCare 下载页面有 12+ 个文件,名字很像但用途完全不同。以下是分类说明:
文件名格式:forticlientems_7.4.7.2194.M_dependencies_{OS}_{ARCH}.tar.gz
rhel9_amd64,只需要 1个 .bin + 1个 dependencies .tar.gz + 1个 pg_extension,不要全下| 文件 | 大小 | 为什么不需要 |
|---|---|---|
forticlientems_7.4.7.2194.M.arm64.bin | 565 MB | ARM64 架构,阿里云 ECS 用 amd64 |
*_dependencies_rhel9_arm64.tar.gz | 297 MB | RHEL 9 + ARM64,架构不匹配 |
*_dependencies_ubuntu22_amd64.tar.gz | 751 MB | Ubuntu 22,你用 RHEL 9 |
*_dependencies_ubuntu22_arm64.tar.gz | 297 MB | Ubuntu 22 + ARM64,双重不匹配 |
*_dependencies_ubuntu24_amd64.tar.gz | 950 MB | Ubuntu 24,你用 RHEL 9 |
*_dependencies_ubuntu24_arm64.tar.gz | 779 MB | Ubuntu 24 + ARM64,双重不匹配 |
forticlientems_7.4.7.2194.M_docker_compose.zip | 10 KB | Docker Compose 部署方式的配置文件,本手册用原生安装 |
forticlientems_7.4.7.2194.M_helm.zip | 12 KB | Kubernetes Helm Chart,不用 K8s 就不需要 |
forticlientems_7.4.7.2194.M_postgres-ha.tar.gz | 133 MB | PostgreSQL HA 镜像,你用阿里云 RDS |
MIB/ | — | SNMP MIB 文件,用于 SNMP 监控集成 |
┌─────────────────────────────────────────────────────┐ │ 阿里云 VPC │ │ ┌──────────────────┐ ┌──────────────────────┐ │ │ │ ECS 实例 │ │ RDS PostgreSQL 18 │ │ │ │ RHEL 9 │ │ 1vCPU / 2GB RAM │ │ │ │ 2vCPU / 4GB RAM │◄──►│ 40GB ESSD │ │ │ │ 100GB SSD │ │ 内网地址:rm-xxx.pg.rds│ │ │ │ │ │ 端口:5432 │ │ │ │ FortiEMS 7.4.7 │ │ pgAgent 扩展 │ │ │ └──────┬───────────┘ └──────────────────────┘ │ │ │ │ │ ┌────┴────┐ │ │ │ 安全组 │ │ │ │ 443/HTTPS│ │ │ │ 8013 │ │ │ │ 10443 │ │ │ └─────────┘ │ └─────────────────────────────────────────────────────┘
| 方案 | 优点 | 缺点 |
|---|---|---|
| RHEL 9 + RDS PG18(推荐 ✅) | 企业级长期支持;RDS 自动备份/高可用/监控;Fortinet 官方支持;pgAgent 扩展兼容好 | RDS 有额外费用;RHEL 镜像许可费用 |
| Ubuntu 22 + RDS | 免费镜像;社区资源丰富 | Fortinet 官方依赖包需独立下载 |
| ECS + 本地 PostgreSQL | 省钱 | 需自行维护备份、高可用、升级;RHEL 9 上本地 PG 有多个已知 bug |
| 配置项 | 推荐值 | 说明 |
|---|---|---|
| 实例规格 | ecs.c7.xlarge(4vCPU 8GB) | Fortinet 推荐最低 4vCPU/8GB。小规格会导致安装失败或运行缓慢 |
| 操作系统 | Red Hat Enterprise Linux 9 64位 | 与 RHEL 9 dependencies 包匹配 |
| 系统盘 | 100GB ESSD PL0 | EMS 安装+日志+数据库缓存。最低 50GB,推荐 100GB |
| 网络 | VPC 专有网络 | 与 RDS 同 VPC 同交换机,内网互通 |
| 公网 IP | 弹性公网 IP(EIP) | 用于 EMS Web 管理和 Endpoint Agent 连接 |
| 安全组 | 见下方规则表 | — |
| 方向 | 协议 | 端口 | 源/目标 | 用途 |
|---|---|---|---|---|
| 入方向 | TCP | 443 | 0.0.0.0/0(或限定IP) | EMS Web 管理 + Agent 通信(HTTPS) |
| 入方向 | TCP | 8013 | 0.0.0.0/0(或限定IP) | EMS 内部通信端口 |
| 入方向 | TCP | 10443 | 0.0.0.0/0(或限定IP) | EMS Fabric Agent 端口 |
| 出方向 | TCP | 5432 | RDS 内网地址 | 连接 RDS PostgreSQL |
| 出方向 | TCP | 443 | 0.0.0.0/0 | EMS 联网激活 + FortiGuard 更新 |
| 配置项 | 推荐值 | 说明 |
|---|---|---|
| 引擎 | PostgreSQL 18 | EMS 7.4.7 支持 PG 18,选择最新稳定版 |
| 实例规格 | rds.pg.s2.medium(1vCPU 2GB)起步 | 先用最低档,不够再在线升配。EMS 管理端点不是数据库密集型应用 |
| 存储 | 40GB ESSD PL0 | 初始 40GB 足够,后期可在线扩容 |
| 网络 | 同 VPC 同交换机 | 与 ECS 内网互通,延迟 <1ms |
| 账号 | 高权限账号(初始账号) | EMS 安装时需要创建数据库,必须用高权限账号 |
| 白名单 | 添加 ECS 内网 IP | RDS 默认拒绝所有连接,必须加白名单 |
| 备份 | 自动备份(推荐每天) | RDS 自动备份,无需手动操作 |
fcems 数据库和对应用户,需要 RDS 初始账号有 CREATE DATABASE 权限在阿里云 RDS 控制台创建 PostgreSQL 18 实例:
大部分参数用 RDS 默认值就行。以下仅作参考,不是必须改的:
| 参数 | 推荐值 | 说明 |
|---|---|---|
max_connections | 1092 | Fortinet 官方推荐值。如果 RDS 默认值太小(如 100)才需要改大 |
shared_buffers | — | ❌ RDS 托管参数,不能手动改,平台自动管理 |
effective_cache_size | 1536MB | 查询规划器参数,可以改 |
work_mem | 5MB | 可以改 |
RDS 自带主备高可用,内部依赖 wal_level 和 max_wal_senders 做同步。改成 minimal / 0 会破坏 RDS 高可用。这些参数留给 RDS 平台管理,不要动。
RDS 控制台 → 数据安全性 → 白名单设置 → 添加 ECS 的内网 IP(不是公网 IP)。
pg_extension 包内容全是 SQL 文件(不是 .so),所以 RDS 完全兼容:
# 在 ECS 上解压 pg_extension 包看看内容
tar tf forticlientems_7.4.7.2194_pg_extension_rhel.tar
# 输出:
# usr/pgsql-18/share/extension/pgagent--4.2.sql
# usr/pgsql-18/share/extension/pgagent.control
# ...(全部是 SQL 定义文件)
在 RDS 上创建扩展。用 ECS 连接 RDS:
# 先在 ECS 上安装 PostgreSQL 客户端
sudo dnf install -y postgresql
# 连接 RDS(用高权限账号)
psql -h rm-xxx.pg.rds.aliyuncs.com -U postgres -d postgres
# 在 psql 中执行:
CREATE EXTENSION IF NOT EXISTS pgagent;
阿里云 RDS 可能不在白名单里支持 pgagent。如果报错,有两个替代方案:
pgagent--4.2.sql 的内容直接在 psql 中执行将 4 个文件上传到 ECS 的 /root/ 目录:
# 在本地终端执行
scp forticlientems_7.4.7.2194.M.amd64.bin root@<ECS公网IP>:~/ems/
scp forticlientems_7.4.7.2194.M_dependencies_rhel9_amd64.tar.gz root@<ECS公网IP>:~/ems/
scp forticlientems_7.4.7.2194_pg_extension_rhel.tar root@<ECS公网IP>:~/ems/
scp forticlient-ems-7.4.7-release-notes.pdf root@<ECS公网IP>:~/ems/
# 验证文件完整性
cd ~/ems/
sha256sum *.bin *.tar.gz
# 更新系统
sudo dnf update -y
# 安装基础工具
sudo dnf install -y wget curl unzip tar net-tools
# 设置主机名
sudo hostnamectl set-hostname fortiems-01
# 确认架构和版本
uname -m # 输出 x86_64
cat /etc/redhat-release # Red Hat Enterprise Linux release 9.x
如果某些包装不上,阿里云 RHEL 可能需要手动添加 EPEL 或 PowerTools 仓库。但 EMS 的离线依赖包(--offline_bundle)已经包含了大部分依赖,通常不需要额外 repo。如果 dnf update 也报错,检查阿里云的 repo 文件是否正常(/etc/yum.repos.d/)。
这是关键步骤。使用 --skip_db_install 告诉安装程序跳过本地 PG 安装,直接连 RDS:
cd ~/ems/
# 添加执行权限
chmod +x forticlientems_7.4.7.2194.M.amd64.bin
# 运行安装(远程 DB 模式)
sudo ./forticlientems_7.4.7.2194.M.amd64.bin -- \
--db_host "rm-xxx.pg.rds.aliyuncs.com" \
--db_user postgres \
--db_pass '<你的RDS高权限账号密码>' \
--skip_db_install \
--allowed_hosts '*' \
--enable_remote_https
--skip_db_install 跳过本地 PG,直接连 RDS。更安全,数据与 EMS 分离# 检查 EMS 服务
systemctl --all --type=service | grep -E 'fcems|apache|redis|postgres'
# 检查端口监听
sudo netstat -tlnp | grep -E '443|8013|10443'
# 测试本地 Web 访问
curl -k https://localhost/
# 测试 RDS 连接
psql -h rm-xxx.pg.rds.aliyuncs.com -U postgres -d fcems -c "SELECT version();"
浏览器访问 https://<ECS公网IP>/:
adminems.yourdomain.com)| 问题 | 原因 | 解决方法 |
|---|---|---|
| 安装报错 "dependencies not found" | 依赖包路径不对 | 确认 .tar.gz 用绝对路径指定(--offline_bundle) |
| 安装报错 "cannot connect to database" | RDS 白名单未添加 ECS 内网 IP | RDS 控制台 → 白名单 → 添加 ECS 内网 IP |
| 安装报错 "not a valid .tar.gz" | 下载不完整或文件损坏 | 验证 sha256sum,重新下载 |
| .bin Permission denied | 没有执行权限 | chmod +x forticlientems_*.bin |
| EMS 启动后 Web 界面打不开 | 安全组未开放 443 端口 | 检查 ECS 安全组入方向规则 |
| EMS 连接 RDS 超时 | ECS 和 RDS 不在同一 VPC | 确认两者在同一 VPC 同一交换机 |
| Agent 无法注册到 EMS | 8013 端口未开放 或 EMS FQDN 未配置 | 检查安全组 + EMS 全局设置中的 FQDN |
| RDS 上无法 CREATE EXTENSION pgagent | 阿里云 RDS 白名单不含 pgagent | 手动执行 SQL 文件,或跳过(EMS 可能不需要) |
| 对比项 | EMS 7.2.14(当前生产) | EMS 7.4.7(新部署) |
|---|---|---|
| 操作系统 | Windows Server 2019 | Red Hat Enterprise Linux 9 |
| 数据库 | SQL Server(本地) | PostgreSQL 18(阿里云 RDS) |
| 部署方式 | 传统安装 | 原生 Linux + 远程 DB |
| 管理方式 | RDP 远程桌面 | SSH + Web |
| 备份 | 手动/SQL Server 作业 | RDS 自动备份 |
| 高可用 | 需手动搭建 | RDS 自带主备高可用 |
| CVE 修复 | 7.2.x 不受 CVE-2026-35616 影响 | 7.4.7 已修复;内嵌 Django/lxml CVE 待 7.4.8 |
TAC 已确认:7.4.7 修复了 CVE-2026-35616(CVSS 9.1,在野利用),但内嵌 Django/lxml 的 CVE 要等 7.4.8 升级到 Django v5。Wiz 扫描出的漏洞属于后一类。可先部署 7.4.7,等 7.4.8 发布后原地升级。