展示 HN:Bor – 用于 Linux 桌面的开源策略管理工具
Show HN: Bor – Open-source policy management for Linux desktops

原始链接: https://getbor.dev/blog/2026-08-02-bor-v080-release/

Bor v0.8.0 在策略管理、安全性和用户界面方面进行了重大升级。 **新增策略类型:** * **Thunderbird 与 Edge:** 提供对这两个浏览器/客户端的全面管理功能,包括防篡改检测及专用的树状 UI 编辑器。 * **Firewalld:** 实现对区域、服务、端口和规则的集中式控制,并集成验证功能。 **平台与 UI 全面重构:** * **PatternFly 6 界面:** 采用现代化的全路由 Web UI,支持服务端分页,提升了可访问性 (WCAG 2.2 AA),并为配置增加了更完善的安全防护机制。 * **细粒度 RBAC:** 权限管理从全局调整为按操作进行管理,支持更精确的权限委派。 * **Polkit:** 新增通过 `action.lookup()` 实现的可变条件支持。 **安全性增强:** * 强化了 mTLS 证书绑定,优化了密钥加密(迁移至 HKDF),并改进了日志记录规范以防止敏感数据泄露。 * 全面更新依赖项,并修复了已知的 CVE 漏洞。 **技术说明:** * 系统现在在服务器、代理(Agent)和前端之间采用了统一的基于 Protobuf 的策略目录。 * **升级要求:** 代理必须更新至 v0.8.0 才能支持新的策略类型。 * 详细的更新日志及适用于各主流 Linux 发行版的安装包,请查看 GitHub 发布页面。

**Bor** 是一个用于 Linux 桌面的开源集中管理系统,旨在对多台机器执行统一策略。与传统依赖 SSH 或周期性轮询的配置管理工具(如 Ansible 或 Puppet)不同,Bor 使用轻量级的 Go 代理程序,通过 mTLS 加密的 gRPC 流与中央服务器保持持久连接。 主要功能包括: * **实时执行:** 策略可即时下发。如果用户或进程试图篡改受管文件,代理会利用 `inotify` 检测更改,并在毫秒内将其恢复。 * **注重合规性:** 它利用原生的“锁定”机制(如 dconf 锁或 KDE Kiosk 模式)确保设置不可覆盖,从而避免了与任意远程代码执行工具相关的安全风险。 * **基础设施集成:** 它可与 LDAP、Kerberos 和 Active Directory 等现有系统集成,专注于基于节点的策略管理,而非全面的域控。 Bor 旨在为系统管理员提供一套“成品”方案,为零散或手动管理的 Linux 桌面环境提供了一种防篡改且易于审计的替代方案。开发者目前正积极寻求反馈,以优化策略模型并扩展其在企业和教育场景中的应用能力。
相关文章

原文

Bor v0.8.0 is out. This release adds three new policy types — Thunderbird, Microsoft Edge for Business, and Firewalld zones — alongside a full web UI overhaul, finer-grained RBAC, and a dedicated security hardening pass. The complete changelog is on the GitHub release page.

The Policies list in v0.8.0 — Thunderbird, Edge, and Firewalld join Firefox, Chrome, Package, and dconf

Thunderbird policy type

Mozilla Thunderbird can now be managed on enrolled desktops with the same mechanism used for Firefox ESR. The agent writes the managed policies.json that Thunderbird expects, merged from all bound policies, and removing the last policy restores the original file. Flatpak installations are detected and enforced alongside RPM/DEB installations, and the managed file is protected by the tamper watcher — external edits are detected and immediately restored. The web UI ships a full policy editor with the complete Thunderbird policy catalogue.

Thunderbird policy in the tree editor — privacy, security, add-ons, and more

Microsoft Edge for Business policy type

For fleets running Edge on Linux, the agent writes bor_managed.json into each Edge managed-policy directory and cleans it up from every directory when the last bound policy is removed. The web UI provides a tree-based editor with the Edge policy catalogue, JSON validation, and a setting preview before enabling.

Microsoft Edge policy — a released kiosk baseline in the read-only Configuration view

Firewalld zone policy type

The new Firewalld policy type manages firewalld zones on enrolled nodes: services, ports, forward ports, rich rules, masquerade, interfaces, sources, and the zone target. The agent writes zone XML to /etc/firewalld/zones/, validates it with firewall-cmd --check-config, and reloads firewalld. Like all other managed files, the zone files are tamper-protected.

