GRUB Legacyのパスワードについて
引用: http://www.atmarkit.co.jp/flinux/rensai/linuxtips/318grubpasswd.html
前置きっぽいやつ
GRUBに関してはご存知ブートローダの1つ,カーネルイメージを入れ替えたり設定ファイルを表示する機能があるためセキュリティのためにパスワードを設定する,というのが今回の目的.
※ grub2に関しては下記を参照
https://access.redhat.com/documentation/ja-JP/Red_Hat_Enterprise_Linux/7/html/System_Administrators_Guide/sec-GRUB_2_Password_Protection.html
パスワードには平文か暗号化した状態の2通りの方法があり,今回は暗号化したパスワードの方でやる.
1)まずパスワードハッシュ(パスワードをハッシュ化する)の生成
# grub-crypt | tee /tmp/grubpass
Password: <パスワードを入力>
Retype password: <パスワードを入力>
$6$jtYLMBwZZ0lIArqU$MTk1/yh.Fms70qqAtZkAe88aqwXWzGe9oerWJYMAD4e8d.vtX0APsDEsdwO2oQChV6g.u7mix0gPUaecb43t9.
#
# cat /tmp/grubpass
$6$jtYLMBwZZ0lIArqU$MTk1/yh.Fms70qqAtZkAe88aqwXWzGe9oerWJYMAD4e8d.vtX0APsDEsdwO2oQChV6g.u7mix0gPUaecb43t9.
※ grub-cryptでsalt付きのsha512パスワードハッシュが生成できる
それをteeで標準入力を出力とファイルに出力する.
2)作成したパスワードハッシュを/boot/grub/grub.confに追加する.
・まずtitle行の前に"password --encrypted"を書いて同行の末尾にて下記コマンドを実施.
":r /tmp/grubpass"←:rコマンドで生成したハッシュを挿入する
・続いて同業にて:Jコマンドを実施,現在の行と次の行を結合する.
・保存して終わり
最終的に下記のようになる
# grub.conf generated by anaconda
#
(略)
#boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
# title行前に下記を追記する(grubパスワード用)
password --encrypted $6$8Eg5jNMv7/bQqeRs$pNdNajA48q5VSu49vlWt/7mQwsJGaNTs9iZbD8ocpD4F.DUcn4pbWOSw9fByxPgFqL2Pfm0O0TwN3ZauuXAWx.
title CentOS (2.6.32-573.12.1.el6.i686)
root (hd0,0)
kernel /vmlinuz-2.6.32-573.12.1.el6.i686 ro root=UUID=5eaa082d-c438-4332-a48e-1681d41f5734 rd_NO_LUKS LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto KEYBOARDTYPE=pc KEYTABLE=jp106 rd_NO_LVM rd_NO_DM rhgb quiet
initrd /initramfs-2.6.32-573.12.1.el6.i686.img
(略)
3)1で生成したファイルを削除
# rm /tmp/grubpass
4)/boot/grub/grub.confのアクセス権が"-rw-------"となっていることを確認する.
# ls -l /boot/grub/grub.conf
-rw-------. 1 root root 1294 Jan 25 20:46 /boot/grub/grub.conf
※ 違ってたら「# chmod 600 /boot/grub/grub.conf」で変更すること
補足的なあれこれ
・grub-cryptについて
デフォルトはsha-512で生成する.オプションで--sha-256や--md5とか指定できる.
※ opensslコマンドでもハッシュ生成はできるけどMD5しかできないみたいなのでセキュリティ的に弱い.
・MD5とかSHAについて
MD5(Message Digest 5):128bitの値を生成する
SHA1(Secure Hash Algorithm 1):160bitのハッシュ値を生成する
SHA2:SHA-224、SHA-256、SHA-384、SHA-512の総称,それぞれの数値がbit数を表す.
引用元:http://e-words.jp/ の各ページより
・salt
ハッシュ値を計算する前にパスワードの前後に付け加える文字列のこと
→ ざっくり言ってしまえばセキュリティを高めるってことで...
引用元: http://www.atmarkit.co.jp/ait/articles/1110/06/news154_3.html
"暗号化とハッシュ化に関する基本的な事柄まとめ"というありがたいまとめがあるのでこちらも参照のこと
→ http://qiita.com/chroju/items/3ddae568206b8bc3d8f9
grub-cryptというかパスワードハッシュを他にはどんな機会に使う・・・?
→Chefとかのプロビジョニングツールを使う時とかのパスワード指定時とかに
※grub-cryptはSHA2対応だけど元々GRUB Legacyのツールであることに注意.
(GRUB2ならmkpasswd-pbkdf2が存在するとのこと.)
それ以外で作るならMD5だけどopensslかRubyやPythonなどを使用して生成.
その他引用・参考にさせていただいたり,気になったサイト
・パスワードハッシュの作り方
→ http://think-t.hatenablog.com/entry/20140111/p1
・SHA256 と PBKDF2 によるソルト付きパスワードのハッシュ計算方法
→ http://csharp.keicode.com/topics/salt-and-hash-1.php
・パスワードハッシュとユーザー認証
→ http://csharp.keicode.com/topics/password-hashing.php