Linux
CentOS
grub
セキュリティ
centos7

CentOS7.2以降のブートローダーパスワード設定方法

前置き

CentOS7からブートローダーのパスワード設定方法が変わったのでメモ

実施環境はCentOS7.3、パーティションはMBRです。
EFIだとディレクトリの一部が異なる可能性があります。

以前のブートローダーのパスワード設定方法

CentOS6ではgrub-md5-cryptコマンドでブートローダーのパスワード設定をしていましたが、CentOS7では無くなった模様。

[root@hostname]# which grub-md5-crypt
/usr/bin/which: no grub-md5-crypt in
 (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin)
[root@hostname]#

yumで検索しても無し

[root@hostname]# yum provides grub-md5-crypt
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
 * base: ftp.yz.yamagata-u.ac.jp
 * extras: mirror.qoxy.com
 * updates: mirror.0x.sg
No matches found
[root@hostname]#

調べたところ、CentOS7.2以降ではブートローダーのパスワード設定はgrub2-setpasswordコマンドを使用するようです。

CentOS7.2以降のブートローダーのパスワード設定方法

grub2-setpasswordはパスワードのハッシュ値を含むuser.cfgを生成するコマンドです。
実行すると設定するパスワードを二回聞かれるので、それぞれ同じパスワードを入力します。

[root@hostname]# grub2-setpassword
Enter password:
Confirm password:
[root@hostname]#

/boot/grub2/にパスワードのハッシュ値を含んだuser.cfgが生成されます。

[root@hostname]# ls -l /boot/grub2/user.cfg
-rw-------. 1 root root 298  7月 10 22:08 /boot/grub2/user.cfg
[root@hostname]#
[root@hostname]# cat /boot/grub2/user.cfg
GRUB2_PASSWORD=grub.pbkdf2.sha512.10000.D6FC85B1A45126E6A679CC412DA00243F5B26E6
BA8E2817A35FED4C1E00B27F051668A9A6DC27E54360381F0DA302CB775C2565D148EA8B6E55FFA
BDECEBF10C.B210A279E2A0655C984F3C28BB83B5E266A67F3B8E0C7C5B77D6CAA74FBEA9C7C9C7
A3554F8752E3DFD571855118FD6CE3263FDC908E4BD8AC048252E8A73284
[root@hostname]#

これでブートローダー起動時にブートエントリーを修正しようとするとIDとパスワードを求められるようになります。
以前のようにgrub.cfgを再作成する必要は無くなりました。
image.png

'e'キーでブートエントリーの修正モードに入ろうとすると、IDとパスワード入力を求められます。
image.png

補足

ブートエントリーの修正時のみではなく、通常のブート時にもパスワードを確認するようにするには以下の対応が必要となります。
※パスワードを忘れるとOSの起動ができなくなるので、設定する場合は慎重に実施してください!

grub.cfgを開き、パスワードで保護する必要があるブートエントリを検索する。
「--unrestricted」パラメータを削除する。

menuentry 'CentOS Linux (3.10.0-514.el7.x86_64) 7 (Core)' --class centos --
class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 
'gnulinux-3.10.0-514.el7.x86_64-advanced-cbe73024-c98b-4644-8dc5-c8ed40b80d2f' 
{
        load_video
        set gfxpayload=keep

なお、grub.cfgをgrub2-mkconfigで再生成した場合は「--unrestricted」パラメータが復活する為、通常ブート時のパスワード保護も消えます。
その場合、再度上記手順を実施する必要があります。

以上