1. 程式人生 > >Centos 系統引導損壞修復、密碼破解與加密

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

syn 作用 skip 技術分享 stage1.5 進行 字符串 clas 責任

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 系統引導損壞修復、密碼破解與加密