Linux 安全注意力鍵 (SAK) 處理¶
- 日期:
2001 年 3 月 18 日
- 作者:
Andrew Morton
作業系統的安全注意力鍵 (Secure Attention Key, SAK) 是一種安全工具,用於防禦特洛伊木馬密碼捕獲程式。它是一種不可戰勝的方式,可以殺死所有可能偽裝成登入應用程式的程式。需要教導使用者在登入系統之前輸入此組合鍵序列。
在 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 的 initscript 並將其更改為如下所示來解決此問題:舊版
daemon gpm
新版
daemon gpm < /dev/null
Vixie cron 似乎也有這個問題,需要同樣的處理。
此外,一個著名的 Linux 發行版在其 rc.sysinit 和 rc 指令碼中包含以下三行:
exec 3<&0 exec 4>&1 exec 5>&2
這些命令導致透過 initscripts 啟動的**所有**守護程序的檔案描述符 3、4 和 5 都附加到 /dev/console。因此 SAK 會殺死它們全部。一個解決方法是簡單地刪除這些行,但這可能會導致系統管理應用程式出現故障——請務必充分測試。