如何对Linux的grub进行加密

一、加密


    设置grub密码:

    众所周知,通过编辑GRUB启动参数可以轻松的进入单用户模式从而修改root密码,这对于一台多用户的计算机或服务器来说,无疑增加了安全隐患。大家一定很像为自己的GRUB加一把锁吧,大家可以通过GRUB的password参数对GRUB设置密码。

    GRUB的密码设置可分为全局密码和菜单密码,为了防止他人通过GRUB修改root密码大家需要设置一个全局密码。在splashimage这个参数的下一行可以加上password=密码,保存后重新启动计算机,再次登录到GRUB菜单页面的时候就会发现,这时已经不能直接使用e命令编辑启动标签了,须先使用p命令,输入正确的密码后才能够对启动标签进行编辑。

    虽然我们设置了全局密码,但是如果他人得到了全局密码后仍然可以修改GRUB启动标签从而修改root密码;这样我们就可以设置菜单密码,设置菜单密码也非常简单,我们只需要在title的下一行加上password=密码,然后保存退出。这样即使有了全局密码也必需输入菜单密码才能够引导系统。此外,如果直接对GRUB进行明文加密也是非常不安全的,所以就要使用MD5对其进行加密。在终端中输入grub-md5-crypt回车,这时系统会要求输入两次相同的密码,之后系统便会输出MD5码。大家只需要将生成的MD5密文复制下来,然后在按照password--md5 MD5密文这个格式设置全局或者菜单密码,保存退出,重启计算机即可。

    1、计算grub的MD5加密密码:

#grub-md5-crypt

Password: 
Retype password:
    输入两遍密码进行确认以后,就会计算出你所输入密码的MD5加密值,如:$1$3VbjX/$PTzUC7OpcO3QunjIsB6LZ
    复制该密码进行MD5加密后的值。

    2、设置grub密码:

#vi /boot/grub/grub.conf

比如我原来的/boot/grub/grub.conf文件的内容是下面的。

            default=1

            timeout=10

           splashimage=(hd0,7)/boot/grub/splash.xpm.gz

            title Fedora Core (2.4.22-1.2061.nptl)

            root (hd0,7)

            kernel /boot/vmlinuz-2.4.22-1.2061.nptlro root=LABEL=/

            initrd /boot/initrd-2.4.22-1.2061.nptl.img

            title WindowsXP

            rootnoverify (hd0,0)

            chainloader +1

所以我要在/boot/grub/grub.conf中加入 password ——md5 $1$3VbjX/$PTzUC7OpcO3QunjIsB6LZ 这行,以及lock,应该加到哪呢,请看下面的更改实例;

            timeout=10

           splashimage=(hd0,7)/boot/grub/splash.xpm.gz

            password ——md5 $1$3VbjX/$PTzUC7OpcO3QunjIsB6LZ

            title Fedora Core (2.4.22-1.2061.nptl)

            lock

            root (hd0,7)

            kernel /boot/vmlinuz-2.4.22-1.2061.nptlro root=LABEL=/

            initrd /boot/initrd-2.4.22-1.2061.nptl.img

            title WindowsXP

            rootnoverify (hd0,0)

            chainloader +1

lock的意思就是把Redhat Fedora锁住了。如果启动时会提示错误。这时就应该按P键,然后输入密码就行了。

 

使用password,lock命令实现几种加密方法如下:

 

1)单纯对GRUB界面加密,而不对被引导的系统加密在timeout一行下面加一行: password ——md5 PASSWORD

 

2)对GRUB界面加密,同时对被引导的系统加密在timeout一行下面加一行: password ——md5 PASSWORD 在title一行下面加一行: lock

 

3)同时存在多个被引导系统,针对特定的系统实例分别加密(未对GRUB操作界面加密) 在title一行下面加一行: lock 在lock一行下面紧贴着再加一行: password ——md5 PASSWORD 注:lock不能单独使用.

二、解密

    当Linux系统管理员密码忘记,又不能编辑grub菜单进行单用户模式重置密码,怎么办呢,只有对grub进行解密了。

    1、用Linux第一张安装光盘引导系统,进入修复模式。
    2、光盘引导系统,选择区域和语言,不用启动网卡。
    3、出现Rescue菜单,选择Continue,再弹出一个Rescue菜单,会显示“chroot /mnt/sysimage”,OK。
    4、sh-3.2#chroot /mnt/sysimage,若不执行此步,进系统不能进行改写。
    5、执行passwd对用户密码进行重置,完后重启正常进入系统。
    6、编辑/boot/grub/grub.conf,去掉“password --md5 $1$3VbjX/$PTzUC7OpcO3QunjIsB6LZ”这一行即可。

你可能感兴趣的:(如何对Linux的grub进行加密)