喻子豪
摘 要:從功能方面和性能方面來分析 Linux 安全增強身份認證系統的需求,并針對系統的安全性,可靠性,不增加操作復雜度等特點,來設計 Linux 安全增強身份認證系統的總體結構。
隨著Linux系統的應用場景越來越多,也對Linux系統的安全方面的需求也有所增加,不難發現Linux系統的安全問題已然成為眾多關注方向之一了。本論文只選取某安全保密機構對系統安全需求中的一項,即身份認證的安全增強。針對身份認證的安全增強需求從功能需求和性能要求這兩個方面進行說明。
通過用戶對普通Linux操作系統的使用的調研,包括多種不同發行版本Linux操作系統的使用,對于身份認證方向的安全增強功能,總結的需求如下:(1)把用戶相關的處理都在BIOS階段進行處理,操作系統只是接受BIOS傳遞過來的用戶信息進行系統中的同步,保證用戶信息的單方向傳遞。(2)從用戶角度來看,登陸系統時在BIOS階段輸入用戶名及密碼,直接登陸系統,這一過程為一個整體操作,即系統登陸身份認證過程。用戶從此過程中看不到GRUB2的存在。(3)確保BIOS傳遞的用戶信息與系統中的用戶信息一致,且做好用戶操作的容錯處理,要保證BIOS創建的用戶不能與系統中的賬戶沖突。(4)做好用戶信息傳遞失敗的容錯處理,如果信息傳遞失敗則不能再有后續的操作運行,功能必須中斷。(5)在登陸認證并進入系統的整個過程中,不能有與人交互的操作。
把系統登陸的時機從操作系統登陸服務啟動的時候提前到BISO加電后,那么從輸入用戶名及密碼后,到進入系統桌面這一過程,從時間上看肯定本方案的時間要長些,但只要相對時長不超過60秒,還是可以接受的。
本方案在設計最初,根據總結得出的需求分析,在系統設計上要遵循以下幾點原則:不增加操作復雜度、功能必須可擴展、不引入其他非安全問題和功能必須穩定。上述設計原則具體描述如下:不增加操作復雜度;功能必須可擴展;不引入其他非安全問題;功能必須穩定。
本系統從總體設計角度,分別從邏輯結構和數據流程兩個方面對系統總體結構進行設計與闡述。
本系統的總體結構從邏輯上可分為以下三個方面:用戶信息創建及保存;用戶信息傳遞;用戶信息處理與身份認證。
(1)用戶信息創建、保存:這部分工作主要在機器上電后BISO階段進行的處理。本方案的設計不僅把用戶的登陸的功能從系統登陸服務啟動后開始提前到BISO階段,而且把用戶的管理,從系統中進行管理,到當前提前到BISO階段。這樣做的目的是保證用戶信息來源的唯一性,而且保證用戶信息流的單項傳遞。如果進入系統后再進行用戶管理,不僅系統的特定應用可以進行用戶管理,一些應用程序也可以進行創建用戶,這樣一來用戶的來源就不唯一,增加不穩定因素。這里的用戶信息保存,包括兩個方面,一個是創建新用戶的保存,另一個是在BIOS登陸時的用戶信息的保存。
(2)用戶信息傳遞:本系統的用戶信息傳遞,不是通常意義的把數據從一個功能模塊傳遞到另外一個功能模塊,也就是后一個功能模塊從前一個功能模塊處來獲取數據。而是把數據保存到內存中,這部分內存在整個從硬件加電到認證結束進入系統桌面這一個過程中不會被覆蓋,各部分功能是有運行先后的,他們之間的交替是通過執行權限的交替來保證連續運行的,而沒有相互調用的關系。在整個過程中各部分在需要用戶數據時,通過對內存的操作來獲取,通過這種方式變相實現了用戶信息的傳遞。用戶信息傳遞主要有GRUB2、應用層用戶信息處理服務傳遞。
(3)用戶信息處理及身份認證:當文件系統啟動后其系統所有程序的父進程systemd進行把系統服務啟動后,用戶信息處理服務需要根據BIOS傳遞過來的用戶信息進行處理,包括傳遞過來的用戶信息與系統的用戶信息同步;如BIOS創建的新用戶與系統中用戶沖突的解決和通過傳遞過來的用戶設置此次登陸用戶等。在身份認證階段,每次認證時都需要重新從BIOS傳遞過來的用戶信息解析出的用戶名及密碼來進行對比校驗,這樣可以保證信息源的一致性。如此處理身份認證過程,不僅是上述原因,也統一了鎖屏后解鎖和注銷后登陸的身份認證方式。
本系統的數據流程主要指的是用戶信息的傳遞的過程,這部分用到的主要技術就是內存中的E820表。BIOS階段創建用戶或用已有用戶登陸,把用戶信息保存到內存中的E820表中。BIOS執行結束并把執行權限移交給GRUB2時,GRUB2在加載內核及Initrd之前獲取用戶信息,如果用戶信息獲取失敗則停止后續的操作返回BIOS階段,如果能夠獲取用戶信息則繼續加載內核及Initrd,并把執行權限交給內核及Initrd繼續執行。當文件系統初始化完成Initrd中的腳本切換到文件系統中啟動1號進程systemd,并把執行權限移交給systemd進程,并啟動用戶信息處理服務。用戶信息處理服務獲取E820表中的信息,與系統中用戶進行同步并設置登陸用戶。如果用戶信息處理服務無法獲取到E820表中信息則停止后續身份認證及系統登陸的操作,并返回到BIOS階段。
Linux安全增強身份認證系統是由以下五部分組成:初始化模塊BIOS、引導模塊GRUB2、Linux內核、應用層用戶信息處理服務及認證模塊PAM,其中除了應用層用戶信息處理服務,其他幾部分均是在當前各自功能基礎上進行深度定制增加功能,來滿足身份認證的安全增強的目的,也就是本論文選擇實現安全增強的方向即通過把功能相關的幾個部分聯通起來,起到安全增強的作用。
初始化模塊BIOS上電自檢主要由硬件部分完成,此時操作系統并沒有啟動。當電腦接通電源即開始執行BIOS(基本輸入輸出系統)的上電自檢(POST)過程。如果自檢過程失敗,則引導過程也將就此中斷。BIOS上電自檢確認硬件的基本功能正常,包括對內存的初始化。此時用戶在BIOS輸入用戶名及密碼或創建用戶后輸入用戶名及密碼后,BIOS進行第一次身份驗證,驗證未通過則返回BIOS等待重新輸入,如驗證通過則BIOS請求INT15H中斷獲取物理地址信息,把用戶信息保存在E820表內存地址的一個段中。然后再產生一個BIOS中斷INT13H,該中斷指向某個可引導設備的引導扇區。它所找到的包含有效的引導記錄的第一個引導扇區將被裝載到內存中,并且控制權也將從引導扇區轉移到此段代碼上,至此BIOS自檢工作結束,程序退出交給下一部分繼續執行。引導扇區是引導加載程序真正的第一階段,本方案所使用的主引導加載程序是GRUB2
在對Linux安全增強身份認證系統的需求分析進行整理,對要實現的功能有了明確的目標,對實現完成后的功能展示有了實質的概念和了解。在進行總體結構的設計時一直遵循那幾點設計原則。可以看出本方案對身份認真的安全增強的功能的設計是可行的,完全滿足需求點,能夠實現本方案要實現的安全增強的目標。
參考文獻:
[1] 李洋. Linux 安全技術內幕[M]. 清華大學出版社,2010 .
[2] 劉海燕,王子強,邵立嵩. Linux 系統的安全檢測與增強技術分析[J],《計算機工程與設計》,2005,26(1):100-102 .
[3] 龍亞星,王一川. Linux 操作系統多安全策略研究與設計[C],陜西省通訊學會,陜西省通信學會 2011 年學術年會論文集,西安,2011 .
[4] 高朝勤. 信息系統等級保護中的多級安全技術研究[D],北京:北京工業大學,2012 .