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

简介:

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文件丢失或损坏时,系统启动时表现为

1.png

修复如下:

进入救援模式,重新生成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是以二进制存放于磁盘,并不是文件形式。

1.png


/boot/grub下的文件为:

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


stage1破坏修复


stage1也就是bootloader所在,

模拟破坏(请不拿生产中的机器来做试验,本人不负责任)

#dd if=/dev/zero of=/dev/sda bs=1 count=446

系统启动时表现为

1.png


修复如下:

1.进入救援模式

2.启动一个shell

1.png

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之外的文件

1.png

方法(2) grub

grub> root (hd#,#)

grub> setup (hd#)  

可以看到系统已经写入GRUB信息至MBR

1.png


第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键补全,会有如下显示

1.png

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

1.png

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

1.png

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



stage1.5破坏修复

模拟破坏

# dd if=/dev/zero of=/dev/sda bs=1 count=13000 skip=512 seek=512

系统启动时表现为

1.png


修复如下:

进入救援模式

1.# chroot /mnt/sysimage

2.安装grub (上面有方法)

3.多输入几次sync

4.#exit并reboot



stage2破坏修复


grub.conf丢失

系统启动时表现为

1.png


修复如下:

进入救援模式

1.# chroot /mnt/sysimage

2.安装grub (上面有方法)

3.检查/boot/grub/grub.conf是否存在且正确

1.png

4.重启系统



内核文件被破坏

系统启动时表现为

1.png


修复如下:

进入救援模式

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

1.png

4.重启系统



/sbin/init 丢失破坏

模拟破坏

# rm -rf /sbin/init

系统启动时表现为

1.png

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


修复如下:

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

1.png

2 在kernel一行中,按 e 编辑

1.png

使用 /bin/bash 代替sbin/init

1.png

按 b 启动系统

1.png

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

1.png

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/

1.png

6. # ls /sbin/init 是否已经生成。

7.直接按硬件按钮的重启

至此,修复完成



逻辑卷环境下 /boot分区破坏,/etc/fstab丢失

原先的系统是以LVM卷方式安装的

1.png

模拟破坏

# rm -rf /boot/ /etc/fstab

系统启动时表现为

1.png


修复如下:

进入救援模式

会提示

1.png

启动shell

1.png

1.#vgs 查看下VG卷

1.png

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

1.png

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

1.png

4 .# vgchange -ay 激活VG卷

1.png

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

1.png

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

1.png

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

# mkdir /mnt/root

# mount /dev/VolGroup/lv_root /mnt/root

1.png

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

# mount /dev/sda1 /mnt/boot

1.png

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

1.png

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

1.png

10 #exit 选reboot

1.png

11.再次进入救援模式

现在救援模式能侦测到根系统了

1.png

按照向导开启shell

12 # chroot /mnt/sysimage

#lsblk 可以看出原有系统的挂载情况了

1.png

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

1.png

15 修复Grub

# grub-install /dev/sda

1.png

16 修复grub.conf

# vi /boot/grub/grub.conf   ,可以使用vi的命令这些功能

列出命令结果到当前编辑行的下一行,支持TAB补全

1.png

列出设备的UUID

1.png

最终写好的文件如下

1.png

#exit 重启

1.png

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

1.png

第二次重新启动时,系统就正常了。之后再把把

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.重启系统至引导菜单,注意按上下箭头,以免超时跳过去。

1.png

按 a ,健入以下字符,1代表是单用户模式

1, s, S或single都可以,之后直接回车启动系统

1.png

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


方法2:

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


方法3:

进入救援模式,chroot /mnt/sysimage 之后,直接修改/etc/shadow ,把root的密码栏位清空。需要vi时加入wq!

不过,重启后注意尽快修改密码

1.png



grub加密

当然,既然有破解密码的,也有相应加强安全的.

将下面一行放入不同位置将会有不同的效果

password [--md5|--encrypted ] 加密的字符串

放在每个title之前行 : 启动grub菜单时进行进行认证

放在每个title之末尾行 : 启动选定的内核或操作系统时进行认证

1.png

生成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.进入救援模式

1.png

1.png

1.png

系统发现根系统

1.png

2. 切换至待修复的根系统

# chroot /mnt/sysimage

1.png

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

1.png

3.修复Grub

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

1.png

4.安装内核

挂载光盘

# mount /dev/sr0 /mnt

如果挂载的救援模式是原ISO的DVD1的话,里面会有内核文件,如果没有DVD1光盘,请去其他地方下载同一内核版本的rpm包。

执行安装指令

# rpm -ivh /光盘位置或指定位置/Packages/kernel-3.10.0-693.el7.x86_64.rpm --force

1.png

5.生成gurb配置文件

注意这一步不能和第4步颠倒

# grub2-mkconfig -o /boot/grub2/grub.cfg

1.png

6.保存并重启

# exit

#sync

#sync

#reboot


至此,系统修复完成。


Centos 7修复与Centos 6相差不大,只是使用的命令有些不同。



本文转自 ljpwinxp 51CTO博客,原文链接:http://blog.51cto.com/191226139/2058884

相关文章
|
存储 NoSQL 数据库
认证服务---整合短信验证码,用户注册和登录 ,密码采用MD5加密存储 【二】
这篇文章讲述了在分布式微服务系统中添加用户注册和登录功能的过程,重点介绍了用户注册时通过远程服务调用第三方服务获取短信验证码、使用Redis进行验证码校验、对密码进行MD5加密后存储到数据库,以及用户登录时的远程服务调用和密码匹配校验的实现细节。
认证服务---整合短信验证码,用户注册和登录 ,密码采用MD5加密存储 【二】
|
关系型数据库 MySQL Linux
CentOS 7系统下详细安装MySQL 5.7的步骤:包括密码配置、字符集配置、远程连接配置
以上就是在CentOS 7系统下安装MySQL 5.7的详细步骤。希望这个指南能帮助你顺利完成安装。
3545 26
|
Linux
CentOS分区表损坏修复方法
以上就是CentOS分区表损坏的修复方法,无论你是选择轻装使用fdisk,还是深度潜行使用TestDisk,都能找到照亮分区的灯塔,走出困境。恩,随风者无畏,享受这个过程,你会发现其乐无穷。
642 19
|
存储 缓存 Java
java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡
java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡
2789 3
java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡
|
安全 Linux 网络安全
CentOS 8下SSH连接超时与“无法加载主机密钥”错误的排查与修复
在CentOS 8系统中,宝塔面板提示“出错了,面板运行时发生错误”,导致插件无法正常显示。同时,SSH连接超时,修复面板功能失效。通过VNC连接排查,发现SSH服务安装和配置问题频发,最终通过重装SSH、调整权限并重新生成主机密钥文件解决问题,成功恢复SSH连接。
1472 16
|
存储 Java 数据库
密码专辑:对密码加盐加密,对密码进行md5加密,封装成密码工具类
这篇文章介绍了如何在Java中通过加盐和加密算法(如MD5和SHA)安全地存储密码,并提供了一个密码工具类PasswordUtils和密码编码类PasswordEncoder的实现示例。
663 10
密码专辑:对密码加盐加密,对密码进行md5加密,封装成密码工具类
|
数据安全/隐私保护 Python
Zipfile学习笔记(二)::通过zipfile模块暴力破解加密的压缩文件
如何使用Python的zipfile模块生成密码表并尝试暴力破解加密的ZIP压缩文件。
642 1
Zipfile学习笔记(二)::通过zipfile模块暴力破解加密的压缩文件
|
NoSQL Java Redis
shiro学习四:使用springboot整合shiro,正常的企业级后端开发shiro认证鉴权流程。使用redis做token的过滤。md5做密码的加密。
这篇文章介绍了如何使用Spring Boot整合Apache Shiro框架进行后端开发,包括认证和授权流程,并使用Redis存储Token以及MD5加密用户密码。
626 0
shiro学习四:使用springboot整合shiro,正常的企业级后端开发shiro认证鉴权流程。使用redis做token的过滤。md5做密码的加密。
|
安全 算法 Java
数据库信息/密码加盐加密 —— Java代码手写+集成两种方式,手把手教学!保证能用!
本文提供了在数据库中对密码等敏感信息进行加盐加密的详细教程,包括手写MD5加密算法和使用Spring Security的BCryptPasswordEncoder进行加密,并强调了使用BCryptPasswordEncoder时需要注意的Spring Security配置问题。
1676 0
数据库信息/密码加盐加密 —— Java代码手写+集成两种方式,手把手教学!保证能用!
|
存储 安全 算法
RSA在手,安全我有!Python加密解密技术,让你的数据密码坚不可摧
【9月更文挑战第11天】在数字化时代,信息安全至关重要。传统的加密方法已难以应对日益复杂的网络攻击。RSA加密算法凭借其强大的安全性和广泛的应用场景,成为保护敏感数据的首选。本文介绍RSA的基本原理及在Python中的实现方法,并探讨其优势与挑战。通过使用PyCryptodome库,我们展示了RSA加密解密的完整流程,帮助读者理解如何利用RSA为数据提供安全保障。
847 5