跳转到内容

锁定桌面自助终端

桌面自助终端应用在其自身进程内处理能处理的部分。对于无人值守的公共自助 终端,在应用下方叠加一个操作系统级配置文件,让操作系统本身阻断应用 根本无法关闭的逃逸路径。

作为自助终端客户端启动时,桌面应用:

  • 无边框全屏打开,覆盖整个显示区域,包括菜单栏条。
  • macOS 上,通过原生 NSApplicationPresentationOptions.hideMenuBar | .hideDock)隐藏菜单栏和程序坞,并在应用每次重新获得 焦点时重新断言。
  • 在 macOS 上通过 AWT QuitHandler 阻止 ⌘+Q(以及应用菜单中的”退出”)。
  • 尝试抑制其他常见快捷键 — Alt+F4、⌘+W、Alt+Tab、⌘+Tab、Windows/Super 键、F11 和 Escape — 针对那些操作系统在自行处理之前先传递给应用的快捷键。
  • 退出受管理员 PIN 保护。管理员菜单通过右上角五次快速点按(触摸屏) 或五次 F12 按键(硬件键盘)打开,PIN 输入有暴力破解锁定。监督操作员在 首次运行时设置 PIN。完整操作员流程(包括 PIN 找回)见 退出自助终端锁定并找回 PIN

服务台应用锁定 — 它是员工工具,保留正常的窗口控件。

Windows — Assigned Access / Shell Launcher

Section titled “Windows — Assigned Access / Shell Launcher”

Windows 提供两种自助终端机制。桌面自助终端是经典的 Win32 桌面应用,因此 Shell Launcher 是合适的选择 — Assigned Access(单应用自助终端)只接受 UWP/MSIX 应用或 Microsoft Edge。

Shell Launcher v2 为指定账户用 Jonot 自助终端可执行文件替换默认 Windows shell(explorer.exe)。 没有 Explorer shell 就没有桌面、开始菜单或任务栏;如果应用退出,Shell Launcher 会重启它。需要 Windows 10/11 Enterprise、Education 或 IoT Enterprise

  1. 启用 Shell Launcher 可选功能 (Enable-WindowsOptionalFeature -Online -FeatureName Client-EmbeddedShellLauncher), 或从您的 MDM 推送。
  2. 为自助终端创建一个专用的**标准(非管理员)**本地账户。
  3. 配置 Shell Launcher,将该账户的自定义 shell 设为 Jonot 自助终端启动器, 并带退出后重启操作 — 通过 MDM 的 Shell Launcher CSP,或本地使用 Shell Launcher 指南 中记录的 WMI 桥接 PowerShell 示例。
  4. 将自助终端账户设为自动登录,并禁用锁屏、睡眠和快速用户切换。

如果没有 Enterprise 许可、需要快速受监督的设置, Assigned Access”自助终端浏览器” 可以直接指向 https://kiosk.jonot.io — 但它在 Edge 中运行 SPA,没有原生 桥接(没有本地打印,没有离线主机故障切换),所以它是后备方案,不是原生 应用的替代品。

macOS — 操作系统级防逃逸操作手册

Section titled “macOS — 操作系统级防逃逸操作手册”

应用在应用侧隐藏菜单栏和程序坞并阻止 ⌘+Q。操作系统级配置文件覆盖应用无法 关闭的路径:强制退出、调度中心、Spaces 切换、热角、Spotlight 和应用切换。

使用带自动登录的专用受管或受限账户。 从 MDM(Jamf ProKandjiMosyle 或 Intune)部署:

  1. 专用标准账户 + 自动登录。 创建一个仅用于自助终端的非管理员本地账户。 为该账户启用自动登录,并用能源配置文件禁用系统睡眠。Managed Login Items 负载确保自助终端应用会在会话开始时启动。

  2. 禁用强制退出(⌘+⌥+Esc)。 强制退出是应用无法阻止的主要逃逸路径。 用 com.apple.loginwindow 的自定义托管首选项负载禁用它:

    DisableForceQuitCombinedKey = true
  3. 禁用调度中心和 Spaces 切换。 使用 com.apple.symbolichotkeys 禁用 调度中心快捷键(键 32)和 Spaces 切换快捷键(键 79–81、118–123)。

  4. 禁用热角。 推送 com.apple.dock 首选项负载,将全部四个 wvous-*-corner 键设为 0(禁用)。

  5. 禁用 Spotlight。 通过 com.apple.symbolichotkeys 禁用 Spotlight 键盘 快捷键(Spotlight 搜索为键 64)。注意:标准 Restrictions 负载的 Spotlight 键只抑制互联网结果,不抑制 Spotlight 本身 — 请改用 symbolichotkeys 方式。

  6. 禁用应用切换(⌘+Tab)。 通过 com.apple.symbolichotkeys 禁用应用程序 切换器快捷键(键 27)。

在 Linux 上,最干净的锁定是专用的 GNOME Kiosk 会话,将 Jonot 自助终端 应用作为会话的唯一窗口运行 — 没有面板、没有活动概览、没有应用切换器。

  1. 安装 gnome-kiosk 软件包 (在较新的 Fedora 和 Debian/Ubuntu 发行版上可用)。它提供一个最小 Wayland 合成器,运行一个全屏应用。
  2. 创建一个自定义会话,以 Jonot 自助终端可执行文件作为其 shell 命令启动, 使自助终端应用就是该会话。
  3. 为专用标准用户配置 GDM 自动登录,登录到该自助终端会话。
  4. 加固周围系统:禁用 VT 切换和 Ctrl+Alt+Backspace,在 logind 中阻止 TTY 访问,并禁用自动屏幕熄灭和电源管理。

由于 GNOME Kiosk 合成器从不暴露切换器或概览,会话内没有通往其他应用的路径 — 操作系统强制执行应用进程内快捷键抑制只能尝试做到的事。

防护对象
应用内锁定菜单栏/程序坞(macOS)、⌘+Q、意外退出、进程内可捕获的快捷键
操作系统级自助终端配置文件强制退出、调度中心、Spaces、热角、Spotlight、操作系统级应用切换
物理外壳硬件访问 — USB 端口、电源按钮、键盘

无人值守的公共部署始终同时运行应用内锁定操作系统级配置文件。物理外壳 是完全防篡改部署的第三层。