您的位置:首页 > 运维架构 > Linux

Centos 系统引导损坏修复、密码破解与加密

2018-01-09 00:39 519 查看
Centos 6

实验环境:VMware Workstation Pro 14(试用版)
系统平台:
CentOS release 6.9 (Final) 内核 2.6.32-696.el6.x86_64

ramdisk(ramfs)丢失损坏
 内核中的特性之一:使用缓冲和缓存来加速对磁盘上的文件访问,并加载相应的硬件驱动
没有此文件,系统无法加载 / 分区,也就无法启动系统。
CentOS 5 文件名: initrd
CentOS 6,7文件名: initramfs

当系统的ramfs文件丢失或损坏时,系统启动时表现为





修复如下:
进入救援模式,重新生成ramdisk文件即可。
为当前正在使用的内核重新制作ramdisk文件,以下2种指令都可以。
# mkinitrd initramfs-`uname -r`.img `uname -r`
# dracut initramfs-`uname -r`.img `uname -r`

GRUB相关
 MBR:
446: bootloader, 64: 分区表, 2: 55AA
 GRUB:
阶段
存放位置
作用
stage1
MBR的446字节内
MBR引导
stage1_5
MBR之后的27个扇区
让stage1中的bootloader能识别stage2所在的分区上的文件系统,这个阶段可以加载驱动
stage2
/boot/grub(grub2)
grub的核心功能
stage1是以二进制存放于磁盘,并不是文件形式。





/boot/grub下的文件为:
主要是驱动与grub配置文件。这个目录下的文件只保留grub.conf的时候,系统是可以正常启动的

stage1破坏修复

stage1也就是bootloader所在,
模拟破坏(请不拿生产中的机器来做试验,本人不负责任)
#dd if=/dev/zero of=/dev/sda bs=1 count=446
系统启动时表现为





修复如下:
1.进入救援模式
2.启动一个shell





3.切换至原系统的根目录,一般救援模式进来的时候会提醒.(假如能找到/文件系统)
# chroot /mnt/sysimage
4.安装grub
方法(1) grub-install
安装grub stage1和stage1_5到/dev/DISK磁盘上,并复制GRUB相关文件到 DIR/boot目录下
grub-install /dev/DISK .注意,是磁盘而非分区。--root-directory=DIR 参数可选
此方法会一并重新生成/boot/grub下除了grub.conf之外的文件





