tannerharris0n/firewall-sizing-tool
GitHub: tannerharris0n/firewall-sizing-tool
一款帮助非技术人员轻松选择FortiGate防火墙型号的独立选型工具。
Stars: 0 | Forks: 0
# 防火墙选型工具
一款用户友好的 FortiGate 防火墙选型工具。用简单的语言回答关于您环境的问题,即可获得推荐型号、其背后的计算依据、两个备选方案以及可直接用于方案的推荐理由。
## 项目初衷
官方的 Fortinet 产品矩阵是一张包含吞吐量数据的电子表格。SE 工具包计算器则假设您已经了解自己所需的威胁防护吞吐量。两者都无法帮助一个非技术背景的采购人员,他可能知道自己有 75 名用户和一个医疗影像工作流程,但完全不清楚 2.4 Gbps NGFW 吞吐量对他来说究竟意味着什么。
WatchGuard 在其产品选型工具上做得很好,他们通过询问有多少人使用网络以及他们做什么来实现。本工具正是将同样的理念应用于 FortiGate。
## 重要免责声明
**独立性。** 这是一个独立项目。它与 Fortinet, Inc. 无关、未获其认可或赞助。所有提及的 FortiGate 产品名称、型号和商标均为 Fortinet, Inc. 的财产。未使用任何内部 Fortinet 材料、合作伙伴机密定价或非公开规格。
**作者所属关系与观点。** 作者以独立的专业身份担任 Fortinet 企业销售工程师。此工具是利用仅公开可用的产品信息,在该职责之外构建的个人项目。此处表达的观点、意见和推荐逻辑仅代表作者个人,不代表 Fortinet, Inc. 或任何其他雇主。
**无保证。** 本工具按“原样”提供,不提供任何明示或暗示的保证,包括但不限于对适销性、特定用途适用性或非侵权性的保证。推荐仅为估算值。在做出购买决定之前,请务必与合格的销售工程师、授权的 Fortinet 合作伙伴或直接联系 Fortinet 进行选型验证。
**无责任。** 在任何情况下,作者或贡献者均不对因使用本工具或其输出而引起的任何索赔、损害或其他责任负责。购买决定由买家自行负责。
**数据隐私。** 本工具不收集用户数据。所有选型计算都在您的浏览器中运行。可选的 PDF 导出和 AI 推理功能会调用您自己配置的后端;除了调用推理功能时配置的 Anthropic API 端点外,不会向第三方发送任何数据。
## 工作原理
选型引擎将威胁防护吞吐量作为主要选型指标,因为对于运行典型 UTM 堆栈的 FortiGate 来说,这是最具代表性的实际使用数字。纯防火墙吞吐量是一个表面指标。
计算逻辑:
```
required = users x devices_per_user x bandwidth_per_device x peak_factor
target = required x (1 + headroom_percentage)
```
该工具从 FortiGate 型号数据库中筛选出威胁防护吞吐量达到或超过目标的型号,按升序排序,并推荐符合要求的最小型号。同时会展示两个备选方案:一个是下一级别的型号(附带其可能不够宽裕的说明),另一个是上一级别型号以提供更多余量。
每设备带宽默认值来自一个垂直行业预设表。假设标准办公用户每设备需要约 1 Mbps。涉及医疗影像的工作流程假设为 3 Mbps。制造业和 OT(运营技术)环境假设为 0.3 Mbps,因为在这些环境中并发会话数通常比带宽更重要。
每用户设备数默认为 3 台(笔记本电脑、手机、平板电脑)。峰值因子默认为 1.5 倍。余量默认为 40%,用于五年增长规划。所有这些都可以在“高级”部分由用户调整。
## 功能特性
- 基于用户数量的选型,而非吞吐量优先
- 行业预设(医疗、制造、教育、酒店、金融服务等)
- 功能需求复选框(SD-WAN、SSL 深度检测、IPS、应用控制、防病毒、沙盒、ZTNA)
- VPN 选型交叉检查
- 高可用性模式说明
- 配套产品建议(FortiAP、FortiSwitch、FortiAnalyzer、FortiAuthenticator)
- 实时计算分解,展示计算过程
- 可共享的 URL,所有输入参数已编码
- 用于方案的 PDF 导出
- 用于方案语言的 AI 生成推荐理由段落
- 移动端响应式设计
## 技术栈
- 前端:React 18、Vite、Tailwind CSS
- 后端:Node.js 20、Express (CommonJS)
- PDF 渲染:Puppeteer
- AI 推理:Anthropic Claude API
- 部署:Railway
## 本地开发
需要 Node.js 20 或更高版本。
```
git clone https://github.com/YOUR_USERNAME/firewall-sizing-tool.git
cd firewall-sizing-tool
npm install
cp .env.example .env
npm run dev
```
如果想使用推理功能,请在 `.env` 文件中编辑您的 `ANTHROPIC_API_KEY`。工具在没有它的情况下也能工作;推理按钮只会显示一个友好的错误信息。
开发服务器在 http://localhost:5173 运行 Vite 前端(带热重载),在 http://localhost:8080 运行 Express 后端。前端会将 API 请求代理到后端。
## 环境变量
| 变量 | 必需 | 描述 |
| --- | --- | --- |
| ANTHROPIC_API_KEY | 否 | 仅用于 AI 推理生成功能。工具在没有它的情况下也能工作。 |
| PORT | 否 | 服务器端口。Railway 会自动设置此变量。默认为 8080。 |
## 部署 (Railway)
1. 将仓库推送到 GitHub
2. 在 Railway 中,从您的 GitHub 仓库创建一个新项目
3. 设置 `ANTHROPIC_API_KEY` 环境变量(可选,仅当需要 AI 推理功能时)
4. Railway 将通过 `nixpacks.toml` 自动检测构建过程
5. 生成一个公共域名或附加您自己的域名
Railway 运行 `npm install`,然后 `npm run build`,最后 `node server.cjs`。
## 填充 FortiGate 型号数据库
随附的 `src/data/fortigate-models.json` 包含值为零的占位符条目。在工具产生有意义的推荐之前,请使用当前 Fortinet 产品数据表中的实际吞吐量数据填充它。
对于每个型号,填写:
- `firewallGbps` - 防火墙吞吐量(Gbps)
- `ngfwGbps` - NGFW 吞吐量(防火墙 + 应用控制 + IPS)
- `threatProtectionGbps` - 威胁防护吞吐量(主要选型数字)
- `ipsecVpnGbps` - IPsec VPN 吞吐量
- `sslInspectionGbps` - SSL 检测吞吐量
- `concurrentSessions` - 最大并发会话数
- `newSessionsPerSec` - 每秒新建会话数
- `interfaces` - 人类可读的接口摘要(例如 “16x GE RJ45, 4x SFP”)
- `poeWatts` - 如有 PoE 功能,为总 PoE 功率预算,如无则为 0
- `formFactor` - 桌面式、1U、2U 或 3U
- `useCase` - 典型部署场景的简短描述
仅使用来自 fortinet.com 的公开可用数据表。不要粘贴合作伙伴机密定价、仅 NFR(非转售)规格或发布前型号数据。
## 自定义选型逻辑
所有默认值位于 `src/lib/constants.js`。垂直行业预设位于 `src/data/vertical-presets.json`。要添加一个行业,请附加一个包含 `name`、`bandwidthPerDeviceMbps` 和可选 `notes` 的对象。
要更改推荐策略(例如,偏好更保守的选型或默认推荐上一个级别),请修改 `src/lib/sizing-engine.js` 中的排序和选择逻辑。
## 开发路线图
未来可能添加的功能:
- 基于用户密度和频段要求的 FortiAP 型号选择
- 基于 PoE 预算和端口数量的 FortiSwitch 型号选择
- 带有短代码 URL 的已保存场景(需要 Postgres)
- 两个场景的并排比较(当前 vs. 预期增长)
- 多站点选型,包含每个站点的型号推荐
- BOM(物料清单)导出为 CSV
- 与 FortiCare 保修/支持级别估算集成
## 许可证
MIT 许可证。请参阅 `LICENSE` 文件。
## 作者
Tanner Harrison 是 Fortinet 负责太平洋西北地区的企业销售工程师,持有 CISSP 认证。此工具是其在该职责之外构建的个人项目。此处表达的观点和意见仅代表作者个人,不代表 Fortinet, Inc. 或任何其他雇主。
GitHub: [@tannerharris0n](https://github.com/tannerharris0n)
Website: [tannerharrison.com](https://tannerharrison.com)
标签:FortiGate, IT基础设施, MITM代理, 产品矩阵, 企业安全, 公开信息, 安全设备, 尺寸估计, 工具, 推荐系统, 独立项目, 环境评估, 用户交互, 网络安全, 网络资产管理, 自定义脚本, 销售工程, 防火墙选型, 隐私保护