当 X 被杀死时阻止访问 TTY

假设我使用 xinitstartx 从虚拟控制台 /dev/tty1 手动启动 X 服务器,并在 /etc/inittab 中设置了行 id:3:initdefault:。 X Web 服务器开始运行并安装在另一个虚拟控制台上,通常是 /dev/tty7。 很长一段时间后,我决定用 xscreensaver --lock 锁定屏幕并离开我的电脑。 要解锁屏幕,必须识别我的客户是密码。 如果某人当前决定删除正在运行的 X 服务器,他或她将返回到 shell 去 /dev/tty1 并且基本上也可以访问我的计算机系统。 通常,可以使用 Ctrl+Alt+Backspace 终止 X Web 服务器,或者使用 ^C 切换到第一个控制台和 SIGTERM 正在运行的进程。

这是微不足道的 - 这意味着需要有一些琐碎的方法来避免它发生。 我正在使用 vlock 锁定我的虚拟控制台 /dev/tty1 以阻止此操作:

$ xinit && vlock || vlock

当 X 服务器当前返回时,优雅地 &&||,控制台肯定会被锁定。 这可能不是最佳选择。 我已经阅读了 这个 字符串以及 这个 wiki 文章,阐明了不同的补救措施。

还有哪些其他技术可以避免从 X 会话访问虚拟控制台的这种类型? 上述方法是否足够安全? 究竟如何在系统上停止这种情况? 我不太可能使用显示主管。

6
2022-06-07 14:41:33
资源 分享
答案: 2

我的 .profile 中有符合要求的入口:

# startx if on tty1 and tmux on tty2
if [[ -z "$DISPLAY" ]] && [[ $(tty) = /dev/tty1 ]]; then
    exec xinit -- :0 -novtswitch &>/dev/null &
    logout

  elif [[ $(tty) = /dev/tty2 ]]; then
    tmux -f $HOME/.tmux/conf new -s secured
fi

如果我选择登录 X,我会使用 TTY1。 logout 保证,在 TTY7 上开始 X 后,我将退出 TTY1。 我使用 自动锁定懒散 作为我的屏幕锁定工具。

如果 X 被淘汰,我会被转回一个空的 TTY7,然后需要切换到六个活跃的 getty 中重新登录。

1
2022-06-07 15:10:59
资源

您可以通过将 Option "DontVTSwitch" "yes" 包含到您的 Xorg 配置数据中来阻止 Xorg 的控制台按钮。

为了防止 Ctrl+Alt+Backspace 您必须将 DontZap 选项添加到您的 Xorg 配置文件中。 当然,这并不能完全防止对控制台的访问。 如果 X 以某种方式结束,例如驾驶者的问题,攻击者肯定仍然可以访问您的控制台。

您还可以使用 exec startx 而不是 startx,后者肯定会使用 startx 更改 bash,这意味着即使有人能够中止 X,他们也无法访问您的控制台。 您还可以使用 lightdmkdmgdmxdm 等显示管理器,因此您不需要现有的 shell 会话来启动 ax 会话。

7
2022-06-07 15:10:34
资源