探索黑客技术攻防,实战研究与安全创新

导航菜单

巧妙加密,让Linux启动更安全

现在越来越多的用户开始接触Linux系统,在早期的Linux中是使用Lilo来引导系统启动的,那是因为那时的硬盘容量还比较小的原因。但是现在硬盘的容量逐渐海量化,上百GB,甚至几百GB的硬盘已

经逐渐成为标准配置。为了使用大硬盘的需要,新版本的Linux大都使用Grub来接替Lilo。但是,在利用Grub来引导Linux启动的过程中,却存在很大的安全隐患。

VH{FC`((HZJS9(@UFXHYO%6.png

一、无需密码PP可拥有Root权限

当Linux启动时会出现Grub引导界面,如果本机同时还安装有Windows等操作系统时,在Grub启动菜单中就显示出所有的可选择操作系统列表。在Grub启动菜单中,如果在预定时间(默认10秒钟)

后没有动作,即可直接进入Linux启动画面,在其中可以看到首先加载的是Linux的默认服务项目,之后稍后片刻即可进入登录界面。Linux默认的管理员帐号是“root”,接着只需输入密码即可进入Linux环境,但是如果不知道管理员密码,是否也可以顺利进入Linux中呢?这里以危险漫步以Lunux 9.0为例进行说明。重新开机启动Linux,在出现Grub启动菜单时点击“E”键,会弹出新的选择菜单界面,在其中选择笫二项“kernel /vmlinuz-2.4.20-8 roroot=LABEL=/”,之后就可以进入自定义配置等级界面,在光标闪动处输入“1”,表示以单用户模式

来启动Linux,这是因为单用户模式不需要帐号和密码即可登录Linux,回车确认后返回自定义配置等级界面。之后点击“B”键,即可按照正常启动顺序进入Linux环境中,虽然没有输入任何帐号和密码,但是在Linux中执行“id”命令,却发现拥有了Root级权限。我们甚至可以使用“passwd”命令来修改Root用户的密码,之后就可以以Root用户的身份正常登录Linux了,这样原来,Linux几乎就没有安全性

可言了。    

二、给Grub加密

如何对付Linux这一“危险”的漏洞呢?其实方法很简单,只要给Grub进行加密处理,如果其他人不知道Grub密码的话,就无法任意修改Linux的启动类型了。或者直接把Linux锁定,除非用户知道预设的Grub密码。否则就无法启动Linux。可以按照如下的步骤来修改Grub密码,在Linux环境中执行命令“vi /boot/grub/grub.conf”,打开Grub的配置文件,其中的“timeout=10“项表示默认的等待时间,“title Red Hat Linux”项表示在Grub显示的标题,“root (hd0,0)”项表示启动Linux,“kemel /vmlinuz-2.4.20-8 ro root=LABEL=/”项表示以何种方式启动,也就是上述修改的自定义配置等级,“initrd/initrd-2.4.20-8.img”项表示以img方式启动等。我们可以将Grub的加密信息存放到该配置文件中。如果直接以明码加密的话,别人还是有可能得到Grub密码的。为此,可以使用MD5算法来进行加密操作。在Linux中执行命令“grub-md5-crypt”,在出现的“Password”和“Retype password”中输入需要处理的密码,例如输人"hello???123456”等。之后就可以得到经过MD5加密算法处理过的密钥了。在上述Grub配置文件中的“default=0”上面另起一行,在其中输入“password -md5加密后的密钥”即可,其中“加密后的密钥”指上述经过MD5加密算法处理过的密钥。如果需要进一步提高安全性,可以将Grub配置文件中的“root (hd0,0)”行修改为“lockroot (hd0.0)”即可,之后保存该配置文件。然后重新启动电脑,在Grub引导界面选择启动Linux,或者等待10秒钟,就会出现Linux被锁定的提示,这样别人不知道Grub密码的话,是无法进入Linux环境中的,您可以在Grub引导界面中点击“P”键,之后按照提示输入预设密码,如本例中的“hello???123456”,注意不是加密过的MD5密码。之后即可以任何模式来启动Linux了。

本文为网络安全技术研究记录,文中技术研究环境为本地搭建或经过目标主体授权测试研究,内容已去除关键敏感信息和代码,以防止被恶意利用。文章内提及的漏洞均已修复,在挖掘、提交相关漏洞的过程中,应严格遵守相关法律法规。