天天看點

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檔案丢失或損壞時,系統啟動時表現為

修複如下:

進入救援模式,重新生成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丢失

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

4.重新開機系統

核心檔案被破壞

2.touch 一個檔案 /boot檢查磁盤是可寫,如果為隻讀,mount -o remount,rw /dev/sdX /boot

3.如果挂載的救援模式是原ISO的DVD1的話,裡面會有核心檔案,如果沒有DVD1CD光牒,請去其他地方下載下傳同一核心版本的rpm包。

執行安裝指令

# rpm -ivh /CD光牒位置或指定位置/Packages/kernel-2.6.32-696.el6.x86_64.rpm --force

/sbin/init 丢失破壞

# rm -rf /sbin/init

此時輸入什麼都是報錯誤的

1.重新開機系統至引導菜單,注意按上下箭頭,以免逾時跳過去。按 e

2 在kernel一行中,按 e 編輯

使用 /bin/bash 代替sbin/init

按 b 啟動系統

任意輸入一條指令,如果能出來結果,表示 系統啟用/bin/bash為第一個程序

3. 重新挂載 / 分區為 讀寫模式

#mount -o remount,rw /

4 挂載CD光牒

# 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 挂載CD光牒

# 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> 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

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

# rm -rf /boot

Centos 系統引導損壞修複、密碼破解與加密
Centos 系統引導損壞修複、密碼破解與加密
Centos 系統引導損壞修複、密碼破解與加密

系統發現根系統

Centos 系統引導損壞修複、密碼破解與加密

2. 切換至待修複的根系統

Centos 系統引導損壞修複、密碼破解與加密

檢視到/dev/sda确實沒有MBR資訊

Centos 系統引導損壞修複、密碼破解與加密

3.修複Grub

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

Centos 系統引導損壞修複、密碼破解與加密

4.安裝核心

挂載CD光牒

如果挂載的救援模式是原ISO的DVD1的話,裡面會有核心檔案,如果沒有DVD1CD光牒,請去其他地方下載下傳同一核心版本的rpm包。

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

Centos 系統引導損壞修複、密碼破解與加密

5.生成gurb配置檔案

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

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

Centos 系統引導損壞修複、密碼破解與加密

6.儲存并重新開機

# exit

#sync

#reboot

Centos 7修複與Centos 6相差不大,隻是使用的指令有些不同。

本文轉自 ljpwinxp 51CTO部落格,原文連結:http://blog.51cto.com/191226139/2058884

繼續閱讀