转自网管员世界
为了便于维护、修复系统,几乎所有的类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/