CentOS 7でシングルユーザーモードをパスワードで保護する方法


以前の記事の1つでは、CentOS 7でシングルユーザーモードで起動する方法について説明しました。これは「メンテナンスモード」としても知られています。 1人のユーザー(通常はスーパーユーザー)が、 fsck を使用して破損したファイルシステムを修復するなどの特定の管理作業を行います。

シングルユーザーモードでは、システムはシングルユーザーシェルを実行します。ここではログイン資格情報(ユーザー名とパスワード)なしでコマンドを実行できます。

これは侵入者にシェルへの直接アクセス(およびファイルシステム全体への可能なアクセス)を与えるので、非常に大きなセキュリティホールです。そのため、次に説明するように、 CentOS 7 でシングルユーザーモードをパスワードで保護することが重要です。

CentOS/RHEL 7 では、レスキュー緊急ターゲット(これもシングルユーザーモードです)はパスワードです。デフォルトで保護されています。

たとえば、 systemd を介して target ランレベル)を rescue.target に変更しようとした場合(<もあります) > emergency.target )をクリックすると、次のスクリーンショットに示すようにrootパスワードの入力が求められます。

# systemctl isolate rescue.target
OR
# systemctl isolate emergency.target

ただし、侵入者がサーバーに物理的にアクセスできる場合は、 e キーを押して最初の起動オプションを編集することで、grubメニュー項目から起動するカーネルを選択できます。

“ linux16“ で始まるカーネル行で、引数 ro “ rw init =/sysroot/bin/sh”に変更できます。 SINGLE =/sbin/sushell CentOS 7 でシングルユーザーモードで起動します。 > /etc/sysconfig/init ファイル内のSINGLE =/sbin/sulogin

そのため、 CentOS 7 でシングルユーザーモードをパスワードで保護する唯一の方法は、次の手順に従ってGRUBをパスワードで保護することです。

CentOS 7でGrubをパスワードで保護する方法

まず、 grub2-setpassword ユーティリティを使用して強力な暗号化パスワードを作成します。

# grub2-setpassword

パスワードのハッシュ/boot/grub2/user.cfg に保存されます。ユーザー、つまり "root" /boot/grub2/grub.cfg ファイルに定義されている場合は、図のようにcatコマンドを使用してパスワードを表示できます。

# cat /boot/grub2/user.cfg

/boot/grub2/grub.cfg ファイルを開き、パスワードで保護するブートエントリを探します。 menuentry で始まります。エントリが見つかったら、 --unrestricted パラメータを削除します。

ファイルを保存して閉じます。CentOS7システムを再起動し、 e キーを押して起動エントリを変更します。図のように資格情報を入力するように求められます。

それでおしまい。 CentOS 7 GRUBメニューを正常にパスワード保護しました。