Linux---密碼重置與防範


複製代碼

[root@xiaoluo ~]# cat /etc/inittab
# inittab is only used by upstart for the default runlevel.
#
# ADDING OTHER CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.
#
# System initialization is started by /etc/init/rcS.conf
#
# Individual runlevels are started by /etc/init/rc.conf
#
# Ctrl-Alt-Delete is handled by /etc/init/control-alt-delete.conf
#
# Terminal gettys are handled by /etc/init/tty.conf and /etc/init/serial.conf,
# with configuration in /etc/sysconfig/init.
#
# For information on how to write upstart event handlers, or how
# upstart works, see init(5), init(8), and initctl(8).
#
# Default runlevel. The runlevels used are:
#   0 - halt (Do NOT set initdefault to this)
#   1 - Single user mode
#   2 - Multiuser, without NFS (The same as 3, if you do not have networking)
#   3 - Full multiuser mode
#   4 - unused
#   5 - X11
#   6 - reboot (Do NOT set initdefault to this)
# 
id:5:initdefault:

複製代碼

這裏我們看到系統的默認啓動級別是5,也就是有圖形界面的那個。

但是在現實生活中可能會出現這種問題,我們可能忘記了一臺主機的root密碼,但是我們又需要通過root用戶登錄該系統去處理一些事情,這個時候我們怎麼辦呢?我們看到在Linux的啓動級別中有一個單用戶模式啓動,也就是啓動級別1,當我們如果忘記了root用戶的祕密,但是又需要修改root密碼的時候,這個時候我們就要通過在啓動的時候給系統的內核傳遞一個參數 1 或者 single 來告訴內核,我需要以單用戶模式登陸操作系統,這個時候我們就能能夠通過passwd 命令來重設root用戶的密碼。具體操作是怎樣的呢?咱們有圖有有真像!!

首先我們重啓我們的系統(我這裏是CentOS),然後在界面啓動時讓它停留一下,隨便按一下鍵盤上的一個鍵,此時就會進入到操作系統配置引導界面

 

還記得上一篇隨筆裏面/boot/grub/grub.conf這個文件裏的第一個 title 字段嗎? 沒錯,每一個title都是一個操作系統的配置選項,這裏我們只有一個,也就是上面圖片顯示的那個,如果有多個title字段,這裏就會列出來供我們選擇不同的操作系統。

好了,通過下面的英文提示我們發現按下鍵盤上的 e 鍵就可以進入到編輯界面

 

看到這個界面是不是很熟悉呢?沒錯,這三個選項就是我們 /boot/grub/grub.conf 文件裏的配置信息,我們通過查看這個文件的內容來看一下:

複製代碼

[root@xiaoluo ~]# cat /boot/grub/grub.conf
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file# NOTICE:  You do not have a /boot partition.  This means that
#          all kernel and initrd paths are relative to /, eg.
#          root (hd0,1)
#          kernel /boot/vmlinuz-version ro root=/dev/sda2
#          initrd /boot/initrd-[generic-]version.img
#boot=/dev/sdadefault=0timeout=5splashp_w_picpath=(hd0,1)/boot/grub/splash.xpm.gzhiddenmenutitle CentOS (2.6.32-358.el6.x86_64)        root (hd0,1)        kernel /boot/vmlinuz-2.6.32-358.el6.x86_64 ro root=UUID=6e24ec7a-2d19-466e-bacc-92750b1f4bef rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet        initrd /boot/initramfs-2.6.32-358.el6.x86_64.img

複製代碼

這時我們需要將光標移動到第二個選項,也就是Linux內核那裏,同樣按下鍵盤上的 e 鍵進入到編輯界面,此時我們在後面追加參數 1 或者參數 single就可以告訴Linux系統的內核,我需要以單用戶的模式登陸該系統。

然後我們回車,進入到上層的界面,此時按下鍵盤上的 b 鍵就是啓動操作系統,此時我們的Linux操作系統就是以單用戶的模式登陸了。我們發現系統非常快速的就進入到了命令行模式下的界面,因爲單用戶模式是不會啓動任何服務的,同時也不需要輸入root密碼,就能直接進入到root用戶下,此時我們就可以通過passwd 命令來重置我們的root用戶的密碼

 

然後我們通過exit命令就可以退出單用戶模式,此時操作系統內核就會根據我們之前看到的 /etc/inittab 配置文件中設置的默認啓動級別來啓動。

這樣我們就可以通過在進入GRUB引導時在內核參數裏面追加參數 1 或者 single 來進入單用戶模式來修改我們的root用戶密碼。

但是,請注意,因爲上面的操作只需要通過單用戶模式就可以修改我們的root用戶密碼,所以說一旦別人有機會接觸到我們的服務器主機,那麼root用戶的密碼就很容易被別人修改了,這樣當然是非常的不安全的,所以我們還是需要通過GRUB加密來對開啓一層密碼防護。

通過在 /boot/grub/grub.conf 啓動配置中加入以下類似的代碼來對grub進行加密:

password --md5 $1$6H92B1$PzoPV63kTMk4uEhZQTAZ//

其中後面那一串是MD5加密算法,這個我們可以通過 grub-md5-crypt 這個命令來生成加密後的算法

[root@xiaoluo ~]# grub-md5-crypt 
Password: 
Retype password: 
$1$UGA2B1$DriIdrVTEgVg95fHHX4H./[root@xiaoluo ~]#

在上面的Password、Retype password那裏輸入我們需要設置的密碼,然後就能生成MD5算法加密後的密碼,我們將這個加密後的密碼添加到

/boot/grub/grub.conf 這個配置文件裏即可,例如:

複製代碼

[root@xiaoluo ~]# vi /boot/grub/grub.conf password --md5 $1$UGA2B1$DriIdrVTEgVg95fHHX4H./# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file# NOTICE:  You do not have a /boot partition.  This means that
#          all kernel and initrd paths are relative to /, eg.
#          root (hd0,1)
#          kernel /boot/vmlinuz-version ro root=/dev/sda2
#          initrd /boot/initrd-[generic-]version.img
#boot=/dev/sda
default=0timeout=5splashp_w_picpath=(hd0,1)/boot/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.32-358.el6.x86_64)
        root (hd0,1)
        kernel /boot/vmlinuz-2.6.32-358.el6.x86_64 ro root=UUID=6e24ec7a-2d19-466e-bacc-92750b1f4bef rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet
        initrd /boot/initramfs-2.6.32-358.el6.x86_64.img

複製代碼

這個時候我們再次重啓一下系統,試着進入到GRUB裏面來看看,

0

我們發現下面的英文提示已經變了,之前可以按鍵盤上的 e 鍵進入到GRUB裏面,現在按 e 鍵已經沒用了,此時提示我們按 p 鍵來輸入GRUB的密碼才能進入到GRUB裏面

 

此時我們輸入之前設置的GRUB密碼即可,然後界面就會進入到我們熟悉的修改GRUB那裏了。

所以說通過GRUB的加密算法我們可以對進入GRUB進行加密,這樣就能防止別人惡意進入單用戶模式,從而修改root密碼了!!

當然,如果我們連這個GRUB的祕密都忘記的話,並且又忘記了root密碼,那就真的不能登陸到root用戶了。。。。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章