WadesWeaponShed/Check-Point-Trusted-Access-Review

GitHub: WadesWeaponShed/Check-Point-Trusted-Access-Review

一款基于 Check Point Management API 的本地 Web 应用,用于自动化审查 Check Point 管理平面安全配置并检测特定 CVE 相关的配置缺陷。

Stars: 0 | Forks: 0

# Check Point 可信访问审查 请务必尽快应用厂商补丁 这是一款用于通过可信的 Check Point Management API 命令进行 Check Point 可信访问审查的本地 Web 应用。大多数检查仅为审查模式。任何可用的修复操作都需要操作员明确批准。 此扫描器专门用于查找与 CVE-2026-16232 (https://support.checkpoint.com/results/sk/sk185169)、CVE-2026-62144 (https://support.checkpoint.com/results/sk/sk185152) 和 CVE-2026-62145 (https://support.checkpoint.com/results/sk/sk185153) 相关的配置问题。 它允许您扫描并修复对 ANY 的使用,还可以扫描日志以查找潜在的恶意行为者。 此工具并非由 Check Point 创建或提供支持,使用者需自行承担风险。 ## 独立发布版本 对于不想安装 Node.js、npm、Git 或源代码的用户,可在 [`dist/`](dist/) 目录下获取预构建版本: - **Windows x64:** [`dist/windows-x64/`](dist/windows-x64/) 包含独立的 `.exe` 文件和对应的 ZIP 压缩包。 - **macOS Apple Silicon:** [`dist/macos-apple-silicon/`](dist/macos-apple-silicon/) 包含可分发的 `.app` ZIP 压缩包、解压后的应用以及独立的 arm64 可执行文件。 独立发布版本包含 Node.js runtime、Web 界面、后端以及直接的 PDF 报告生成器。它们仅绑定到 `127.0.0.1`,首选端口为 `4000`,在需要时会自动尝试 `4001`、`4002` 及更高的端口,并在默认浏览器中打开选定的本地 URL。 对于 GitHub,请将各平台的 ZIP 文件——以及可选的 Windows `.exe` 文件——作为 **GitHub Release assets** 发布。用户不应仅仅为了运行独立发布版本而去下载 `node_modules` 或源码树。有关制品的目录结构,请参阅 [`dist/README.md`](dist/README.md)。 当前应用与《Check Point Gateway 和 Management Hardening 管理指南》保持一致。 此工具并非由 Check Point 创建或提供支持,使用者需自行承担风险。 该应用在本地运行,登录到 Check Point Security Management Server 或 MDS,扫描可用的 Management API 证据,并呈现与指南对齐的强化检查。大多数检查仅为审查模式;仅在明确实现时才提供特定的修复操作,并且需要操作员批准。需要网络设计审查、Gaia Portal、Gaia API、SSH/Clish、身份提供者设置或带外管理检查的检查项会被标记为需人工验证。 ## 检查内容 扫描器目前涵盖以下强化指南领域: - Security Gateway 隐藏规则审查。 - 隐含规则和隐含规则日志记录审查。 - Management Server 受保护网段和管理源限制审查。 - SmartConsole 可信客户端限制证据。 - 管理员账户、MFA、密码、空闲超时、过期和锁定审查。 - MFA 和外部 Identity Provider 管理员身份验证审查。 - 最小权限集成凭据审查。 - 动态更新 / AutoUpdater 授权证据。 - cpdiag / 诊断和遥测授权证据。 - 针对网关的 Gaia OS 强化审查清单。 - SNMP、syslog、Expert 模式、LOM 和高级隐含规则替换的手动检查。 - 针对已授权 blade 和功能过期证据的安全功能使用情况审查。 ## 工作流程 1. 使用 Check Point Management API 用户登录。 2. 点击 **Scan Hardening Posture**。 3. 审查通过(pass)、需要修复(remediation-required)、需要审查(needs-review)、手动(manual)和未知(unknown)的发现结果。 4. 利用证据和指南章节参考来驱动操作员验证。 对于 MDS 环境,请在登录表单上启用 **MDS Scan**。这将显示两个重要字段: - **Domain** 选择用于域级策略和对象检查的 Management API 域上下文。 - **Global MDS Object Name** 命名用于针对机箱本身执行 Gaia `run-script` 检查的实际 MDS 对象。当登录主机为 MDS IP,但选定的 API 域为 CMA/域时,这是必需的,因为诸如 `run-script` 之类的命令必须以 MDS 对象名称为目标,而不是 MDS IP 或 CMA/域 IP。 启用 **MDS Scan** 时,应用程序会创建两个 Check Point Management API 会话: - 域/CMA 会话使用选定的 **Domain** 登录,用于域级对象、策略包、访问规则、管理员、可信客户端和其他常规域检查。 - MDS/全局会话在不指定域的情况下登录到同一 Management 主机,仅用于针对 **Global MDS Object Name** 的 Gaia `run-script` 命令。这对于检查 MDS 服务器操作系统本身的检查项是必要的,例如 Management Server 接口/默认路由发现、Gaia 管理员设置、Gaia 密码策略、SNMP 以及 Management Server syslog 转发。 - 在可用时,还会打开一个 Global 域会话。当域策略安装在 Global Policy 层下,并且应用程序需要读取域占位符上方的 Global 父级访问规则时,将使用此会话。 用 `mgmt_cli` 的术语来说,域检查的行为类似于包含 `--domain ""` 的命令,而 MDS 主机检查的行为类似于在全局 MDS 上下文中执行的 `mgmt_cli -r true run-script targets.1 "" ...`。 某些 MDS 检查会特意评估多个管理平面。例如,**Restrict Administrative Source IP Addresses** 会同时评估 MDS/全局管理主机 IP 和选定的 Domain/CMA IP。对于每个 IP,它会尝试解析选定域中的匹配对象,检查包含该 IP 的网络对象和地址范围,追踪包含这些对象的组,然后收集引用它们的访问规则。如果匹配的域规则位于 Global Policy 父层下,应用程序会读取直到 `Placeholder for domain rules` 的 Global 访问规则库,并将这些 Global 规则包含在同一个带有 `GLOBAL RULES` 标记的策略包证据表中。 对于 Smart-1 Cloud,请在登录表单上启用 **Smart-1 Cloud context URL**,并输入带有其上下文路径的 Management 主机,例如: ``` tenant-name.maas.checkpoint.com/context-id/web_api ``` 应用程序会保留该路径,并将 API 请求发送至: ``` https://tenant-name.maas.checkpoint.com/context-id/web_api/ ``` 这与 `mgmt_cli` 的 Smart-1 Cloud 上下文结构相匹配: ``` mgmt_cli -m tenant-name.maas.checkpoint.com --session-id --context context-id/web_api ``` 启用 **Smart-1 Cloud context URL** 后,将跳过需要直接访问客户拥有的 Management Server Gaia 对象的检查。实际上,这会移除诸如 **Protect Management Server Behind A Firewall** 和 **Restrict Administrative Source IP Addresses** 之类的 **Management Plane Protection** 检查,因为 Management Server 由 Check Point 托管,并且不作为租户域中客户正常管理的 Gaia 对象存在。 扫描摘要显示当前扫描时间以及本地应用记录的上一次扫描,包括运行该扫描的 Management API 用户名。此历史记录保存在内存中,并在本地 Node 进程重启时重置。 ### 大型环境模式 登录表单包含针对 MDS 或具有多个网关的大型环境的 **Large environment mode**。此模式不会跳过检查或更改证据收集。它通过在全盘扫描期间限制并发 API 请求和 Gaia `run-script` 任务,来降低对 Management API 的扫描压力。 默认标准扫描行为: - Management API 收集命令的运行速度与本地 Node 进程调度的速度一样快。 - Gaia `run-script` 收集受 `RUN_SCRIPT_CONCURRENCY` 限制,默认值为 `8`。 - 管理员上次登录审计查询使用 `show-logs`,并受 `SHOW_LOGS_CONCURRENCY`(默认值为 `1`)的串行化控制。 - `show-task` 轮询在两次轮询尝试之间等待 `750 ms`。 大型环境模式行为: - Management API 扫描调用受 `LARGE_ENV_API_CONCURRENCY` 限制,默认值为 `10`。 - Gaia `run-script` 收集受 `LARGE_ENV_RUN_SCRIPT_CONCURRENCY` 限制,默认值为 `3`。 - `show-logs` 管理员上次登录查找仍受 `SHOW_LOGS_CONCURRENCY` 的串行化控制,以避免并行的审计搜索压力。 - `show-task` 轮询等待 `LARGE_ENV_TASK_POLL_INTERVAL_MS`,默认值为 `1250 ms`。 - Gaia `run-script` 任务输出轮询使用 `TASK_POLL_ATTEMPTS`,默认值为 `20`。当 Smart-1 Cloud 或远程网关在解码后的 `show-task details-level full` 输出准备就绪之前接受 `run-script` 请求时,这非常有用。 - 在大型环境模式和 Smart-1 Cloud 模式下,Security Gateway Stealth Rule 检查首先使用 `show-access-rulebase`。这避免了每个网关进行一次 `where-used details-level full` 调用,这种调用在大型/MDS/Smart-1 Cloud 环境中可能会非常耗时或导致超时。 在启动本地后端之前,可以使用环境变量调整这些值: ``` LARGE_ENV_API_CONCURRENCY=8 LARGE_ENV_RUN_SCRIPT_CONCURRENCY=2 LARGE_ENV_TASK_POLL_INTERVAL_MS=1500 TASK_POLL_ATTEMPTS=20 TASK_POLL_INTERVAL_MS=1000 SHOW_LOGS_CONCURRENCY=1 CP_LOG_API_TIMEOUT_MS=120000 CP_VPN_API_TIMEOUT_MS=120000 VPN_COMMUNITY_PAGE_LIMIT=50 npm start ``` 管理员上次登录检查使用等同于 `administrator: AND SmartConsole AND "Log In"` 的过滤器来查询 SmartConsole 审计登录。`CP_LOG_API_TIMEOUT_MS` 控制这些 `show-logs` 请求的超时时间,与常规的 Management API 调用分开。 CVE IKE VPN 社区检查通过 `VPN_COMMUNITY_PAGE_LIMIT`(默认值为 `50`)对 `show-vpn-communities-star` 和 `show-vpn-communities-meshed` 进行分页,并使用 `CP_VPN_API_TIMEOUT_MS`(默认值为 `120000 ms`)。这可以防止 Smart-1 Cloud 和 MDS 扫描在一次调用中请求非常大的 `details-level full` VPN 社区 payload。 在生产 MDS 环境、繁忙的 Management Server 或具有数十个网关的部署中扫描时,如果保护 `fwm` / Management API 的响应速度比绝对最快的扫描时间更重要,请使用此模式。 即使不存在自动化的高风险条件,某些检查仍需要操作员进行审查。SmartConsole 可信客户端、管理员账户以及管理员密码/空闲超时/过期/锁定策略检查可以被标记为已审查。在同一登录会话中,状态将更改为 **Reviewed**。新的登录会将状态恢复为 **Needs review**,而最后的审查批准及其登录的 Management API 用户名和时间戳仍保持可见。 对于管理员密码/空闲超时/过期/锁定策略检查,即使处于 **Remediation Required** 状态,操作员也可以将其标记为已审查。在记录该审查之前,应用程序会警告操作员正在接受 Check Point 不推荐的设置。 顶部摘要将 **Remediation Required** 和 **Remediation Recommended** 的发现合并为一个 **Remediation Needed** 计数。 ## 安全说明 - 连接到 Check Point Management Server 时,应用默认使用 HTTPS。 - 请勿将 Management Server 输入为 `http://...`;这将通过明文 HTTP 发送 Check Point API 登录凭据。 - 浏览器默认通过 `http://127.0.0.1:4000` 或下一个可用的本地端口与本地后端通信。 - 用户名和密码仅在 localhost 上从浏览器发送到本地后端。 - 后端通过 Management API 登录请求将用户名和密码发送至 Check Point。 - 应用不会记录密码。 - Check Point 会话 ID 仅在本地 Node 进程的生命周期内存储在服务器内存中。 - **Allow self-signed certificate** 选项会保留 TLS 加密,但会禁用证书验证。仅在需要时使用。 - 修复操作需要操作员在浏览器中明确批准,然后后端才会发送更改命令。 ## 使用的 API 命令 后端会代理以下 Check Point Management API 命令: - `login` - `logout` - `show-trusted-clients` - `delete-trusted-client` - `show-api-settings` - `set-api-settings` - `publish` - `discard` - `show-administrators` - `delete-administrator` - `show-default-administrator-settings` - `set-default-administrator-settings` - `show-smart-console-idle-timeout` - `set-smart-console-idle-timeout` - `show-login-restrictions` - `show-cp-password-requirements` - `set-cp-password-requirements` - `show-simple-gateways` - `show-global-properties` - `set-global-properties` - `run-script` - `show-task` - `insights/v3.0/show-suggestions-summary` - `insights/v3.0/show-suggestions` 安全功能使用情况检查会针对每个受管网关目标运行 Gaia `run-script`: ``` mgmt_cli run-script script-name "show license" targets.1 "GATEWAY_OBJECT_NAME" script "clish -c 'show license status'" --format json mgmt_cli show-task task-id "" details-level full --format json ``` 应用程序解码 `task-details[].responseMessage`,从许可功能/日期行中提取已知的 blade 代码(如 `FW`、`VPN`、`IPS` 和 `URLF`),并包含来自顶部功能行(`FW`、`VPN`、`IA`)的永久内置 blade 代码。设备/型号/期限后缀(如3950-2Y`)将被忽略,已知的 blade 代码将转换为人类可读的 blade 名称,例如 `IPS`、`URL Filtering` 或 `Anti-Bot`。证据按网关分组,并附有紧凑的 `License Feature`、`Expiration Date` 和 `Enabled/Disabled` 表格。启用状态从 `network-security-blades` 下的 `show gateways-and-servers details-level full` 中读取;缺失的 blade 键被视为禁用。高级 DNS Security 被标记为在分配的 Threat Profile 中进行手动确认,因为它不作为常规的网关 blade 标志公开。 SmartConsole 可信客户端检查运行等同于以下内容的命令: ``` mgmt_cli -r true show trusted-clients --domain "System Data" details-level full --format json ``` Web 应用登录到 Management API 域 `System Data`,拉取可信客户端的 `name`、`type` 以及特定于类型的 IP 数据,并将其显示在证据表中。当返回对象的 `type` 设置为 `any` 时,它会将检查标记为 **Remediation Required**。 当可信客户端对象的 `type` 设置为 `any` 时,应用程序会提供第一个修复操作。它会查找该对象的实际 `uid` 并运行等同于以下内容的命令: ``` mgmt_cli delete trusted-client uid "" --domain "System Data" mgmt_cli publish --domain "System Data" ``` 如果删除命令后发布失败,应用程序会在同一个 `System Data` 会话中尝试 `discard`,以免对象被未发布的更改锁定。 可信客户端证据表还允许操作员选择一个或多个返回的可信客户端对象,并将其从 Web 应用中删除。应用程序会根据当前的 `show-trusted-clients` 输出验证所选的 `uid` 值,然后运行等同于以下内容的命令: ``` mgmt_cli delete trusted-client uid "" --domain "System Data" mgmt_cli publish --domain "System Data" ``` 对于多个选定的客户端,删除命令会针对每个选定的 `uid` 运行一次,随后进行一次发布。如果在更改开始后删除或发布失败,应用程序会在同一个 `System Data` 会话中尝试 `discard`。 隐含规则日志记录检查运行等同于以下内容的命令: ``` mgmt_cli -r true show global-properties details-level full --format json ``` Web 应用拉取返回的 `firewall` 对象中的每个键/值对,并将其显示在表格中。如果 `log-implied-rules` 为 `false`,则检查被标记为 **Remediation Required**,并且该行提供一个内联修复按钮,运行等同于以下内容的命令: ``` mgmt_cli set global-properties firewall.log-implied-rules true mgmt_cli publish ``` Management API Access 检查运行等同于以下内容的命令: ``` mgmt_cli -r true show api-settings --domain "System Data" --format json ``` Web 应用显示 `accepted-api-calls-from` 的值。如果为 `all ip addresses`,则检查被标记为 **Remediation Required**,并提供等同于以下内容的操作: ``` mgmt_cli set api-settings accepted-api-calls-from "all ip addresses that can be used for gui clients" --domain "System Data" --format json mgmt_cli publish --domain "System Data" ``` 如果 API 访问已限制为 GUI 客户端,则检查会显示可信客户端证据表供审查。 Policy Insights 检查运行只读的 Access Control Insights 调用: ``` mgmt_cli insights/v3.0/show-suggestions-summary --method POST --format json mgmt_cli insights/v3.0/show-suggestions --method POST --format json ``` 详细的建议请求会过滤 `unused-objects`、`tighten-rule`、`delete-disabled-rule` 和 `zero-hits-rule`,首页限制为 50 条建议。 管理员账户审查运行等同于以下内容的命令: ``` mgmt_cli -r true show-administrators --domain "System Data" details-level full --format json ``` Web 应用在此收集步骤中登录到 Management API 域 `System Data`,然后显示一个包含 `Name`、`Permission Profile Name`、`Authentication-Method` 和 `expiration-date` 的证据表。过期值从 `iso-8601` 转换为人类可读的日期和时间。没有 `expiration-date` 键的管理员显示为 `Never`。 MFA 和 Identity Provider 集成检查使用 `show default-administrator-settings` 显示默认的 `authentication-method`,然后使用 `show-administrators` 列出 `authentication-method` 为 `check point password` 或 `os password` 的管理员。如果默认方法或任何管理员使用基于密码的身份验证,则该检查被标记为 **Remediation Recommended**。操作员可以将该部分标记为已审查,并且会显示相同的审查者历史记录模式。该检查包含一个设置帮助按钮,提供 SmartConsole 和外部 IdP SAML 配置指南。 管理员账户表允许操作员选择一个或多个返回的管理员对象,并将其从 Web 应用中删除。应用程序会根据当前的 `show-administrators` 输出验证所选的 `uid` 值,然后运行等同于以下内容的命令: ``` mgmt_cli delete administrator uid "" --domain "System Data" mgmt_cli publish --domain "System Data" ``` 对于多个选定的管理员,删除命令会针对每个选定的 `uid` 运行一次,随后进行一次发布。如果在更改开始后删除或发布失败,应用程序会在同一个 `System Data` 会话中尝试 `discard`。 管理员密码、空闲超时、过期和锁定策略检查运行等同于以下内容的命令: ``` mgmt_cli show default-administrator-settings --domain "System Data" --format json mgmt_cli show smart-console-idle-timeout --domain "System Data" --format json mgmt_cli show login-restrictions --domain "System Data" --format json mgmt_cli show cp-password-requirements --domain "System Data" --format json ``` Web 应用将返回的设置显示在 `Setting`、`Value` 和 `State` 表中。默认管理员过期设置为 `never`、禁用的 SmartConsole 空闲超时、禁用的管理员账户锁定、禁用的自动解锁,或者 `min-password-length` 小于 `10`,均被标记为需要修复。 当默认管理员身份验证方法为 `check point password` 时,`State` 列会建议使用支持 MFA 或外部 Identity Provider 的身份验证方法。 对于默认管理员过期时间,`State` 列显示返回的过期详细信息:格式化的 `expiration-date` 值,或者当类型为 `expiration-period` 时的 `expiration-period` 加上 `expiration-period-time-units` 的值。 当默认管理员过期时间设置为 `never` 时,应用程序会提供推荐的修复操作。它运行等同于以下内容的命令: ``` mgmt_cli set default-administrator-settings expiration-type "expiration period" expiration-period "4" expiration-period-time-units "months" --domain "System Data" --format json mgmt_cli publish --domain "System Data" ``` 如果设置更改后发布失败,应用程序会在同一个 `System Data` 会话中尝试 `discard`,以免设置被未发布的更改锁定。 当 SmartConsole 空闲超时被禁用时,应用程序会提供推荐的修复操作。它运行等同于以下内容的命令: ``` mgmt_cli set smart-console-idle-timeout enabled true timeout-duration "10" --domain "System Data" --format json mgmt_cli publish --domain "System Data" ``` 如果空闲超时更改后发布失败,应用程序会在同一个 `System Data` 会话中尝试 `discard`。 当最小密码长度小于 `10` 时,应用程序会提供推荐的修复操作。它运行等同于以下内容的命令: ``` mgmt_cli set cp-password-requirements min-password-length "10" --domain "System Data" --format json mgmt_cli publish --domain "System Data" ``` 如果密码要求更改后发布失败,应用程序会在同一个 `System Data` 会话中尝试 `discard`。 ## 安装与运行 从源码运行需要 Node.js 18 或更高版本以及 `package.json` 中声明的 npm 依赖项。独立发布版本的用户不需要 Node.js、npm 或 Git。 ### macOS 从源码运行 1. 从 [nodejs.org](https://nodejs.org/) 或 Homebrew 安装 Node.js 18 或更高版本。 brew install node 2. 下载或克隆此项目。 git clone cd "Check Point Trusted Access Review" 3. 安装依赖并启动本地应用。 npm install npm start 4. 打开应用。 http://127.0.0.1:4000 ### Windows 从源码运行 1. 从 [nodejs.org](https://nodejs.org/) 安装 Node.js 18 或更高版本。 2. 下载并解压项目 ZIP,或使用 Git for Windows 克隆存储库。 git clone cd "Check Point Trusted Access Review" 3. 安装依赖并启动本地应用。 npm install npm start 4. 在浏览器中打开应用。 http://127.0.0.1:4000 ### 可选端口更改 默认情况下,应用首选 `127.0.0.1:4000`,如果端口被占用,会自动向上递增。如需强制指定端口: macOS: ``` PORT=4500 npm start ``` Windows PowerShell: ``` $env:PORT = "4500" npm start ``` 然后打开: ``` http://127.0.0.1:4500 ``` ## 故障排除 服务器会在终端打印请求诊断信息。成功的登录尝试将显示类似于以下内容的行: ``` Local API request requestId=abc12345 route=/api/login Login request received target=https://mgmt.example.com/web_api/login user=admin Check Point API request starting command=login target=https://mgmt.example.com/web_api/login ``` 如果浏览器显示带有请求 ID 的登录错误,但数据包捕获显示没有向 Management Server 发出的出站尝试,请将终端的 `target=` 值与您的数据包捕获过滤器进行比较。 如果完全没有 `Local API request` 行,则说明浏览器未连接到本地后端。请确认应用正在运行,并且您打开了正确的本地 URL。
标签:Check Point, MITM代理, 数据可视化, 暗色界面, 本地Web应用, 自定义脚本, 调试辅助