保护LILO有诀窍
轉自網管員世界
為了便于維護、修復系統,幾乎所有的類Unix系統都提供了在啟動時進入單用戶模式的方法,而且有些不需要口令就可以直接得到root shell。Linux就是其中之一。對于RedHat Linux,只要在LILO的提示符后面輸入linux single;對于Turbo Linux,在LILO提示符后面輸入linux init 1就可以得到root shell。具體方式請參考您所使用的Linux版本的說明。
一般的,作為服務器,系統應該只存在Linux這個單一的操作系統,也就是說,LILO只要啟動Linux,這樣可以卸掉LILO:
# /sbin/LILO -u
但要確保Linux所在的分區一定是服務器的當前活動分區,如果是用其他的啟動工具如Systerm Command、NT OSLoader來引導Linux的,多半還要重新設置啟動工具。
如果不卸載LILO,可以為Linux的單用戶模式加上口令,只要在/etc/LILO.conf文件中加上下面兩行:
restricted
password=你設置的口令
如果在/etc/LILO.conf文件中加上:
prompt
這樣,LILO將一直等待用戶選擇操作系統,但是,如果有timeout這個選項,則時間到達后,如果用戶沒有作出選擇,LILO就會自行引導默認的系統。
這里列舉一個LILO.conf的例子:
boot = /dev/sda
map = /boot/map
install = /boot/boot.b
prompt
timeout = 50
message=/boot/message
linear
default = linux
image = /boot/vmlinuz-2.4.2-2
label = linux
initrd=/boot/initrd-2.4.2-2.img
read-only
root=/dev/sda5
restricted
password = !#$%^12345
上面的LILO.conf有以下的功能:
以/boot/vmlinuz-2.4.2內核來啟動系統,它存放在SCSI1硬盤的MBR之后的第一個分區上,如果用參數“linux single”來啟動Linux,timeout選項將給出5秒鐘的時間用于接受口令。
其中,message=/boot/message這行是讓LILO以圖形模式顯示的,如果去掉這一行,那么,LILO將以傳統的文本模式顯示。Linear的作用是使LILO生成線性地址,而不使用通常的Sector/Head/Cylinder機制。Linux地址機制可以不依賴磁盤的物理結構。
因為LILO的口令是以明文形式存在的,所以一定要確保LILO.conf變成僅root可以讀寫,其設置方法是執行:
# chmod 600 /etc/LILO.conf
# chattr + i /etc/LILO.conf
然后必須進行下面的執行才能使LILO生效:
# /sbin/LILO
將會顯示“Added linux *”表示LILO已經生效。
雖然重新啟動并不是必須的,但是,用戶最好還是通過重新啟動一次來檢查一下對LILO所做的修改是否真的已經生效。
為了防止LILO.conf無意或被其他原因被修改,應該將/etc/LILO.conf設置為不可更改,其設置方法是執行:
# chattr +i /etc/LILO.conf
日后若要修改LILO.conf文件,必須先去掉該文件的不可更改的屬性:
# chattr -i /etc/LILO.conf
注意,只有root用戶可以對文件設置不可更改的屬性。
現在版本的Linux的LILO是圖形界面的,要進入單用戶模式,只需在LILO界面出現之后,按ctrl+x就會進入文本模式,然后鍵入“linux single”就可以了。
給GRUB加一把鎖
Linux世界在很長一段時間里一直使用LILO,而且它可以讓上百萬的 Linux 用戶引導系統。LILO確實很有效。但是,LILO的維修率很高,而且很不靈活。從Red Hat Linux 7.2起,GRUB(GRand Unified Bootloader)取代LILO成為了默認的啟動裝載程序,可見GRUB大有過人之處。不過,相對于LILO來說,大家對GRUB還是要陌生一些。
在 Linux 中,當談到 “root”文件系統時,通常是指主 Linux 分區。但是,GRUB 有它自己的 root 分區定義。GRUB 的 root 分區是保存 Linux 內核的分區。這可能是您的正式 root 文件系統,也可能不是。例如,在 Gentoo Linux 中,有一個單獨的小分區專用于保存 Linux 內核與引導信息。大多數情況下,我們不安裝這個分區,這樣在系統意外崩潰或重新引導時,就不會把它弄亂。
在LILO.conf中,最多有16個操作系統選項,它比Grub有更大的靈活性。LILO.conf配置文件主要分為兩部分:一部分是全局配置;另一部分是引導配置,“#”表示注釋。
與LILO相比,Grub有更強的交互性。LILO要求用戶十分明白每個參數才能很好地掌握;而Grub則更加看重用戶的交互性,兩者在bootloader中不分伯仲。
和LILO的口令的作用不同,GRUB的口令只用于防止用戶修改菜單直接進入Single user mode。
在安裝Linux的時候,在選擇GRUB或LILO作為引導程序,選擇GRUB后設置GRUB的口令,見圖1:
如果在安裝GRUB的時候沒有設置口令,可以參照以下方法給GRUB加口令:
啟動系統后出現GRUB的畫面,按c進入命令方式,輸入命令md5crypt
grub> md5crypt
Password: ********
Encrypted: $1$5R.2$OanRg6GT.Tj3uJZzb.hye0
然后將加密的密碼拷貝到/boot/grub/grub.conf中password的一行。如筆者的grub.conf文件如下:
timeout=25
splashimage=(hd0,5)/grub/splash.xpm.gz
password --md5 $1$5R.2$OanRg6GT.Tj3uJZzb.hye0
#boot=/dev/hda
default=1
title Red Hat Linux (2.4.20-8)
root (hd0,5)
kernel /vmlinuz-2.4.20-8 ro root=/dev/hda7
initrd /initrd-2.4.20-8.img
title Windows XP
rootnoverify (hd0,0)
chainloader +1
我們可以看到,GRUB的口令是經過MD5加密的,這一點和LILO所使用的密碼是明文不同。
防止“Ctrl+Alt+Del”三指敬禮
為防止用戶執行三指敬禮“Ctrl+Alt+Del”來重新啟動Linux服務器,這也是一種DoS攻擊。以root身份修改/etc/inittab文件,在“ca::ctraaltdel:/sbin/shutdown -t3 -r now”一行前面加上“#”注釋掉,然后重新設置/etc/rc.d/init.d/目錄下所有文件的許可權限:
# chmod -R 700 /etc.rc.d/init.d/*
這樣就使只有root超級用戶可以讀寫并執行上述所有的腳本文件。最后執行:
# /sbin/init q
使上面的設置生效。
來自 “ ITPUB博客 ” ,鏈接:http://blog.itpub.net/166189/viewspace-113545/,如需轉載,請注明出處,否則將追究法律責任。
轉載于:http://blog.itpub.net/166189/viewspace-113545/
總結