密碼保護 BIOS(或 BIOS 的等同物)與開機管理程式可以防止可實體存取系統的未經授 權使用者使用移除式的媒體進行開機或透過單一使用者模式來獲取 root 權限。 不過我 們應該採取來保護免受如此攻擊的保全方法取決於工作站中所存放的重要資料,以及機 器的位置。
舉例來說,假如一部機器被使用在商展中,而且沒有含有重要的資訊,預防如此的攻擊 便不是那麼必要。 然而假如一個員工的筆記型電腦其中含有用於公司網路之私有且未加 密的 SSH 金鑰,被遺留在同一個商展中無人看管,這將會導致整個公司的重大安全性 漏洞。
在另一方面,假如工作站是位於只有經授權且信任的人可以存取的地方,也許根本不需要 保全 BIOS 與開機管理程式。
以下為使用密碼保護電腦中 BIOS 的兩個主要的原因[1]:
防止更改 BIOS 的設定 — 假如一個入侵者可以存取 BIOS, 他們可以設定電腦從磁碟片或光碟片開機。 這將使得他們可以進入救援模式或單一使用者 模式,進而使得他們可以在系統中植入不法的程式,或者複製重要的資料。
防止系統開機 — 有些 BIOS 允許開機過程的密碼保護, 在啟用這個功能後,在 BIOS 啟動開機管理程式前,攻擊者被強迫輸入一個密碼。
因為每一個電腦製造商設定一個 BIOS 密碼的方法都不同,請查詢電腦的手冊以找出特定 的指示。
假如您忘記 BIOS 密碼,您可以重設主機板上的 jumper 或者是取出 CMOS 電池。 由於 這個因素,盡可能地請將電腦機殼上鎖,然而在您進行這個步驟前,請查看電腦或主機板 的手冊。
以下是使用密碼保護 Linux 開機管理程式的主要原因:
防止進入單一使用者模式 — 假如攻擊者可以開機進入單一 使用者模式,他將成為 root 使用者。
防止進入 GRUB 主控台 — 假如機器使用 GRUB 當作它的開 機管理程式,攻擊者可以使用 GRUB 編輯器介面來更改它的設定,或者是使用 cat 指令來收集資訊。
防止進入非安全的作業系統 — 假如它是一部多重開機的 系統,攻擊者可以在開機時選取一種作業系統,例如 DOS,此系統將會忽視存取控制與 檔案的權限設定。
適用於 x86 平台的 Red Hat Enterprise Linux 中含有兩種開機管理程式 - GRUB 與 LILO。 如需關於這兩 種開機管理程式的詳細資訊,請參考 Red Hat Enterprise Linux 參考手冊 一書中的 『開機管理程式』章節。
可以設定 GRUB 以解決 第 4.2.2 節 中所列出的前兩個 問題,只要增加一個 password 的指令到它的設定檔案中,如要如此做請先決定好一個密碼, 然後開啟一個 shell 提示符號,再以 root 身份登入,然後輸入:
/sbin/grub-md5-crypt |
在提示時,輸入 GRUB 的密碼再按下
下一步,請編輯 GRUB 的設定檔案 /boot/grub/grub.conf, 開啟這個檔案後,請在文件中主要部份的 timeout 那一行加入 下列的資訊:
password --md5 <password-hash> |
請以 /sbin/grub-md5-crypt 傳回的數值取代 <password-hash>[2]。
下次系統開機時,如果沒有按下
很不幸的,這個解決方案無法避免攻擊者開機進入多重開機環境中非安全的作業系統。 為了要防止這個情況發生,必須要編輯 /boot/grub/grub.conf 檔案的另一個部份。
請找出非安全作業系統的 title 那一行,請在下一行 增加含有 lock 的一行。
至於一部 DOS 系統,這個部份應該如下所示:
title DOS lock |
![]() | 警告 |
---|---|
/boot/grub/grub.conf 檔案中的主要部份必須含有 password 的一行才能使這個方法運作順利,否則 攻擊者可以進入 GRUB 編輯器然後移除 lock 那一行。 |
如要為一個特定核心或作業系統建立一個不同的密碼,請增加 lock 一行到設定檔案的該節,再加上含有 password 的一行
以一個獨特密碼保護的每一節都應該如下列例子所示的這幾行開頭:
title DOS lock password --md5 <password-hash> |
比起 GRUB,LILO 是一個相當簡單的開機管理程式,它不提供一個指令的介面,所以攻擊 者無法在核心載入前使用互動式的存取系統。 然而攻擊者仍然可以開機進入單一使用者模 式或者是啟動非安全的作業系統。
藉由增加一個 password 的指令到設定檔案中的全域設定部份,來完成密碼保護 LILO。 請開啟一個 shell 提示符號,並以 root 身份登入,再編輯 /etc/lilo.conf 檔案。 在第一個 image 節之前,請增加類似如下的 一個 password 指令:
password=<password> |
在以上的指令中,請以 LILO 的密碼取代 <password>。
![]() | 重要 |
---|---|
當您編輯 /etc/lilo.conf 後,必須執行 /sbin/lilo -v -v 指令以使變更生效。 假如已經設定好一個密碼,而且除了 root 之外的任 何人都可以讀取該檔案,LILO 便已經安裝妥善,不過必須提醒使用者該設定檔案的權限設 定不正確。 |
假如不想使用一個全域性的密碼,您可以在對應到任何的核心或作業系統的那一節增加 password 指令。 請在 image 的下一行增加 password 指令,完成後,密碼保護那一節的開頭將如下所示:
image=/boot/vmlinuz-<version> password=<password> |
在上一個例子中,請以核心的版本取代 <version>, 以該核心的 LILO 密碼取代 <password>。
也可以在不需密碼檢驗,卻還可防止使用者在不需密碼的情況下指定引數的情況下, 允許啟動一個核心或作業系統。 請在該節的 password 那一行之下增加 restricted 的指令,那一節的開頭將會類似以下 的例子所示:
image=/boot/vmlinuz-<version> password=<password> restricted |
請以核心的版本取代 <version>,且以該核心的 LILO 密碼取代 <password>。
假如使用 restricted 指令,在那一節中必須要有 password 的一行。
![]() | 警告 | |
---|---|---|
/etc/lilo.conf 檔案是所有人都可以讀取的,假如您要以密碼 保護 LILO,必須只允許 root 使用者讀取與編輯這個檔案,因為所有的密碼都是純文字。 如要更改權限設定,請以 root 身份輸入下列指令:
|
[1] | 由於每一個製造商 的系統 BIOS 都不同,有些也許不支援這些類型的密碼保護,而其他的也許可以支援一種 類型,而不支援另一種類型。 |
[2] | GRUB 也接受未加密的密碼,不過建議您使用一個 md5 雜湊以增加安全性。 |