Firewalld zone policy — target zone, allowed services, and ports

Polkit: variable conditions

Polkit rules now support variable conditions via action.lookup(), so a rule can match on action variables — for example allowing mounts only for removable drives. Also fixed: multiple action IDs in one rule are now correctly joined with ||.

Polkit rule with an action.lookup() variable condition — drive_removable == true

Per-action RBAC

User and role administration is now guarded by per-action permissions instead of a single blanket permission, allowing finer-grained delegation of admin duties.

Web UI overhaul

A full modernization pass over the PatternFly 6 interface, spanning several UX sprints. The dashboard shows the new look — grouped sidebar navigation, a single left-aligned page title, and stat tiles that drill down to pre-filtered lists: click Offline and you land on the Nodes page already filtered to offline nodes.

The redesigned dashboard with drill-down stat tiles and grouped sidebar navigation

The highlights:

  • URL routing — every page has a real URL with working browser back/forward and deep links; expired sessions redirect to login; a global error boundary prevents white-screen crashes.
  • Full-page policy editor — the policy editor is now a routed page (/policies/:id/edit) instead of nested modals.
  • Policy safety rails — unsaved-changes guard, confirmation for destructive type changes, JSON validation for Chrome/Edge values, a read-only Configuration view for released policies, and setting previews in the tree editors.
  • Scalable lists — server-side pagination, filtering, and sorting for Nodes and Compliance; search, sorting, and empty states across all list pages.
  • Destructive-action protection — type-to-confirm dialogs for all resource deletes, plus server-side guards that prevent deleting, disabling, or demoting the last Super Admin.
  • Accessibility (WCAG 2.2 AA) — accessible tree roles in the policy editors, aria-live status messages, focus-ring and dark-mode/high-contrast correctness via PatternFly 6 design tokens, and an accessibility lint gate in CI.

The policy editor is now a routed, full-width page instead of stacked modals, with room for the tree-based editors behind each policy type:

The full-page policy editor

Node and compliance lists are paginated, filtered, and sorted server-side, so fleets with thousands of nodes stay fast:

The Nodes list with server-side pagination and searchable filter dropdowns

Plus many quality-of-life changes: policies can be released/unreleased directly from the list view, backup codes for MFA can be copied or downloaded, the login form gained a password reveal toggle and Caps Lock hint, and the sidebar is now grouped into Fleet / Policy / System.

The password step of the redesigned two-step login — reveal toggle and live Caps Lock warning

Proto-driven policy catalogues

The Firefox, Thunderbird, Chrome, and Edge policy catalogues shown in the web UI are now generated from protobuf annotations — one source of truth shared by the server, agent, and frontend.

Security hardening

This release includes a dedicated hardening pass:

  • Agent identity is now strictly bound to the mTLS client certificate, and MFA/RBAC enforcement paths were hardened on the server.
  • Legacy SHA-256-encrypted TOTP secrets are transparently migrated to HKDF-derived encryption on first read.
  • The Ubuntu PPA and Fedora COPR repository import helpers now block redirect-based SSRF; only allowlisted redirect targets are followed.
  • Audit log CSV export is guarded against spreadsheet formula injection.
  • The auto-generated initial admin password is no longer printed to the server log (where it would land in journald or centralized logging); it is written to a root-only file instead.
  • The server TLS certificate is automatically regenerated when its SANs no longer match the configured hostnames.
  • All open Dependabot alerts were resolved, including the react-router RSC CSRF advisory (GHSA-qwww-vcr4-c8h2).

Audit logs — every login, policy change, and admin action, exportable as injection-safe CSV or JSON

Platform updates

The frontend moved to React 19.2 and react-router 8.3, with TypeScript typecheck now enforced in CI. Server and agent dependencies were bumped, including gRPC 1.82.1 and golang.org/x/crypto 0.52.0.

Upgrade notes

  • Agents must be upgraded to v0.8.0 to enforce the new Thunderbird, Edge, and Firewalld policy types; older agents ignore policy types they do not understand.
  • The protobuf policy schema gained thunderbird.proto and firewalld.proto and extends the polkit and edge messages — regenerate any external tooling built against proto/policy/.
  • Frontend development now requires Node.js 22.22+.

Download

Packages for Debian/Ubuntu, RHEL/Fedora/SUSE, Alpine Linux, and Arch Linux across x86_64, aarch64, and ppc64le are available on the Download page.

联系我们 contact @ memedata.com