锁定桌面自助终端
桌面自助终端应用在其自身进程内处理能处理的部分。对于无人值守的公共自助 终端,在应用下方叠加一个操作系统级配置文件,让操作系统本身阻断应用 根本无法关闭的逃逸路径。
应用自行处理的部分
Section titled “应用自行处理的部分”作为自助终端客户端启动时,桌面应用:
- 以无边框全屏打开,覆盖整个显示区域,包括菜单栏条。
- 在 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。
- 启用 Shell Launcher 可选功能
(
Enable-WindowsOptionalFeature -Online -FeatureName Client-EmbeddedShellLauncher), 或从您的 MDM 推送。 - 为自助终端创建一个专用的**标准(非管理员)**本地账户。
- 配置 Shell Launcher,将该账户的自定义 shell 设为 Jonot 自助终端启动器, 并带退出后重启操作 — 通过 MDM 的 Shell Launcher CSP,或本地使用 Shell Launcher 指南 中记录的 WMI 桥接 PowerShell 示例。
- 将自助终端账户设为自动登录,并禁用锁屏、睡眠和快速用户切换。
如果没有 Enterprise 许可、需要快速受监督的设置,
Assigned Access”自助终端浏览器”
可以直接指向 https://kiosk.jonot.io — 但它在 Edge 中运行 SPA,没有原生
桥接(没有本地打印,没有离线主机故障切换),所以它是后备方案,不是原生
应用的替代品。
macOS — 操作系统级防逃逸操作手册
Section titled “macOS — 操作系统级防逃逸操作手册”应用在应用侧隐藏菜单栏和程序坞并阻止 ⌘+Q。操作系统级配置文件覆盖应用无法 关闭的路径:强制退出、调度中心、Spaces 切换、热角、Spotlight 和应用切换。
使用带自动登录的专用受管或受限账户。 从 MDM(Jamf Pro、 Kandji、Mosyle 或 Intune)部署:
-
专用标准账户 + 自动登录。 创建一个仅用于自助终端的非管理员本地账户。 为该账户启用自动登录,并用能源配置文件禁用系统睡眠。Managed Login Items 负载确保自助终端应用会在会话开始时启动。
-
禁用强制退出(⌘+⌥+Esc)。 强制退出是应用无法阻止的主要逃逸路径。 用
com.apple.loginwindow的自定义托管首选项负载禁用它:DisableForceQuitCombinedKey = true -
禁用调度中心和 Spaces 切换。 使用
com.apple.symbolichotkeys禁用 调度中心快捷键(键 32)和 Spaces 切换快捷键(键 79–81、118–123)。 -
禁用热角。 推送
com.apple.dock首选项负载,将全部四个wvous-*-corner键设为0(禁用)。 -
禁用 Spotlight。 通过
com.apple.symbolichotkeys禁用 Spotlight 键盘 快捷键(Spotlight 搜索为键 64)。注意:标准 Restrictions 负载的 Spotlight 键只抑制互联网结果,不抑制 Spotlight 本身 — 请改用 symbolichotkeys 方式。 -
禁用应用切换(⌘+Tab)。 通过
com.apple.symbolichotkeys禁用应用程序 切换器快捷键(键 27)。
Linux — GNOME kiosk 会话
Section titled “Linux — GNOME kiosk 会话”在 Linux 上,最干净的锁定是专用的 GNOME Kiosk 会话,将 Jonot 自助终端 应用作为会话的唯一窗口运行 — 没有面板、没有活动概览、没有应用切换器。
- 安装
gnome-kiosk软件包 (在较新的 Fedora 和 Debian/Ubuntu 发行版上可用)。它提供一个最小 Wayland 合成器,运行一个全屏应用。 - 创建一个自定义会话,以 Jonot 自助终端可执行文件作为其 shell 命令启动, 使自助终端应用就是该会话。
- 为专用标准用户配置 GDM 自动登录,登录到该自助终端会话。
- 加固周围系统:禁用 VT 切换和 Ctrl+Alt+Backspace,在
logind中阻止 TTY 访问,并禁用自动屏幕熄灭和电源管理。
由于 GNOME Kiosk 合成器从不暴露切换器或概览,会话内没有通往其他应用的路径 — 操作系统强制执行应用进程内快捷键抑制只能尝试做到的事。
| 层 | 防护对象 |
|---|---|
| 应用内锁定 | 菜单栏/程序坞(macOS)、⌘+Q、意外退出、进程内可捕获的快捷键 |
| 操作系统级自助终端配置文件 | 强制退出、调度中心、Spaces、热角、Spotlight、操作系统级应用切换 |
| 物理外壳 | 硬件访问 — USB 端口、电源按钮、键盘 |
无人值守的公共部署始终同时运行应用内锁定和操作系统级配置文件。物理外壳 是完全防篡改部署的第三层。