摘要:在 Linux系統(tǒng)啟動階段,可能會出現(xiàn)安全問題如root口令的木馬攻擊、root口令丟失、篡改root口令及其它安全問題。從root用戶登錄,到系統(tǒng)的物理安全,論文逆向追索這些問題產(chǎn)生的原因,并提出了相對應(yīng)的防范措施及解決方案,保證了Linux系統(tǒng)啟動階段的安全。
關(guān)鍵詞:Linux;GRUB;安全;引導(dǎo);加密
中圖分類號:TP311文獻(xiàn)標(biāo)識碼:A文章編號:1009-3044(2009)24-6648-02
Security Analyzing and Strategy of Linux Startup
CHEN San-qing1, HAO Wei2
(1.School of Computer, Panzhihua University, Panzhihua 617000, China;2.Power Equipment institute of Shanghai, Shanghai 200240 China)
Abstract: In the time of Linux startup, some secure problem may happen, such as Trojan attack on root password, missing of root password, modification of root password. From the root login to the Physical Security, this paper analyses the cause of the problem and give some corresponding preventive measures and solution, so ensure the security of Linux Startup.
Key words:Linux; GRUB; security; bootstrap; encryption
計算機(jī)安全是一個很大的課題,很多內(nèi)容都是超越某一操作系統(tǒng)的,在Linux會存在,在其他操作系統(tǒng)也會存在,如物理安全、用戶的系統(tǒng)安全、文件系統(tǒng)的安全、進(jìn)程安全、網(wǎng)絡(luò)安全等等。由于安全所涉及的范圍太廣,在這里僅通過對Linux啟動階段所涉及的安全問題做出分析并提出解決方法。
我們將從按下電源按鈕到用戶成功登錄過程稱為系統(tǒng)的一個完整的啟動過程,以帶有GRUB系統(tǒng)引導(dǎo)器的Red Hat Linux 9為例,在啟動過程中,分析可能存在的安全隱患并采取針對性的防范策略。
1 與root用戶登錄有關(guān)的安全問題
Linux系統(tǒng)下的超級用戶是root,root用戶對系統(tǒng)具有絕對的控制權(quán),能夠?qū)ο到y(tǒng)進(jìn)行一切操作,所以保證root用戶的口令安全是十分重要的,root口令安全幾乎可以等同系統(tǒng)的安全[1]。因此,root登錄系統(tǒng)的時候,就必須保證輸入口令安全,要特別防范非法手段獲取口令。為了防止root登錄時遭受特洛伊木馬攻擊,就必須關(guān)注/bin目錄的安全問題。
/bin目錄保存包含一般用戶使用的命令,是一些常用的二進(jìn)制的可執(zhí)行命令,如復(fù)制、移動和刪除文件,登錄、創(chuàng)建和打開文件、識別系統(tǒng)名稱,查看文本文件等[2]。出于安全考慮,該目錄只允許超級用戶進(jìn)行修改,但同時也應(yīng)該把該目錄設(shè)置在系統(tǒng)PATH環(huán)境變量的最前面,否則就有可能導(dǎo)致root口令被竊取。例如進(jìn)行如下設(shè)置:
把/bin目錄設(shè)置在PATH環(huán)境變量的后面,則系統(tǒng)有可能受到特洛伊木馬的攻擊,例如PATH變量的設(shè)置如下:
PATH=/usr/bin; /usr/local/bin;/home/Htom/bin;/bin
如果用戶Htom在他自己的目錄/home/ Htom//bin內(nèi)放置一個程序名為su的“特洛伊木馬”程序,那么如果系統(tǒng)管理員要使用su命令從普通用戶身份升級為超級用戶,將會首先使用/home/hacker/bin下的su命令,而不是/bin下的su命令。這樣用戶hacker就可以輕松地竊取到超級用戶的口令。因此對/bin目錄安全的設(shè)置方式是:
PATH=/bin;/usr/bin; /usr/local/bin;/home/hacker/bin;
這樣可以避免root登錄時特洛伊木馬盜取口令。
2 丟失root口令的問題
如果root口令不慎丟失,就不僅會造成root無法登陸的情況,也會失去了對系統(tǒng)的管理和控制,那么就會造成系統(tǒng)安全隱患。為了能夠重新登錄和掌控系統(tǒng),可以在GRUB引導(dǎo)系統(tǒng)時重新設(shè)置root用戶的口令[3],操作過程如下:
首先在GRUB的菜單操作界面中,按a鍵進(jìn)入GRUB的append模式,如圖1所示。
然后在光標(biāo)處添加一個空格然后輸入1(表示啟動Linux后進(jìn)入單用戶模式)并回車;
接著在#提示符下輸入passwd命令為root重新設(shè)置口令,設(shè)置完畢后輸入init 3或init 5命令切換為多用戶模式即可。
系統(tǒng)管理員可以使用這種方法可以重新設(shè)置root口令,當(dāng)然其他任何人也可以使用這種方法,即在GRUB啟動還未進(jìn)入系統(tǒng)登陸界面就直接篡改root口令,就可以root的身份登錄系統(tǒng),這樣就會給系統(tǒng)帶來災(zāi)難性的后果!這種方法是絕對不能被系統(tǒng)管理員以外的其他人使用的,因而,為了防止在引導(dǎo)菜單啟動時隨意修改root口令,就必須對引導(dǎo)菜單加密。
3 加密引導(dǎo)菜單
給引導(dǎo)菜單加密,GRUB有兩種加密方式:一種是Lock加鎖,另一種是利用非明文加密,也就是MD5 128位加密[4]。這兩種方法都可在啟動某個菜單項時被要求輸入口令,做法是在GRUB配置文件/boot/grub/grub.conf下添加一些關(guān)鍵字段。
3.1 Lock加鎖
Lock命令用于設(shè)定某啟動菜單項使用口令進(jìn)行鎖定,該命令沒有參數(shù),一般在grub.conf文件中緊接Title命令使用,鎖定該菜單項中Lock命令之后的所有命令,直到輸入正確的口令后,該菜單項才會正常啟動。使用Lock方式加密的具體做法是grub.conf文件中加入password和lock兩行,示例如下:
#vi /boot/grub/grub.conf /*利用Vi編輯啟動菜單配置文件grub.conf
password******/*設(shè)置啟動菜單密碼
Title Red Hat Linux(2.4.20-8)
lock /*設(shè)置鎖定
root(hd0,0)
Kernel /boot/vmlinuz-2.4.20-8ro root=LABEL=/hdc=ide-scsi
Initrd /boot/initrd-2.4.20-8.img
#
當(dāng)選擇啟動被鎖定的菜單項時,用戶被提示輸入口令,如口令驗證通過則啟動該菜單項的操作系統(tǒng),如口令驗證失敗屏幕返回啟動菜單。
Lock加鎖方式可以防止在引導(dǎo)菜單啟動時隨意修改root口令,但隨之又帶來一個安全問題:這種加鎖方法是一種明文的設(shè)置加密菜單方式。從系統(tǒng)安全的角度來看,這樣加密引導(dǎo)菜單是不安全的,因為任何人不管采用何種方式只要打開grub.conf文件,就會看到這個口令, 就會利用這一點入侵系統(tǒng)。為了防止出現(xiàn)這種情況,就必須對口令進(jìn)行加密,以免出現(xiàn)明文。
3.2 使用MD5加密口令
MD5 是一種采用單向加密的不可逆加密算法,MD5 算法的應(yīng)用主要是針對用戶的注冊錄,用戶在注冊時所提交的信息(密碼)是利用MD5 算法加密之后再保存到數(shù)據(jù)庫中,這樣可以防止用戶密碼的泄露,既使是黑客非法獲得加密密文也沒有辦法查看到用戶的密碼,有效地保護(hù)了系統(tǒng)的安全。在用戶進(jìn)行登錄時,為了身份驗證,必須對輸入的密碼重新進(jìn)行MD5 加密,然后再與數(shù)據(jù)庫中的信息進(jìn)行比對,相同便可進(jìn)入系統(tǒng)。
為了改變加鎖方法中出現(xiàn)明文的情況, GRUB提供了MD5加密口令功能,可以有效保護(hù)引導(dǎo)菜單口令,實現(xiàn)方法如下:
首先利用Grub自帶的grub-md5-crypt命令獲得加密口令
#grub-md5-crypt
Password: //輸入要加密的口令,此處的輸入沒有回顯
Retype password: //再次輸入口令
$1$iKMno/$5jfcf.nR6w0iKb4CHqBxZ///grub-md5-crypt命令返回加密的口令
#
然后保存加密口令到配置文件/boot/grub/grub.conf
# vi/boot/grub/grub.conf //編輯啟動菜單配置文件grub.conf
password--md5$1$iKMno/$5jfcf.nR6w0iKb4CHqBxZ/
//把已生成的加密口令寫在password命令后,“--md5”參數(shù)表示口令是MD5加密的
Title Red Hat Linux(2.4.20-8
lock
root(hd0,0)
Kernel /boot/vmlinuz-2.4.20-8ro root=LABEL=/
Initrd /boot/initrd-2.4.20-8.img
#//保存文件grub.conf并退出Vi編輯器
使用MD5加密口令使得對口令的破解變得非常困難,有效的保護(hù)了系統(tǒng)安全,但一旦出錯了話,就有可能造成系統(tǒng)無法啟動的情況,因此必須小心使用。
4 其它安全問題
當(dāng)然給引導(dǎo)菜單加密可以防止一些安全漏洞,但是如果不是通過硬盤使用GRUB或LILO引導(dǎo)系統(tǒng),而是從其它設(shè)備如光驅(qū)、軟驅(qū)或USB設(shè)備引導(dǎo)系統(tǒng),造成安全問題。所以就必須為計算機(jī)的BIOS設(shè)置口令,并禁止從軟驅(qū)和光驅(qū)等移動設(shè)備啟動系統(tǒng),防止繞過GRUB或LILO啟動系統(tǒng),然后訪問硬盤。給BIOS設(shè)置密碼就與操作系統(tǒng)無關(guān)了。如果再往上一級追溯,那就是物理安全了,如果硬盤被拿走了,即使BIOS設(shè)置了口令也沒有用。因此,從技術(shù)手段保證系統(tǒng)安全的前提,是首先要保證系統(tǒng)的物理安全,否則毫無意義。
5 結(jié)論
在Linux系統(tǒng)啟動階段,從root開始用戶登錄起,逆向分析系統(tǒng)可能存在的安全隱患及問題,論文實現(xiàn)了防范root口令特洛伊木馬攻擊、獲取root口令、加密引導(dǎo)菜單等功能。
參考文獻(xiàn):
[1] 中科紅旗軟件技術(shù)有限公司[M].紅旗Linux系統(tǒng)管理教程,2001.
[2] 梁如軍.Red Hat Linux 9系統(tǒng)管理應(yīng)用基礎(chǔ)教程[M].北京:機(jī)械工業(yè)出版社,2005.
[3] 王紅.操作系統(tǒng)原理及應(yīng)用[M].北京:中國水利水電出版社,2005.
[4] SmarTraining工作室.Red Hat Linux 9系統(tǒng)管理[M].北京:機(jī)械工業(yè)出版社,2004.