あなたが Linux のシステム管理者である場合、IT 部門に物理的にアクセスできる他の人を望んでいないかもしれません。システムの起動時に表示される GRUB ブートローダー メニューから何かを変更してください。
GRUB は、前に説明した Linux ブート プロセスの第 3 段階です。
GRUB セキュリティ機能を使用すると、grub エントリにパスワードを設定できます。パスワードを設定すると、パスワードを入力せずに grub エントリを編集したり、grub コマンドラインから引数をカーネルに渡したりすることはできません。
この記事で説明されているように、重要な本番システムでは GRUB パスワードを設定することを強くお勧めします。
1. grub.conf で grub password コマンドを使用する
GRUB がパスワードで保護されていないシステムでは、システムの起動時に GRUB メニューのすぐ下に次のメッセージが表示されます。
このメッセージからわかるように、サーバーを再起動しているコンソールの前にいる人なら誰でも、grub コマンドを編集したり、カーネル引数を変更したりすることができます。実稼働システムでこれをいじります。
Use the up-arrow and down-arrow keys to select which entry is highlighted. Press enter to boot the selected OS, 'e' to edit the commands before booting, 'a' to modify the kernel arguments before booting, or 'c' for a command-line
/boot/grub/grub.conf には、システムの起動時に GRUB メニューに表示されるエントリに関する情報が含まれています。一部のシステムでは、/etc/grub.conf は /boot/grub/grub.conf へのシンボリック リンクです
次の「パスワード」行を grub.conf ファイルに追加します。
$ cat /etc/grub.conf default=0 timeout=15 password GrbPwd4SysAd$ ..
「password」コマンドを grub.conf に追加すると、システムの起動時に GRUB メニューのすぐ下に次のメッセージが表示されます。
このメッセージからわかるように、grub.conf で指定した GRUB パスワードを入力しないと、誰も grub コマンドを編集したり、カーネル引数を変更したりできません。できることは、表示されたエントリの 1 つを選択して、ここから起動することだけです。
Use the up-arrow and down-arrow keys to select which entry is highlighted. Press enter to boot the selected OS or 'p' to enter a password to unlock the next set of features.
2. grub-crypt を使用して grub パスワードを暗号化します
上記のエントリを読みながら、おそらくあなたはこう思ったでしょう:はい、grub はパスワードで保護されています。しかし、パスワード自体は grub.conf ファイル内の平文であり、目的に反しています。
grub-crypt ユーティリティを使用して、暗号化されたパスワードを作成できます。
grub-crypt は、ユーザーから平文のパスワードを取得し、以下に示すように暗号化されたパスワードを表示します。
# grub-crypt Password: GrbPwd4SysAd$ Retype password: GrbPwd4SysAd$ ^9^32kwzzX./3WISQ0C
grub.conf ファイルを変更し、以下に示すように –encrypted 引数を使用して「password」エントリを追加します。 grub-crypt コマンドの出力をコピーして、パスワード エントリの「–encrypted」引数の後に貼り付けます。
$ cat /etc/grub.conf default=0 timeout=15 password --encrypted ^9^32kwzzX./3WISQ0C ..
デフォルトでは、grub-crypt コマンドは SHA-512 アルゴリズムを使用してパスワードを暗号化します。以下に示すように、SHA-256 または MD5 アルゴリズムを使用してパスワードを暗号化することもできます。
# grub-crypt --sha-256 # grub-crypt --md5
md5crypt を使用してパスワードを暗号化することもできます。その場合、grub.conf ファイルで「password –md5 encrypted-password」を使用する必要があります。
grub.conf ファイルのスクリプト セクション内で「lock」を指定すると、grub は、ユーザーが認証されている場合にのみ、メニュー エントリのそのセクションの残りのコマンドを実行します。
3. Grub メニュー用に別のファイルをロード
デフォルトでは、システム起動時の GRUB メニューのエントリは grub.conf ファイルから取得されます。つまり、grub.conf ファイルの「title」エントリで始まる行に基づいています。
新しいカーネルのいくつかのバリエーションをテストしている場合は、カスタム メニュー エントリを含む別の grub メニュー ファイルを作成することをお勧めします。システムの起動中、デフォルトでは grub.conf のエントリのみが表示されます。ただし、パスワードを入力すると、grub にカスタム メニュー エントリをロードするように指示できます。
これは、grub.conf ファイルで以下に示すように、カスタム メニュー ファイル名を password コマンドに渡すことによって実現されます。
次の例では、システムの起動時にパスワードを入力すると、/etc/mymenu.lst から grub メニュー エントリを読み込んで表示します。
$ cat /etc/grub.conf default=0 timeout=15 password --encrypted ^9^32kwzzX./3WISQ0C /etc/mymenu.lst ..