Linux 安全注意键 (SAK) 处理¶
- 日期:
2001 年 3 月 18 日
- 作者:
Andrew Morton
操作系统的安全注意键是一种安全工具,用于防止木马程序捕获密码。它是一种不可战胜的方式,可以杀死所有可能伪装成登录应用程序的程序。需要教会用户在登录系统之前输入此按键序列。
对于 PC 键盘,Linux 提供了两种相似但不同的 SAK 方式。一种是 ALT-SYSRQ-K 序列。您不应该使用此序列。它仅在内核编译时支持 sysrq 时才可用。
生成 SAK 的正确方法是使用 loadkeys
定义按键序列。无论内核中是否编译了 sysrq 支持,此方法都有效。
当键盘处于原始模式时,SAK 可以正常工作。这意味着一旦定义了 SAK,它将杀死正在运行的 X 服务器。如果系统处于运行级别 5,则 X 服务器将重新启动。这正是您想要发生的情况。
您应该使用什么按键序列?好吧,CTRL-ALT-DEL 用于重启计算机。CTRL-ALT-BACKSPACE 对于 X 服务器来说是神奇的。我们将选择 CTRL-ALT-PAUSE。
在您的 rc.sysinit(或 rc.local)文件中,添加命令
echo "control alt keycode 101 = SAK" | /bin/loadkeys
就是这样!只有超级用户才能重新编程 SAK 键。
注意
据说 Linux SAK 不是 C2 级安全系统要求的“真正的 SAK”。作者不知道为什么。
在 PC 键盘上,SAK 会杀死所有打开了 /dev/console 的应用程序。
不幸的是,这包括许多您实际上不想被杀死的程序。这是因为这些应用程序错误地保持打开了 /dev/console。请务必向您的 Linux 发行版抱怨这一点!
您可以使用以下命令识别将被 SAK 杀死的进程
# ls -l /proc/[0-9]*/fd/* | grep console l-wx------ 1 root root 64 Mar 18 00:46 /proc/579/fd/0 -> /dev/console
然后
# ps aux|grep 579 root 579 0.0 0.1 1088 436 ? S 00:43 0:00 gpm -t ps/2
因此,
gpm
将被 SAK 杀死。这是 gpm 中的一个错误。它应该关闭标准输入。您可以通过查找启动 gpm 的 init 脚本并进行如下更改来解决此问题旧
daemon gpm
新
daemon gpm < /dev/null
Vixie cron 似乎也有这个问题,需要相同的处理。
此外,一个著名的 Linux 发行版在其 rc.sysinit 和 rc 脚本中包含以下三行
exec 3<&0 exec 4>&1 exec 5>&2
这些命令会导致 init 脚本启动的所有守护程序将文件描述符 3、4 和 5 连接到 /dev/console。因此,SAK 会杀死它们。解决方法是简单地删除这些行,但这可能会导致系统管理应用程序出现故障 - 请充分测试所有内容。