方法(2) grub
grub> root (hd#,#)
grub> setup (hd#)
可以看到系统已经写入GRUB信息至MBR





第2种方法修复时,需要/boot/grub下有这些文件
# ls -1
device.map e2fs_stage1_5 fat_stage1_5 ffs_stage1_5 grub.conf iso9660_stage1_5 jfs_stage1_5
menu.lst minix_stage1_5 reiserfs_stage1_5 splash.xpm.gz stage1 stage2 ufs2_stage1_5
vstafs_stage1_5 xfs_stage1_5
5.重启系统
#exit 并reboot

开机直接出现grub>

修复如下:
grub> root (hd#,#) root目录指的是/boot分区所在的磁盘位置。
grub> setup (hd#)
小提示:root (hd0,然后按tab键补全,会有如下显示





输入kernel /vm 按tab键如果可以补全则说明是正确的,接着输入ro root=/dev/sda1 回车.注意(hd0,0)=/dev/sda1 (hd0,1)=/dev/sda2如图





接着输入initrd /ini 按tab键补全,回车





输入boot命令,这时系统会重新启动

stage1.5破坏修复
模拟破坏
# dd if=/dev/zero of=/dev/sda bs=1 count=13000 skip=512 seek=512
系统启动时表现为





修复如下:
进入救援模式
1.# chroot /mnt/sysimage
2.安装grub (上面有方法)
3.多输入几次sync
4.#exit并reboot

stage2破坏修复

grub.conf丢失
系统启动时表现为





修复如下:
进入救援模式
1.# chroot /mnt/sysimage
2.安装grub (上面有方法)
3.检查/boot/grub/grub.conf是否存在且正确





4.重启系统

内核文件被破坏
系统启动时表现为





修复如下:
进入救援模式
1.# chroot /mnt/sysimage
2.touch 一个文件 /boot检查磁盘是可写,如果为只读,mount -o remount,rw /dev/sdX /boot
3.如果挂载的救援模式是原ISO的DVD1的话,里面会有内核文件,如果没有DVD1光盘,请去其他地方下载同一内核版本的rpm包。
执行安装指令
# rpm -ivh /光盘位置或指定位置/Packages/kernel-2.6.32-696.el6.x86_64.rpm --force





4.重启系统

/sbin/init 丢失破坏
模拟破坏
# rm -rf /sbin/init
系统启动时表现为





此时输入什么都是报错误的

修复如下:
1.重启系统至引导菜单,注意按上下箭头,以免超时跳过去。按 e





2 在kernel一行中,按 e 编辑





使用 /bin/bash 代替sbin/init





按 b 启动系统





任意输入一条命令,如果能出来结果,表示 系统启用/bin/bash为第一个进程





3. 重新挂载 / 分区为 读写模式
#mount -o remount,rw /
4 挂载光盘
# mount /dev/sr0 /mnt
5.重新安装/sbin/init 。此执行文件对应的安装为upstart 各个操作系统版本不一样,注意即可。
# rpm -ivh /mnt/Packages/upstart-0.6.5-16.el6.x86_64.rpm --force
使用以下方法也能达到同样效果:
# rpm2cpio /mnt/Packages/upstart-0.6.5-16.el6.x86_64.rpm | cpio -idv ./sbin/init
# cp sbin/init /sbin/





6. # ls /sbin/init 是否已经生成。
7.直接按硬件按钮的重启吧
至此,修复完成

逻辑卷环境下 /boot分区破坏,/etc/fstab丢失
原先的系统是以LVM卷方式安装的





模拟破坏
# rm -rf /boot/ /etc/fstab
系统启动时表现为





修复如下:
进入救援模式
会提示





启动shell





1.#vgs 查看下VG卷





2. #fdisk -l找出原来系统的boot分区,带*号启动的应该是/boot





3.#lvdisplay查看LV卷状态,可以看到是未激活状态





4 .# vgchange -ay 激活VG卷





5 #lvdisplay查看LV卷状态,可以看到是已激活状态





6 #blkid 能看到分区文件系统和挂载路径和UUID





7.创建临时目录挂载找到的分区,确认/和/boot分区。注意,这里是支持TAB键补全的。
# mkdir /mnt/root
# mount /dev/VolGroup/lv_root /mnt/root





# mkdir /mnt/boot 正常情况,因为是使用rm -rf /boot 挂载时应该是没有任何文件的
# mount /dev/sda1 /mnt/boot





8 cat /etc/mtab 能看到目前挂载情况





9 创建原有系统的fstab ,注意这里生成的文件位置
#cat > /mnt/root/etc/fstab << eof
/dev/mapper/VolGroup-lv_root / ext4 defaults 0 0
/dev/sda1 /boot ext4 defaults 0 0
eof





10 #exit 选reboot





11.再次进入救援模式
现在救援模式能侦测到根系统了





按照向导开启shell
12 # chroot /mnt/sysimage
#lsblk 可以看出原有系统的挂载情况了





13 挂载光盘
# mkdir /mnt/cdrom
# mount /dev/cdrom /mnt/cdrom
14 安装内核
# rpm -ivh /mnt/cdrom/Packages/kernel-2.6.32-696.el6.x86_64.rpm --force





15 修复Grub
# grub-install /dev/sda





16 修复grub.conf
# vi /boot/grub/grub.conf ,可以使用vi的命令这些功能
列出命令结果到当前编辑行的下一行,支持TAB补全





列出设备的UUID





最终写好的文件如下





#exit 重启





如果启用了selinux的话,系统会在第一次重启时进行配置、





第二次重新启动时,系统就正常了。之后再把把
17 把swap添加到fstab,并启用
UUID=8e0a6121-97d7-4c70-b113-bbe4cefe0380 swap swap defaults 0 0
# swapon -a
建议把fstab文件重新修正为使用UUID方式
至此,系统修复完成。

手动在grub命令行接口启动系统
grub> root (hd#,#)
grub> kernel /vmlinuz-VERSION-RELEASE ro
root=/dev/DEVICE
grub> initrd /initramfs-VERSION-RELEASE.img
grub> boot

root密码破解

方法1:
1.重启系统至引导菜单,注意按上下箭头,以免超时跳过去。





按 a ,健入以下字符,1代表是单用户模式
1, s, S或single都可以,之后直接回车启动系统





无需要输入密码就以root身份进入系统了,直接passwd root修改

方法2:
进入救援模式,chroot /mnt/sysimage 之后,直拉用passwd root修改

方法3:
进入救援模式,chroot /mnt/sysimage 之后,直接修改/etc/shadow ,把root的密码栏位清空。需要vi时加入wq!
不过,重启后注意尽快修改密码





grub加密
当然,既然有破解密码的,也有相应加强安全的.
将下面一行放入不同位置将会有不同的效果
password [--md5|--encrypted ] 加密的字符串
放在每个title之前行 : 启动grub菜单时进行进行认证
放在每个title之末尾行 : 启动选定的内核或操作系统时进行认证





生成grub口令
 grub-md5-crypt 对应的是--md5
 grub-crypt 对应的是--encrypted

Centos 7

实验环境:VMware Workstation Pro 14(试用版)系统平台:CentOS Linux release 7.4.1708 (Core) 内核 3.10.0-693.el7.x86_64

模拟破坏(请不拿生产中的机器来做试验,本人不负责任)
模拟stage1 stage1.5 stage2 阶段破坏
# dd if=/dev/zero of=/dev/sda bs=1 count=446
# dd if=/dev/zero of=/dev/sda bs=1 count=13000 skip=512 seek=512
# rm -rf /boot

修复如下:
1.进入救援模式













系统发现根系统





2. 切换至待修复的根系统
# chroot /mnt/sysimage





查看到/dev/sda确实没有MBR信息





3.修复Grub
# grub2-install /dev/sda .注意,是磁盘而非分区





4.安装内核
挂载光盘
# mount /dev/sr0 /mnt
如果挂载的救援模式是原ISO的DVD1的话,里面会有内核文件,如果没有DVD1光盘,请去其他地方下载同一内核版本的rpm包。
执行安装指令
# rpm -ivh /光盘位置或指定位置/Packages/kernel-3.10.0-693.el7.x86_64.rpm --force





5.生成gurb配置文件
注意这一步不能和第4步颠倒
# grub2-mkconfig -o /boot/grub2/grub.cfg





6.保存并重启
# exit
#sync
#sync
#reboot

至此,系统修复完成。

Centos 7修复与Centos 6相差不大,只是使用的命令有些不同。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Centos 系统 引导