Bor v0.8.0 发行说明 / 新功能

Bor v0.8.0 是一款面向 Linux 桌面的开源策略管理系统,扩展了管理能力,现代化了管理界面,并加强了安全防护。本次发布侧重于提升受管策略的应用覆盖范围以及提升舰队管理员的运营效率。

新增策略类型

Bor v0.8.0 新增对三种策略类型的支持,管理员可以在整个 Linux 桌面舰队中强制执行相应设置。

Thunderbird

Mozilla Thunderbird 现在可以使用与 Firefox ESR 相同的机制进行管理。Bor 代理会写入一个受管的 policies.json 文件,该文件是所有绑定策略的合并结果。如果最后一个策略被移除,原始文件会被恢复。此强制方式兼容 Flatpak 与 RPM/DEB 安装。为防止未授权更改,代理使用篡改监视器检测外部编辑并立即恢复受管文件。

Microsoft Edge for Business

对于在 Linux 上使用 Microsoft Edge 的舰队,Bor 现在支持在每个 Edge 受管策略目录中创建 bor_managed.json 文件。Web UI 提供基于树的编辑器,包含完整的 Edge 策略目录、JSON 校验以及启用前的设置预览。

Firewalld 区域

Bor 现在管理已注册节点上的 firewalld 区域,包括服务、端口、转发端口、富规则、伪装、接口、来源以及区域目标。代理将区域 XML 写入 /etc/firewalld/zones/,使用 firewall-cmd --check-config 验证配置,并重新加载 firewalld。这些区域文件同样受到篡改监视器的保护。

Web UI 大改版

管理界面已使用 PatternFly 6 重新设计,以提升可用性和可访问性(WCAG 2.2 AA)。

改进的导航和用户体验

  • 路由页面: 每个页面现在都有唯一的 URL,支持浏览器前进/后退以及深度链接。全局错误边界防止白屏崩溃。
  • 全页策略编辑器: 策略编辑器已从嵌套模态框迁移到专用路由页面(/policies/:id/edit),为基于树的编辑器提供了更大的空间。
  • 可伸缩列表: 节点和合规性列表现在使用服务器端分页、过滤和排序,以在拥有数千节点的舰队中保持性能。
  • 安全护栏: UI 现在包含未保存更改提示、破坏性操作(如删除资源)的确认对话框,以及 Chrome/Edge 值的 JSON 校验。
  • 仪表盘增强: 仪表盘现在提供分组的侧边栏导航和统计磁贴,管理员可以直接钻取到预过滤列表(例如,点击 “Offline” 直接进入过滤后的 Nodes 页面)。

质量提升改进

  • 两步登录: 登录表单现在包含密码可见切换和实时大写锁定警告。
  • MFA 管理: 多因素认证(MFA)的备份码现在可以复制或下载。
  • 策略管理: 策略可以直接在列表视图中发布或撤回。

安全加固

Bor v0.8.0 包含专门的安全通道,以保护服务器和代理。

  • 身份与访问: 代理身份现在严格绑定到 mTLS 客户端证书。服务器上的 MFA 与 RBAC 强制路径已被加固。
  • 加密更新: 传统的 SHA-256 加密 TOTP 密钥将在首次读取时透明迁移到基于 HKDF 的加密方式。
  • 基础设施防护: Ubuntu PPA 与 Fedora COPR 仓库导入助手现在仅跟随白名单重定向目标,阻止基于重定向的 SSRF。
  • 审计日志: 审计日志 CSV 导出现在防止电子表格公式注入。
  • 凭证管理: 初始管理员密码不再打印到服务器日志(journald),而是写入仅 root 可读的文件。
  • TLS 管理: 当服务器 TLS 证书的主题备用名称(SAN)不再匹配配置的主机名时,证书会自动重新生成。
  • 依赖更新: 所有打开的 Dependabot 警报已解决,包括 react-router RSC CSRF 建议(GHSA-qwww-vcr4-c8h2)。

技术实现与平台更新

基于 Proto 的目录

为保持唯一的事实来源,Firefox、Thunderbird、Chrome 与 Edge 的策略目录现在由 protobuf 注解生成。该共享模式被服务器、代理和前端共同使用。

Polkit 变量条件

Polkit 规则现在通过 action.lookup() 支持变量条件,允许规则根据动作变量匹配(例如,仅对可移动驱动器的挂载进行允许)。此外,一个规则中的多个动作 ID 现在会正确使用 || 连接。

平台栈

  • 前端: React 19.2 与 react-router 8.3。
  • 后端/代理: gRPC 1.82.1 与 golang.org/x/crypto 0.52.0。
  • 开发: 前端开发现在需要 Node.js 22.22 及以上版本。

升级说明

管理员必须将代理升级到 v0.8.0 才能支持新的 Thunderbird、Edge 与 Firewalld 策略类型。旧版代理会忽略其不识别的策略类型。protobuf 策略模式已通过 thunderbird.protofirewalld.proto 扩展,并更新了 polkit 与 edge 消息;任何基于 proto/policy/ 构建的外部工具都必须重新生成。

社区洞察

Hacker News 的用户讨论了 Bor 的潜在应用和替代方案。一些管理非营利组织笔记本的管理员正在寻求对 Linux Mint Cinnamon 桌面环境的支持以及执行自定义脚本的想法。

其他技术问题聚焦于策略执行模型,特别是代理如何处理配置漂移以及跨来源的冲突策略。有人指出 inotify 漂移捕获机制在用户注意到之前恢复更改的效果非常好。

"Nice work on the mTLS/gRPC push design — the inotify drift-catch on parent dirs is a clean answer to the 'revert happens before the user notices' problem, and I like that the audit trail is server-side."

对项目的其他建议包括支持 SCAP(Security Content Automation Protocol)以执行 DISA STIG,及与 Wazuh 等舰队治理工具的潜在集成。

Sources